propagator_m Module

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.



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


Derived Types

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

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.

Type-Bound Procedures

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