Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=wp), | public | :: | length | = | 1.00_wp |
Material length (L/ξ) |
|
real(kind=wp), | public | :: | thouless | = | 1.00_wp |
Thouless energy (ħD/L²) |
|
real(kind=wp), | public | :: | scattering | = | 0.01_wp |
Inelastic scattering (η/Δ₀) |
|
logical, | public | :: | transparent_a | = | .false. |
Interface transparency (left) |
|
logical, | public | :: | transparent_b | = | .false. |
Interface transparency (right) |
|
logical, | public | :: | phaselock | = | .false. |
Lock the center-of-mass phase? |
|
logical, | public | :: | nonequilibrium | = | .false. |
Equilibrium? |
|
logical, | public | :: | transverse | = | .false. |
Transverse potential gradients? |
|
real(kind=wp), | public | :: | voltage | = | 0.00_wp |
Voltage (eV/Δ₀) |
|
real(kind=wp), | public | :: | temperature | = | 0.01_wp |
Temperature (T/Tc) |
|
real(kind=wp), | public | :: | spinvoltage | = | 0.00_wp |
Spin-voltage (eVs/Δ₀) |
|
real(kind=wp), | public | :: | spintemperature | = | 0.00_wp |
Spin-temperature (Ts/Tc) |
|
real(kind=wp), | public, | dimension(1:3) | :: | spinaxis | = | [0, 0, 1] |
Spin quantization axis |
real(kind=wp), | public, | allocatable | :: | energy(:) |
Energy domain |
||
real(kind=wp), | public, | allocatable | :: | location(:) |
Position domain |
||
type(propagator), | public, | allocatable | :: | propagator(:,:) |
Propagator values |
||
type(propagator), | public, | allocatable | :: | backup(:,:) |
Propagator backups |
||
real(kind=wp), | public, | allocatable | :: | density(:,:,:) |
Spin-resolved density of states |
||
real(kind=wp), | public, | allocatable | :: | supercurrent(:,:) |
Charge, spin, heat, and spin-heat supercurrents |
||
real(kind=wp), | public, | allocatable | :: | lossycurrent(:,:) |
Charge, spin, heat, and spin-heat dissipative currents |
||
real(kind=wp), | public, | allocatable | :: | accumulation(:,:) |
Charge, spin, heat, and spin-heat accumulation |
||
real(kind=wp), | public, | allocatable | :: | magnetization(:,:) |
Magnetization due to exchange and Zeeman effects |
||
complex(kind=wp), | public, | allocatable | :: | correlation(:) |
Superconducting pair-correlations |
||
integer, | public | :: | order | = | 1 |
Simulation priority of this material |
|
class(material), | public, | pointer | :: | material_a | => | null() |
Material to the left (default: vacuum) |
class(material), | public, | pointer | :: | material_b | => | null() |
Material to the right (default: vacuum) |
integer, | public | :: | iteration | = | 0 |
Used to keep track of selfconsistent iteration cycles |
|
logical, | public | :: | selfconsistent | = | .true. |
Whether to selfconsistently calculate the superconducting gap |
|
logical, | public | :: | boost | = | .true. |
Whether to use convergence acceleration methods |
|
integer, | public | :: | scaling | = | 128 |
Maximal mesh increase (range: 2^N, N>1) |
|
integer, | public | :: | method | = | 4 |
Runge—Kutta order (range: 2, 4, 6) |
|
integer, | public | :: | control | = | 2 |
Error control (1: defect, 2: global error, 3: 1 then 2, 4: 1 and 2) |
|
real(kind=wp), | public | :: | tolerance | = | 1e-10_wp |
Error tolerance (maximum defect or global error) |
|
integer, | public | :: | information | = | 0 |
Debug information (range: [-1,2]) |
|
real(kind=wp), | public | :: | difference | = | 1e+10_wp |
Difference between iterations |
|
character(len=128), | public | :: | type_string | = | 'MATERIAL' |
Name of this material |
|
type(spinscattering), | public, | allocatable | :: | spinscattering |
Spin-dependent scattering |
||
type(spinorbit), | public, | allocatable | :: | spinorbit |
Spin-orbit coupling |
||
type(spinactive), | public, | allocatable | :: | spinactive_a |
Spin-active interface (left) |
||
type(spinactive), | public, | allocatable | :: | spinactive_b |
Spin-active interface (right) |
Calculate propagators
This subroutine updates the state of the material by solving the diffusion equations for the equilibrium propagators, the kinetic equations for the nonequilibrium propagators, and then calculating physical observables.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(material), | intent(inout) | :: | this |
Material that will be updated |
||
logical, | intent(in), | optional | :: | bootstrap |
Disable calculation of observables |
Calculate propagators (in equilibrium)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(material), | intent(inout), | target | :: | this |
Calculate propagators (nonequilibrium)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(material), | intent(inout), | target | :: | this |
Saves the state of the material
Save a backup of the current material state.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(material), | intent(inout) | :: | this |
Loads the state of the material
Load a backup of a previous material state.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(material), | intent(inout) | :: | this |
Constructs the object
Constructs a conductor object initialized to a superconducting state.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(conductor), | intent(inout) | :: | this |
Initializes propagators
Define the default initializer.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(conductor), | intent(inout) | :: | this |
Code to execute before updates
Code to execute before running the update method of a class(conductor) object.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(conductor), | intent(inout) | :: | this |
Code to execute after updates
Code to execute after running the update method of a class(conductor) object. In particular, this function calculates supercurrents, dissipative currents, accumulations, and density of states, and stores the results in the object.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(conductor), | intent(inout) | :: | this |
Diffusion equation
Use the diffusion equation to calculate the second-derivatives of the Riccati parameters at an energy e and position z.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(conductor), | intent(in) | :: | this | |||
type(propagator), | intent(inout) | :: | p | |||
complex(kind=wp), | intent(in) | :: | e | |||
real(kind=wp), | intent(in) | :: | z |
Boundary condition (left)
Calculate residuals from the boundary conditions at the left interface.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(conductor), | intent(in) | :: | this | |||
type(propagator), | intent(in) | :: | p | |||
type(propagator), | intent(in) | :: | a | |||
type(spin), | intent(inout) | :: | r | |||
type(spin), | intent(inout) | :: | rt |
Boundary condition (right)
Calculate residuals from the boundary conditions at the right interface.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(conductor), | intent(in) | :: | this | |||
type(propagator), | intent(in) | :: | p | |||
type(propagator), | intent(in) | :: | b | |||
type(spin), | intent(inout) | :: | r | |||
type(spin), | intent(inout) | :: | rt |
Kinetic equation
Calculate the self-energies in the kinetic equation.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(conductor), | intent(in) | :: | this | |||
type(propagator), | intent(in) | :: | Gp | |||
complex(kind=wp), | intent(inout), | dimension(0:7,0:7) | :: | R | ||
real(kind=wp), | intent(in) | :: | z |
Boundary condition (left)
Calculate proportionality matrices for the boundary conditions at the left interface.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(conductor), | intent(in) | :: | this | |||
type(propagator), | intent(in) | :: | Gp | |||
type(propagator), | intent(in) | :: | Ga | |||
complex(kind=wp), | intent(out), | dimension(0:7,0:7) | :: | Cp | ||
complex(kind=wp), | intent(out), | dimension(0:7,0:7) | :: | Ca |
Boundary condition (right)
Calculate proportionality matrices for the boundary conditions at the right interface.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(conductor), | intent(in) | :: | this | |||
type(propagator), | intent(in) | :: | Gp | |||
type(propagator), | intent(in) | :: | Gb | |||
complex(kind=wp), | intent(out), | dimension(0:7,0:7) | :: | Cp | ||
complex(kind=wp), | intent(out), | dimension(0:7,0:7) | :: | Cb |
Configures material parameters
Configure a material property based on a key-value pair.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(conductor), | intent(inout) | :: | this | |||
character(len=*), | intent(in) | :: | key | |||
character(len=*), | intent(in) | :: | val |