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 |
||
complex(kind=wp), | public, | allocatable | :: | gap_history(:,:) | Superconducting order parameter as a function of location (backup of previously calculated gaps on the location mesh) |
||
complex(kind=wp), | public, | allocatable | :: | gap_function(:) | Superconducting order parameter as a function of location (relative to the zero-temperature gap of a bulk superconductor) |
||
real(kind=wp), | public, | allocatable | :: | gap_location(:) | Location array for the gap function (required because we interpolate the gap to a higher resolution than the propagators) |
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 |
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 |
Construct propagators
Constructs a superconducting material that is initialized to a superconducting state.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(superconductor), | intent(inout) | :: | this |
Initialize propagators
Redefine the default initializer.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(superconductor), | 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(superconductor), | 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(superconductor), | 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 |
Calculate the superconducting order parameter
Interpolate the superconducting correlations Δ(z) to a higher resolution, to make the calculations more stable near strong ferromagnetic materials.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(superconductor), | intent(inout) | :: | this | Superconductor object |
Boost the convergence of the order parameter (Steffensen's method)
Boost the convergence of the order parameter using Steffensen's method.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(superconductor), | intent(inout) | :: | this |
Update the internal variables before calculating the propagators
Code to execute before running the update method of a class(superconductor) object.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(superconductor), | intent(inout) | :: | this |
Update the superconducting order parameter from the propagators
Updates the superconducting order parameter based on the propagators of the system.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(superconductor), | intent(inout) | :: | this |
Return the superconducting order parameter at a given position
Returns the superconducting order parameter at the given location.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(superconductor), | intent(in) | :: | this | |||
real(kind=wp), | intent(in) | :: | location |
Configure material parameters
Configure a material property based on a key-value pair.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(superconductor), | intent(inout) | :: | this | |||
character(len=*), | intent(in) | :: | key | |||
character(len=*), | intent(in) | :: | val |