sisl_toolbox.btd.Electrode

class sisl_toolbox.btd.Electrode

Bases: ABC

Base class for electrodes used in DeviceGreen

This class is abstract, use Electrode.from_fdf to create the electrode class matching an fdf electrode block, or one of the sub-classes directly.

Sub-classes must implement __len__, self_energy and se2broadening.

Parameters:

name – name of the electrode, used to reference it in DeviceGreen. Without a name the electrode can only be referenced by its index (or the electrode object itself).

Methods

bulk_matrix(E[, k, dtype, format])

Return \(E\mathbf S - \mathbf H\) of the bulk electrode

from_fdf(fdf, name[, prefix, mu, use_gf, ...])

Create the electrode from the %block TS.Elec.<name> in an fdf file

se2broadening(SE)

Convert the self-energy SE to the broadening matrix

self_energy(E[, k])

Return the self-energy matrix

Attributes

eta

Imaginary part used for the self-energy calculation (if known)

has_bulk

Whether bulk_matrix is implemented for this electrode

classmethod from_fdf(fdf, name, prefix='TBT', mu=None, use_gf=False, downfold=True)[source]

Create the electrode from the %block TS.Elec.<name> in an fdf file

The returned class depends on the content of the block:

When downfold is true, and the electrode is not (fully) in the device region, the above electrode is (partially) downfolded into the device region, and a DownfoldElectrode is returned. This reads the device Hamiltonian (TBT.HS) and the other electrodes (TS.Elecs) to determine the downfolding region, see downfold_partition and DeviceGreen.from_fdf for the fdf flags used. The downfolding region is found for atoms or orbitals according to the atom+/orb+ prefix of TBT.BTD.Pivot.Elec.<name> (or TBT.BTD.Pivot.Elecs), defaulting to atoms.

The electrode Hamiltonian is shifted by delta-Ef and the chemical potential. A GF file should already contain these shifts. File names are relative to the directory of the fdf file.

Other options from the fdf file are stored in the info attribute:

  • bulk: whether the electrode Hamiltonian is used in the electrode region (true), or the device Hamiltonian (false), in the downfolding region, or the device region (for electrodes fully in TBT.Atoms.Device)

  • dEf: the delta-Ef shift of the electrode Hamiltonian

  • mu: the chemical potential shift

  • chemical_potential: name of the chemical potential (or None)

  • position: the electrode-position value (or None)

  • V_fraction: the fraction of the bias in the electrode couplings

  • semi_inf: the semi-infinite directions (sisl notation, e.g. ["-c"])

  • na: number of atoms of the electrode in the device (including Bloch expansions)

  • gf: the GF file name (or None)

When downfold is true, the orbs attribute holds the orbitals of the device Hamiltonian where the self-energy is placed (the electrode orbitals for electrodes fully in the device region).

Parameters:
  • fdf (SileLike) – fdf file to read the parameters from

  • name (str) – name of the electrode, i.e. the block TS.Elec.<name>

  • prefix (Literal['TBT', 'TS']) – which prefix to use, if TBT it will prefer TBT prefix, but fall back to TS prefixes. If TS, only these prefixes will be used.

  • mu (Optional[float]) – chemical potential of the electrode [eV], if None it is read from the %block TS.ChemPot.<chemical-potential> (and the bias). As in TranSiesta, chemical-potential defaults to the only chemical potential in TS.ChemPots, or the one named as the electrode. Without TS.ChemPots, Left and Right are V/2 and -V/2. Without TBT.ChemPots (and TS.ChemPots) and no bias, TBtrans uses a single chemical potential at 0 for all electrodes.

  • use_gf (bool) – whether the self-energies are read from the GF file of the block (GF or TBT.Elec.<name>.GF), otherwise they are calculated in memory (the GF file is ignored). Electrodes without a GF file are always calculated in memory.

  • downfold (bool) – whether the electrode is downfolded into the device region (unless it is fully in the device region). Use false to get the electrode itself, e.g. for DeviceGreen.from_tbt.

Return type:

Electrode

bulk_matrix(E, k=(0, 0, 0), *, dtype=np.complex128, format='array', **kwargs)[source]

Return \(E\mathbf S - \mathbf H\) of the bulk electrode

The rows (and columns) are the same as for self_energy. For real energies, eta is added to E. Only available when has_bulk is true.

Parameters:
abstractmethod se2broadening(SE)[source]

Convert the self-energy SE to the broadening matrix

This is delegated to the underlying self-energy object.

Parameters:

SE (ndarray)

Return type:

ndarray

abstractmethod self_energy(E, k=(0, 0, 0), **kwargs)[source]

Return the self-energy matrix

Parameters:
Return type:

ndarray

property eta: float | None

Imaginary part used for the self-energy calculation (if known)

property has_bulk: bool

Whether bulk_matrix is implemented for this electrode