propagator_m Module

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.



Contents


Interfaces

public interface propagator

  • private pure function propagator_construct_vacuum() result(this)

    Construct a vacuum propagator, i.e. a propagator which satisfies G=0.

    Arguments

    None

    Return Value type(propagator)

    Constructed object

  • private pure function propagator_construct_riccati(g, gt, dg, dgt) result(this)

    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.

    Arguments

    Type IntentOptional AttributesName
    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 ∇γ~

    Return Value type(propagator)

    Constructed object

  • private pure function propagator_construct_bcs(energy, gap) result(this)

    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.

    Arguments

    Type IntentOptional AttributesName
    complex(kind=wp), intent(in) :: energy

    Quasiparticle energy (including inelastic scattering contribution)

    complex(kind=wp), intent(in) :: gap

    Superconducting order parameter (including superconducting phase)

    Return Value type(propagator)

    Constructed object


Derived Types

type, public :: propagator

Components

TypeVisibility AttributesNameInitial
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

Constructor

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.

Type-Bound Procedures

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