sisl_toolbox.btd.Electrode
- class sisl_toolbox.btd.Electrode
Bases:
ABCBase class for electrodes used in
DeviceGreenThis class is abstract, use
Electrode.from_fdfto create the electrode class matching an fdf electrode block, or one of the sub-classes directly.Sub-classes must implement
__len__,self_energyandse2broadening.- 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 filese2broadening(SE)Convert the self-energy SE to the broadening matrix
self_energy(E[, k])Return the self-energy matrix
Attributes
Imaginary part used for the self-energy calculation (if known)
Whether
bulk_matrixis 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 fileThe returned class depends on the content of the block:
a single
semi-inf-direction(e.g.-a3) returns aBlochElectrodeusing asisl.physics.RecursiveSIself-energy, or theGFfile (when use_gf is true).multiple
semi-inf-direction(e.g.aborabc) returns aRealSpaceElectrodeusing theGFfile. This requires use_gf, since the real-space self-energy cannot be created from the fdf file (create aRealSpaceElectrodewith asisl.physics.RealSpaceSEinstead).
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
DownfoldElectrodeis returned. This reads the device Hamiltonian (TBT.HS) and the other electrodes (TS.Elecs) to determine the downfolding region, seedownfold_partitionandDeviceGreen.from_fdffor the fdf flags used. The downfolding region is found for atoms or orbitals according to theatom+/orb+prefix ofTBT.BTD.Pivot.Elec.<name>(orTBT.BTD.Pivot.Elecs), defaulting to atoms.The electrode Hamiltonian is shifted by
delta-Efand 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
infoattribute: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 inTBT.Atoms.Device)dEf: thedelta-Efshift of the electrode Hamiltonianmu: the chemical potential shiftchemical_potential: name of the chemical potential (or None)position: theelectrode-positionvalue (or None)V_fraction: the fraction of the bias in the electrode couplingssemi_inf: the semi-infinite directions (sisl notation, e.g.["-c"])na: number of atoms of the electrode in the device (including Bloch expansions)gf: theGFfile 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-potentialdefaults to the only chemical potential inTS.ChemPots, or the one named as the electrode. WithoutTS.ChemPots,LeftandRightareV/2and-V/2. WithoutTBT.ChemPots(andTS.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
GFfile of the block (GForTBT.Elec.<name>.GF), otherwise they are calculated in memory (theGFfile is ignored). Electrodes without aGFfile 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:
- 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,etais added to E. Only available whenhas_bulkis true.- Parameters:
E (complex) – energy
dtype – data-type of the returned matrix
format (str) – format of the returned matrix,
"array"for a dense matrix, or a sparse format (e.g."csr"), seesisl.physics.Hamiltonian.Hk**kwargs – passed to
sisl.physics.Hamiltonian.Hk(e.g.spin)
- abstractmethod se2broadening(SE)[source]
Convert the self-energy SE to the broadening matrix
This is delegated to the underlying self-energy object.
- property has_bulk: bool
Whether
bulk_matrixis implemented for this electrode