propagator Derived Type

type, public :: propagator


Components

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


Constructor

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 Riccati parameters. Unspecified Riccati parameters default to zero due to spin constructors. The distribution function defaults to equilibrium at zero temperature.

    Arguments

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

    Return Value type(propagator)

    Constructed object

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

    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.

    Arguments

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

    Quasiparticle energy

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

    Order parameter

    Return Value type(propagator)

    Constructed object


Type-Bound Procedures

procedure, public :: retarded => propagator_retarded

Retarded propagator Gᴿ

  • private pure function propagator_retarded(this) result(GR)

    Calculates the 4×4 retarded propagator Gᴿ.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this

    Propagator object

    Return Value type(nambu)

    Retarded propagator

procedure, public :: retarded_gradient => propagator_retarded_gradient

Retarded propagator ∇Gᴿ

  • private pure function propagator_retarded_gradient(this, gauge) result(dGR)

    Calculates the 4×4 retarded propagator gradient ∇Gᴿ. If an optional gauge field is specified, it returns the gauge-covariant gradient.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this

    Propagator object

    type(nambu), intent(in), optional :: gauge

    Optional gauge field

    Return Value type(nambu)

    Retarded gradient

procedure, public :: retarded_laplacian => propagator_retarded_laplacian

Retarded propagator ∇²Gᴿ

  • private pure function propagator_retarded_laplacian(this) result(d2GR)

    Calculates the 4×4 retarded propagator gradient ∇²Gᴿ.

    Todo

    : Implement support for gauge-covariant laplacians.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this

    Propagator object

    Return Value type(nambu)

    Retarded laplacian

procedure, public :: advanced => propagator_advanced

Advanced propagator Gᴬ

  • private pure function propagator_advanced(this) result(GA)

    Calculates the 4×4 advanced propagator Gᴬ.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this

    Propagator object

    Return Value type(nambu)

    Advanced propagator

procedure, public :: advanced_gradient => propagator_advanced_gradient

Advanced propagator ∇Gᴬ

  • private pure function propagator_advanced_gradient(this, gauge) result(dGA)

    Calculates the 4×4 advanced propagator gradient ∇Gᴬ. If an optional gauge field is specified, it returns the gauge-covariant gradient.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this

    Propagator object

    type(nambu), intent(in), optional :: gauge

    Optional gauge field

    Return Value type(nambu)

    Advanced gradient

procedure, public :: advanced_laplacian => propagator_advanced_laplacian

Advanced propagator ∇²Gᴬ

  • private pure function propagator_advanced_laplacian(this) result(d2GA)

    Calculates the 4×4 retarded propagator gradient ∇²Gᴬ.

    Todo

    : Implement support for gauge-covariant laplacians.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this

    Propagator object

    Return Value type(nambu)

    Advanced laplacian

procedure, public :: keldysh => propagator_keldysh

Keldysh propagator Gᴷ

  • private pure function propagator_keldysh(this) result(GK)

    Calculates the 4×4 Keldysh propagator Gᴷ.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this

    Propagator object

    Return Value type(nambu)

    Propagator matrix

procedure, public :: keldysh_gradient => propagator_keldysh_gradient

Keldysh propagator ∇Gᴷ

  • private pure function propagator_keldysh_gradient(this, gauge) result(dGK)

    Calculates the 4×4 Keldysh propagator gradient ∇Gᴷ. If an optional gauge field is specified, it returns the gauge-covariant gradient.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this

    Propagator object

    type(nambu), intent(in), optional :: gauge

    Optional gauge field

    Return Value type(nambu)

    Propagator gradient

procedure, public :: distribution => propagator_distribution

Distribution matrix H

  • private pure function propagator_distribution(this) result(H)

    Calculates the 4×4 distribution function matrix H.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this

    Propagator object

    Return Value type(nambu)

    Distribution matrix

procedure, public :: distribution_gradient => propagator_distribution_gradient

Distribution matrix ∇H

  • private pure function propagator_distribution_gradient(this, gauge) result(dH)

    Calculates the 4×4 distribution function gradient ∇H. If an optional gauge field is specified, it returns the gauge-covariant gradient.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this

    Propagator object

    type(nambu), intent(in), optional :: gauge

    Optional gauge field

    Return Value type(nambu)

    Distribution gradient

