This module defines the data type 'propagator', which represents the propagator at a given position and energy. The equilibrium propagators (retarded and advanced) are stored internally using the Riccati parameters γ and γ~ and their derivatives, while the nonequilibrium propagator (Keldysh) is represented by taking the traces of the distribution function and its derivatives. These quantities are together sufficient to reconstruct the full 8×8 propagator and its derivatives, and can be used to calculate associated physical quantities such as the density of states, charge currents, spin currents, heat currents, spin-heat currents, and various accumulation effects.
Construct a vacuum propagator, i.e. a propagator which satisfies G=0.
Constructed object
Construct an arbitrary state by explicitly providing the Riccati parameters. Unspecified Riccati parameters default to zero due to the 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 a state corresponding to a BCS superconductor at some 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 (including inelastic scattering contribution) |
||
complex(kind=wp), | intent(in) | :: | gap | Superconducting order parameter (including superconducting phase) |
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 the Riccati parameters. Unspecified Riccati parameters default to zero due to the spin constructors. The distribution function defaults to equilibrium at zero temperature. |
private pure function propagator_construct_bcs(energy, gap) | Constructs a state corresponding to a BCS superconductor at some 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^R |
procedure, public :: retarded_gradient => propagator_retarded_gradient | Retarded propagator ∇G^R |
procedure, public :: retarded_laplacian => propagator_retarded_laplacian | Retarded propagator ∇²G^R |
procedure, public :: advanced => propagator_advanced | Advanced propagator G^A |
procedure, public :: advanced_gradient => propagator_advanced_gradient | Advanced propagator ∇G^A |
procedure, public :: advanced_laplacian => propagator_advanced_laplacian | Advanced propagator ∇²G^A |
procedure, public :: keldysh => propagator_keldysh | Keldysh propagator G^K |
procedure, public :: keldysh_gradient => propagator_keldysh_gradient | Keldysh propagator ∇G^K |
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 | Selfenergy matrix R₁ |
procedure, public :: selfenergy2 => propagator_selfenergy2 | Selfenergy matrix R₂ |
procedure, public :: supercurrent => propagator_supercurrent | Spectral supercurrents |
procedure, public :: lossycurrent => propagator_lossycurrent | Spectral dissipative currents |
procedure, public :: accumulation => propagator_accumulation | Spectral accumulations |
procedure, public :: correlation => propagator_correlation | Spectral correlations |
procedure, public :: density => propagator_density | Spin-resolved density of states |
procedure, public :: save => propagator_save | Export Riccati parameters |
procedure, public :: load => propagator_load | Import Riccati parameters |