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) |
||
real(kind=wp), | public, | allocatable | :: | zeeman |
How easy the material is magnetized by spin accumulation |
||
real(kind=wp), | public, | allocatable | :: | exchange(:,:) |
Magnetic exchange field as a function of position |
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 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 |
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 |
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 |
Code to execute before calculating the propagators
Updates the exchange field terms in the diffusion equation.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ferromagnet), | intent(inout) | :: | this |
Diffusion equation
Use the diffusion equation to calculate the second derivatives of the Riccati parameters at point z.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ferromagnet), | intent(in) | :: | this | |||
type(propagator), | intent(inout) | :: | p | |||
complex(kind=wp), | intent(in) | :: | e | |||
real(kind=wp), | intent(in) | :: | z |
Kinetic equation
Calculate the self-energies in the kinetic equation.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ferromagnet), | 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 |
Configures material parameters
Configure a material property based on a key-value pair.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ferromagnet), | intent(inout) | :: | this | |||
character(len=*), | intent(in) | :: | key | |||
character(len=*), | intent(in) | :: | val |