Modules

ModuleSource FileDescription
basic_m basic.f90

This module contains constants and functions for doing low-level numerics in Fortran. This includes standard real and complex precisions (sp, dp, qp), a "working precision" (wp) that is used as the default precision in GENEUS; some common numerical constants (like pi and the machine epsilon); as well as basic functions for e.g. constructing and deconstructing complex numbers.

calculus_m calculus.f90

This module defines some functions that perform common calculus operations, including differentiating, integrating, and interpolating discretized data.

condmat_m condmat.f90

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

conductor_m conductor.f90

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_m evaluate.f90

This module has functions that evaluate textual expressions as Fortran data. This includes functions for converting mathematical expressions as arrays.

ferromagnet_m ferromagnet.f90

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_m halfmetal.f90

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_m material.f90

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_m math.f90

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_m matrix.f90

This module implements standard operations from linear algebra, including including matrix construction, inversion, commutation, and taking traces.

nambu_m nambu.f90

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

propagator_m propagator.f90

This module defines a type 'propagator' which represents a propagator (also known as a Green's function) for a given position and energy. The equilibrium parts (i.e. retarded and advanced) are represented via the Riccati parameters γ, γ~ and their derivatives, while the nonequilibrium part (i.e. Keldysh part) is represented by the traces of the distribution function and its derivatives. These are together sufficient to reconstruct the full 8×8 propagator and its derivatives, and can be used to calculate the associated physical quantities such as the density of states, charge currents, spin currents, and so on.

spin_m spin.f90

This module defines the type 'spin', representing 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 to make 'spin' easily importable/exportable to real vectors.

spinactive_m spinactive.f90

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

Read more…
spinorbit_m spinorbit.f90

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

spinscattering_m spinscattering.f90

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

stdio_m stdio.f90

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_m structure.f90

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_m superconductor.f90

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.