Source code for scm.input_classes.drivers.green

from __future__ import annotations
from pathlib import Path
from typing import Iterable, Literal, Sequence
from scm.pisa.block import DriverBlock,EngineBlock,FixedBlock,FreeBlock,InputBlock
from scm.pisa.key import BoolKey,FloatKey,FloatListKey,IntKey,IntListKey,MultipleChoiceKey,PathStringKey,StringKey,BoolType

[docs]class Green(DriverBlock): r""" :ivar DOS: Enables the calculation of the density of states. The string specifies the TAPE21 file containing the result of an ADF calculation of the extended molecule (performed with SYMMETRY NOSYM) :vartype DOS: str | StringKey :ivar ETA: The imaginary energy, or the distance from the real axis, in the calculation of the Green's function. The value needs to be a small positive number to prevent singularities in the calculation. :vartype ETA: float | FloatKey :ivar Eps: mineps maxeps numeps: The energy range for which either the self-energy matrices or the DOS and transmission have to be calculated. The range consists of numeps (<=1) points running from mineps to maxeps inclusive. :vartype Eps: str | StringKey :ivar FermiLevel: :vartype FermiLevel: str | StringKey :ivar NoSave: :vartype NoSave: str | StringKey :ivar SO: :vartype SO: Iterable[float] | FloatListKey :ivar Trans: :vartype Trans: str | StringKey :ivar Left: Specify the left self-energies used in a calculation of the DOS and transmission. If a filename is specified in the header, the self-energy matrices are read from that file. :vartype Left: Green._Left :ivar Right: Specify the right self-energies used in a calculation of the DOS and transmission. If a filename is specified in the header, the self-energy matrices are read from that file. :vartype Right: Green._Right :ivar Surface: Enables the calculation of the self-energy matrices. The filename in the header specifies the TAPE21 file resulting from an ADF calculation of the contacts :vartype Surface: Green._Surface """
[docs] class _Left(FixedBlock): r""" Specify the left self-energies used in a calculation of the DOS and transmission. If a filename is specified in the header, the self-energy matrices are read from that file. :ivar ETA: Magnitude of the coupling :vartype ETA: float | FloatKey :ivar Fragment: :vartype Fragment: str | StringKey """ def __post_init__(self): self.ETA: float | FloatKey = FloatKey(name='ETA', comment='Magnitude of the coupling', default=0.001, unit='Hartree') self.Fragment: str | StringKey = StringKey(name='Fragment')
[docs] class _Right(FixedBlock): r""" Specify the right self-energies used in a calculation of the DOS and transmission. If a filename is specified in the header, the self-energy matrices are read from that file. :ivar ETA: Magnitude of the coupling :vartype ETA: float | FloatKey :ivar Fragment: :vartype Fragment: str | StringKey """ def __post_init__(self): self.ETA: float | FloatKey = FloatKey(name='ETA', comment='Magnitude of the coupling', default=0.001, unit='Hartree') self.Fragment: str | StringKey = StringKey(name='Fragment')
[docs] class _Surface(FixedBlock): r""" Enables the calculation of the self-energy matrices. The filename in the header specifies the TAPE21 file resulting from an ADF calculation of the contacts :ivar Fragments: The two principal layers between which the surface is defined :vartype Fragments: str | StringKey """ def __post_init__(self): self.Fragments: str | StringKey = StringKey(name='Fragments', comment='The two principal layers between which the surface is defined')
def __post_init__(self): self.DOS: str | StringKey = StringKey(name='DOS', comment='Enables the calculation of the density of states. The string specifies the TAPE21 file containing the result of an ADF calculation of the extended molecule (performed with SYMMETRY NOSYM)') self.ETA: float | FloatKey = FloatKey(name='ETA', comment="The imaginary energy, or the distance from the real axis, in the calculation of the Green's function. The value needs to be a small positive number to prevent singularities in the calculation.", default=1e-06, unit='Hartree') self.Eps: str | StringKey = StringKey(name='Eps', comment='mineps maxeps numeps: The energy range for which either the self-energy matrices or the DOS and transmission have to be calculated. The range consists of numeps (<=1) points running from mineps to maxeps inclusive.') self.FermiLevel: str | StringKey = StringKey(name='FermiLevel') self.NoSave: str | StringKey = StringKey(name='NoSave') self.SO: Iterable[float] | FloatListKey = FloatListKey(name='SO') self.Trans: str | StringKey = StringKey(name='Trans') self.Left: Green._Left = self._Left(name='Left', comment='Specify the left self-energies used in a calculation of the DOS and transmission. If a filename is specified in the header, the self-energy matrices are read from that file.', header=True) self.Right: Green._Right = self._Right(name='Right', comment='Specify the right self-energies used in a calculation of the DOS and transmission. If a filename is specified in the header, the self-energy matrices are read from that file.', header=True) self.Surface: Green._Surface = self._Surface(name='Surface', comment='Enables the calculation of the self-energy matrices. The filename in the header specifies the TAPE21 file resulting from an ADF calculation of the contacts', header=True)