Modules

ModuleSource FileDescription
basic_mbasic.f

This file defines a module containing the machine size of single-precision, double-precision, and quadruple-precision floating point numbers; to declare the floating point precision of a variable, use real(sp), real(dp), or real(qp) as the type of the variable. It also defines the working-precision, which will be the default kind for module procedures. As for module procedures, this library defines some common utility functions for working with e.g. complex numbers.

calculus_mcalculus.f

This file defines functions that perform some common calculus operations.

condmat_mcondmat.f

This file provides a common interface to a library of mathematical objects that can be useful for modelling materials in condensed matter physics.

conductor_mconductor.f

This module defines the data type 'conductor', which models the physical state of a conductor for a discretized range of positions and energies. It has two main applications: (i) it can be used as a base type for more exotic materials, such as superconductors and ferromagnets; (ii) it can be used in conjunction with such materials in hybrid structures.

evaluate_mevaluate.f

This file defines functions that perform some common matrix operations.

ferromagnet_mferromagnet.f

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.

halfmetal_mhalfmetal.f

This module defines the data type 'halfmetal', which models the physical state of a strong or halfmetallic ferromagnet. The type is a member of class(conductor), and inherits the internal structure and generic methods defined there.

Read more…
material_mmaterial.f

This module defines the data type 'material', which models the state of a physical material for a discretized range of positions and energies. This is an abstract type, meaning that it is not intended to be instantiated on its own, but is intended as a base type for physical materials like conductors, superconductors, and ferromagnets. In other words, this type defines the essential data structures and program structure, while the derived subtypes will define actual physics.

math_mmath.f

This file provides a common interface to a large library of mathematical functions and subroutines. See the documentation of individual interfaces below for more information about the contents of the mathematical library.

matrix_mmatrix.f

This file defines functions that perform some common matrix operations.

nambu_mnambu.f

This module defines the data type 'nambu', which represents 4×4 complex matrices in spin and Nambu space. The module overloads arithmetic operators to work with the new type, and defines and exports the Pauli matrices as constants.

propagator_mpropagator.f

This module defines the data type 'propagator', which represents the propagator at a given position and energy. The equilibrium propagators (retarded and advanced) are stored internally using the Riccati parameters γ and γ~ and their derivatives, while the nonequilibrium propagator (Keldysh) is represented by taking the traces of the distribution function and its derivatives. These quantities are together sufficient to reconstruct the full 8×8 propagator and its derivatives, and can be used to calculate associated physical quantities such as the density of states, charge currents, spin currents, heat currents, spin-heat currents, and various accumulation effects.

spin_mspin.f

This module defines the data type 'spin', which represents 2×2 complex matrices in spin space. The module overloads common arithmetic operators to work with the new data type, and defines and exports the Pauli matrices as constants. To make it easier to interact with common differential equation solvers, which often operate on real state vectors, the assignment operator is overloaded in such a way that 'spin' can be easily imported/exported to a real vector(8).

spinactive_mspinactive.f

This submodule is included by conductor.f, and contains the equations which model spin-active interfaces.

Read more…
spinorbit_mspinorbit.f

This submodule is included by conductor.f, and contains the equations which model spin-orbit coupling in diffusive materials.

spinscattering_mspinscattering.f

This submodule is included by conductor.f, and contains equations which model spin-flip scattering, spin-orbit scattering, and magnetic orbital depairing.

stdio_mstdio.f

This file renames the ISO input/output units to the standard UNIX names, defines the ANSI escape codes for colored output, and defines a number of auxiliary subroutines for e.g. writing out error and warning messages.

structure_mstructure.f

This module defines a data type 'structure', which is useful for constructing and using multilayer hybrid structures. It also exports the type definitions and constructors for all class(material) types, although these should rarely be needed.

superconductor_msuperconductor.f

This module defines the data type 'superconductor', which models the physical state of a superconductor. The type is a member of class(conductor), and thus inherits the internal structure and generic methods defined in conductor_m.