This module defines a type 'propagator' which represents a propagator (also known as a Green's function) for a given position and energy. The equilibrium parts (i.e. retarded and advanced) are represented via the Riccati parameters γ, γ~ and their derivatives, while the nonequilibrium part (i.e. Keldysh part) is represented by the traces of the distribution function and its derivatives. These are together sufficient to reconstruct the full 8×8 propagator and its derivatives, and can be used to calculate the associated physical quantities such as the density of states, charge currents, spin currents, and so on.
Construct a vacuum propagator, i.e. a propagator which satisfies G=0.
Constructed object
Construct an arbitrary state by explicitly providing Riccati parameters. Unspecified Riccati parameters default to zero due to spin constructors. The distribution function defaults to equilibrium at zero temperature.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(spin), | intent(in) | :: | g |
Riccati parameter γ |
||
type(spin), | intent(in) | :: | gt |
Riccati parameter γ~ |
||
type(spin), | intent(in), | optional | :: | dg |
Riccati parameter ∇γ |
|
type(spin), | intent(in), | optional | :: | dgt |
Riccati parameter ∇γ~ |
Constructed object
Constructs the state of a a BCS superconductor at a given energy, which may have an imaginary term representing inelastic scattering. The second argument 'gap' is used to provide the superconducting order parameter Δ. The distribution function defaults to equilibrium at zero temperature.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=wp), | intent(in) | :: | energy |
Quasiparticle energy |
||
complex(kind=wp), | intent(in) | :: | gap |
Order parameter |
Constructed object
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(spin), | public | :: | g |
Riccati parameter γ |
|||
type(spin), | public | :: | gt |
Riccati parameter γ~ |
|||
type(spin), | public | :: | dg |
Riccati parameter ∇γ |
|||
type(spin), | public | :: | dgt |
Riccati parameter ∇γ~ |
|||
type(spin), | public | :: | d2g |
Riccati parameter ∇²γ |
|||
type(spin), | public | :: | d2gt |
Riccati parameter ∇²γ~ |
|||
type(spin), | public | :: | N |
Riccati normalization N |
|||
type(spin), | public | :: | Nt |
Riccati normalization N~ |
|||
real(kind=wp), | public, | dimension(0:7) | :: | h | = | [1, 0, 0, 0, 0, 0, 0, 0] |
Distribution trace H |
real(kind=wp), | public, | dimension(0:7) | :: | dh | = | [0, 0, 0, 0, 0, 0, 0, 0] |
Distribution trace ∇H |
real(kind=wp), | public, | dimension(0:7) | :: | d2h | = | [0, 0, 0, 0, 0, 0, 0, 0] |
Distribution trace ∇²H |
private pure function propagator_construct_vacuum () | Construct a vacuum propagator, i.e. a propagator which satisfies G=0. |
private pure function propagator_construct_riccati (g, gt, dg, dgt) | Construct an arbitrary state by explicitly providing Riccati parameters. Unspecified Riccati parameters default to zero due to spin constructors. The distribution function defaults to equilibrium at zero temperature. |
private pure function propagator_construct_bcs (energy, gap) | Constructs the state of a a BCS superconductor at a given energy, which may have an imaginary term representing inelastic scattering. The second argument 'gap' is used to provide the superconducting order parameter Δ. The distribution function defaults to equilibrium at zero temperature. |
procedure, public :: retarded => propagator_retarded | ../../ Retarded propagator Gᴿ |
procedure, public :: retarded_gradient => propagator_retarded_gradient | ../../ Retarded propagator ∇Gᴿ |
procedure, public :: retarded_laplacian => propagator_retarded_laplacian | ../../ Retarded propagator ∇²Gᴿ |
procedure, public :: advanced => propagator_advanced | ../../ Advanced propagator Gᴬ |
procedure, public :: advanced_gradient => propagator_advanced_gradient | ../../ Advanced propagator ∇Gᴬ |
procedure, public :: advanced_laplacian => propagator_advanced_laplacian | ../../ Advanced propagator ∇²Gᴬ |
procedure, public :: keldysh => propagator_keldysh | ../../ Keldysh propagator Gᴷ |
procedure, public :: keldysh_gradient => propagator_keldysh_gradient | ../../ Keldysh propagator ∇Gᴷ |
procedure, public :: distribution => propagator_distribution | ../../ Distribution matrix H |
procedure, public :: distribution_gradient => propagator_distribution_gradient | ../../ Distribution matrix ∇H |
procedure, public :: dissipation => propagator_dissipation | ../../ Dissipation matrix M |
procedure, public :: dissipation_gradient => propagator_dissipation_gradient | ../../ Dissipation matrix ∇M |
procedure, public :: condensate => propagator_condensate | ../../ Condensate matrix Q |
procedure, public :: condensate_gradient => propagator_condensate_gradient | ../../ Condensate matrix ∇Q |
procedure, public :: selfenergy1 => propagator_selfenergy1 | ../../ Self-energy matrix R₁ |
procedure, public :: selfenergy2 => propagator_selfenergy2 | ../../ Self-energy matrix R₂ |
procedure, public :: supercurrent => propagator_supercurrent | ../../ Spectral super currents |
procedure, public :: lossycurrent => propagator_lossycurrent | ../../ Spectral lossy currents |
procedure, public :: accumulation => propagator_accumulation | ../../ Spectral accumulations |
procedure, public :: correlation => propagator_correlation | ../../ Spectral correlations |
procedure, public :: density => propagator_density | ../../ Local density of states |
procedure, public :: save => propagator_save | ../../ Export Riccati parameters |
procedure, public :: load => propagator_load | ../../ Import Riccati parameters |