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)