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 |