This module defines the data type 'ferromagnet', which models the physical state of a ferromagnet. The type is a member of class(conductor), and thus inherits the internal structure and generic methods defined in conductor_m.
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 |
procedure, public :: update => material_update | ../../ Calculate propagators |
procedure, public :: update_diffusion => diffusion_update | ../../ Calculate propagators (in equilibrium) |
procedure, public :: update_kinetic => kinetic_update | ../../ Calculate propagators (nonequilibrium) |
procedure, public :: save => material_save | ../../ Saves the state of the material |
procedure, public :: load => material_load | ../../ Loads the state of the material |
procedure, public :: construct => conductor_construct | ../../ Constructs the object |
procedure, public :: initialize => conductor_initialize | ../../ Initializes propagators |
procedure, public :: update_posthook => conductor_update_posthook | ../../ Code to execute after updates |
procedure, public :: diffusion_equation_a => conductor_diffusion_equation_a | ../../ Boundary condition (left) |
procedure, public :: diffusion_equation_b => conductor_diffusion_equation_b | ../../ Boundary condition (right) |
procedure, public :: kinetic_equation_a => conductor_kinetic_equation_a | ../../ Boundary condition (left) |
procedure, public :: kinetic_equation_b => conductor_kinetic_equation_b | ../../ Boundary condition (right) |
procedure, public :: update_prehook => ferromagnet_update_prehook | ../../ Code to execute before calculating the propagators |
procedure, public :: diffusion_equation => ferromagnet_diffusion_equation | ../../ Diffusion equation |
procedure, public :: kinetic_equation => ferromagnet_kinetic_equation | ../../ Kinetic equation |
procedure, public :: conf => ferromagnet_conf | ../../ Configures material parameters |