sisl_toolbox.btd.BlochElectrode

class sisl_toolbox.btd.BlochElectrode

Bases: Electrode

Electrode with a (possibly Bloch expanded) self-energy

The rows of the self-energy are the orbitals of the Bloch expanded electrode, i.e. matching se.spgeom0.tile(...) for the bloch expansions.

Parameters:
  • se – the self-energy calculator, a sisl.physics.SelfEnergy or a Siesta GF file (gfSileSiesta). A GF file is already Bloch expanded.

  • bloch – Bloch expansion of the self-energy

  • name – name of the electrode, see Electrode

Methods

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

Return \(E\mathbf S - \mathbf H\) of the (Bloch expanded) 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, see sisl.physics.SelfEnergy.se2broadening

self_energy(E[, k])

Return the (Bloch expanded) self-energy

Attributes

eta

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

has_bulk

Whether bulk_matrix is implemented, requires a sisl.physics.RecursiveSI self-energy or a GF file

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

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 (Bloch expanded) electrode

For real energies, eta is added to E. For GF files, the energy (and \(\mathbf H\), \(\mathbf S\)) of the file is used. See Electrode.bulk_matrix for the arguments.

Parameters:
se2broadening(SE)[source]

Convert the self-energy SE to the broadening matrix, see sisl.physics.SelfEnergy.se2broadening

Parameters:

SE (ndarray)

Return type:

ndarray

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

Return the (Bloch expanded) self-energy

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, requires a sisl.physics.RecursiveSI self-energy or a GF file