Module | Source File | Description |
---|---|---|
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. |
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. |
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. |