procedure, public :: dissipation => propagator_dissipation

Dissipation matrix M

  • private pure function propagator_dissipation(this) result(M)

    Calculates the dissipation matrix M = ∂J/∂H', where J is the current and H' is the gradient of the distribution function.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this

    Return Value complex(kind=wp), dimension(0:7, 0:7)

procedure, public :: dissipation_gradient => propagator_dissipation_gradient

Dissipation matrix ∇M

  • private pure function propagator_dissipation_gradient(this) result(dM)

    Calculates the gradient of the dissipation matrix M'.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this

    Return Value complex(kind=wp), dimension(0:7, 0:7)

procedure, public :: condensate => propagator_condensate

Condensate matrix Q

  • private pure function propagator_condensate(this) result(Q)

    Calculates the condensate matrix Q = ∂J/∂H, where J is the current and H is the nonequilibrium distribution function.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this

    Return Value complex(kind=wp), dimension(0:7, 0:7)

procedure, public :: condensate_gradient => propagator_condensate_gradient

Condensate matrix ∇Q

  • private pure function propagator_condensate_gradient(this) result(dQ)

    Calculates the gradient of the condensate matrix Q'.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this

    Return Value complex(kind=wp), dimension(0:7, 0:7)

procedure, public :: selfenergy1 => propagator_selfenergy1

Self-energy matrix R₁

  • private pure function propagator_selfenergy1(this, S) result(R)

    Calculates 1st-order self-energy contribution to the kinetic equations.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this
    type(nambu), intent(in) :: S

    Return Value complex(kind=wp), dimension(0:7, 0:7)

procedure, public :: selfenergy2 => propagator_selfenergy2

Self-energy matrix R₂

  • private pure function propagator_selfenergy2(this, S) result(R)

    Calculates 2nd-order self-energy contribution to the kinetic equations.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this
    type(nambu), intent(in) :: S

    Return Value complex(kind=wp), dimension(0:7, 0:7)

procedure, public :: supercurrent => propagator_supercurrent

Spectral super currents

  • private pure function propagator_supercurrent(this, gauge) result(J)

    Calculates the spectral super currents in the junction. The result is an 8-vector encoding respectively charge, spin, heat, spin-heat currents.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this

    Propagator object

    type(nambu), intent(in), optional :: gauge

    Optional gauge field

    Return Value real(kind=wp), dimension(0:7)

    Spectral supercurrent

procedure, public :: lossycurrent => propagator_lossycurrent

Spectral lossy currents

  • private pure function propagator_lossycurrent(this, gauge) result(J)

    Calculates the spectral lossy currents in the junction. The result is an 8-vector containing charge, spin, heat, and spin-heat currents.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this

    Propagator object

    type(nambu), intent(in), optional :: gauge

    Optional gauge field

    Return Value real(kind=wp), dimension(0:7)

    Spectral lossy current

procedure, public :: accumulation => propagator_accumulation

Spectral accumulations

  • private pure function propagator_accumulation(this) result(Q)

    Calculates the spectral accumulations. The result is an 8-vector containing the charge, spin, heat, and spin-heat accumulations.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this

    Propagator object

    Return Value real(kind=wp), dimension(0:7)

    Spectral accumulation

procedure, public :: correlation => propagator_correlation

Spectral correlations

  • private pure function propagator_correlation(this) result(r)

    Calculates the spectral pair-correlation function. This is useful to self-consistently calculate the superconducting gap in a superconductor.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this

    Propagator object

    Return Value complex(kind=wp)

    Spectral correlation

procedure, public :: density => propagator_density

Local density of states

  • private pure function propagator_density(this) result(D)

    Calculates the spin-resolved local density of states.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(in) :: this

    Return Value real(kind=wp), dimension(0:7)

procedure, public :: save => propagator_save

Export Riccati parameters

  • private elemental subroutine propagator_save(this, other)

    Defines a function for exporting Riccati parameters.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(inout) :: this
    class(propagator), intent(inout) :: other

procedure, public :: load => propagator_load

Import Riccati parameters

  • private elemental subroutine propagator_load(this, other)

    Defines a function for importing Riccati parameters.

    Arguments

    Type IntentOptional Attributes Name
    class(propagator), intent(inout) :: this
    class(propagator), intent(inout) :: other