propagator Derived Type

type, public :: propagator


Contents


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

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


Type-Bound Procedures

procedure, public :: retarded => propagator_retarded

Retarded propagator G^R

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

    Calculates the 4×4 retarded propagator G^R.

    Arguments

    Type IntentOptional AttributesName
    class(propagator), intent(in) :: this

    Propagator object

    Return Value type(nambu)

    Retarded propagator

procedure, public :: retarded_gradient => propagator_retarded_gradient

Retarded propagator ∇G^R

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

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

    Arguments

    Type IntentOptional AttributesName
    class(propagator), intent(in) :: this

    Propagator object

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

    Optional gauge field

    Return Value type(nambu)

    Retarded propagator gradient

procedure, public :: retarded_laplacian => propagator_retarded_laplacian

Retarded propagator ∇²G^R

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

    Calculates the 4×4 retarded propagator gradient ∇²G^R.

    Read more…

    Arguments

    Type IntentOptional AttributesName
    class(propagator), intent(in) :: this

    Propagator object

    Return Value type(nambu)

    Retarded propagator laplacian

procedure, public :: advanced => propagator_advanced

Advanced propagator G^A

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

    Calculates the 4×4 advanced propagator G^A.

    Arguments

    Type IntentOptional AttributesName
    class(propagator), intent(in) :: this

    Propagator object

    Return Value type(nambu)

    Advanced propagator

procedure, public :: advanced_gradient => propagator_advanced_gradient

Advanced propagator ∇G^A

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

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

    Arguments

    Type IntentOptional AttributesName
    class(propagator), intent(in) :: this

    Propagator object

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

    Optional gauge field

    Return Value type(nambu)

    Advanced propagator gradient

procedure, public :: advanced_laplacian => propagator_advanced_laplacian

Advanced propagator ∇²G^A

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

    Calculates the 4×4 retarded propagator gradient ∇²G^A.

    Read more…

    Arguments

    Type IntentOptional AttributesName
    class(propagator), intent(in) :: this

    Propagator object

    Return Value type(nambu)

    Advanced propagator laplacian

procedure, public :: keldysh => propagator_keldysh

Keldysh propagator G^K

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

    Calculates the 4×4 Keldysh propagator G^K.

    Arguments

    Type IntentOptional AttributesName
    class(propagator), intent(in) :: this

    Propagator object

    Return Value type(nambu)

    Propagator matrix

procedure, public :: keldysh_gradient => propagator_keldysh_gradient

Keldysh propagator ∇G^K

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

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

    Arguments

    Type IntentOptional AttributesName
    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 AttributesName
    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 AttributesName
    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)

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

    Arguments

    Type IntentOptional AttributesName
    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)

    Calculate the gradient of the dissipation matrix M'.

    Arguments

    Type IntentOptional AttributesName
    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)

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

    Arguments

    Type IntentOptional AttributesName
    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)

    Calculate the gradient of the condensate matrix Q'.

    Arguments

    Type IntentOptional AttributesName
    class(propagator), intent(in) :: this

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

procedure, public :: selfenergy1 => propagator_selfenergy1

Selfenergy matrix R₁

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

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

    Arguments

    Type IntentOptional AttributesName
    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

Selfenergy matrix R₂

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

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

    Arguments

    Type IntentOptional AttributesName
    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 supercurrents

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

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

    Arguments

    Type IntentOptional AttributesName
    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 dissipative currents

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

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

    Arguments

    Type IntentOptional AttributesName
    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 dissipative current

procedure, public :: accumulation => propagator_accumulation

Spectral accumulations

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

    Calculates the spectral accumulations in the junction. The result is returned in the form of an 8-vector containing the charge, spin, heat, and spin-heat accumulations.

    Arguments

    Type IntentOptional AttributesName
    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 e.g. for self-consistently calculating the superconducting gap in a superconductor.

    Arguments

    Type IntentOptional AttributesName
    class(propagator), intent(in) :: this

    Propagator object

    Return Value complex(kind=wp)

    Spectral correlation

procedure, public :: density => propagator_density

Spin-resolved density of states

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

    Calculates the spin-resolved local density of states.

    Arguments

    Type IntentOptional AttributesName
    class(propagator), intent(in) :: this

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

procedure, public :: save => propagator_save

Export Riccati parameters

  • private pure elemental subroutine propagator_save(this, other)

    Defines a function for exporting Riccati parameters.

    Arguments

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

procedure, public :: load => propagator_load

Import Riccati parameters

  • private pure elemental subroutine propagator_load(this, other)

    Defines a function for importing Riccati parameters.

    Arguments

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