tbtncSileTBtrans¶
-
class
sisl.io.tbtrans.
tbtncSileTBtrans
(filename, mode='r', lvl=0, access=1, _open=True)[source]¶ TBtrans output file object
Implementation of the TBtrans output
*.TBT.nc
files which contains calculated quantities related to the NEGF code TBtrans.Although the TBtrans code is in fortran and the resulting NetCDF file variables are in fortran indexing (1-based), everything is returned as Python indexing (0-based) when using Python scripts.
In the following equations we will use this notation:
- \(\alpha\) and \(\beta\) are atomic indices
- \(\nu\) and \(\mu\) are orbital indices
A word on DOS normalization:
All the device region DOS functions may request a normalization depending on a variety of functions. You are highly encouraged to read the documentation for the
norm
function and to consider the benefit of using thenorm='atom'
normalization to more easily compare various partitions of DOS.Notes
The API for this class are largely equivalent to the arguments of the sdata command-line tool, with the execption that the command-line tool uses Fortran indexing numbers (1-based).
Attributes
E
Sampled energy-points in file a_d
Atomic indices (0-based) of device atoms a_dev
Atomic indices (0-based) of device atoms cell
Unit cell in file elecs
List of electrodes file
Filename of the current Sile geom
The associated geometry from this file geometry
The associated geometry from this file kpt
Sampled k-points in file lasto
Last orbital of corresponding atom nE
Number of energy-points in file na
Returns number of atoms in the cell na_d
Number of atoms in the device region na_dev
Number of atoms in the device region na_u
Returns number of atoms in the cell ne
Number of energy-points in file nkpt
Number of k-points in file no
Returns number of orbitals in the cell no_d
Number of orbitals in the device region no_u
Returns number of orbitals in the cell pivot
Pivot table of device orbitals to obtain input sorting wkpt
Weights of k-points in file xa
Atomic coordinates in file xyz
Atomic coordinates in file Methods
ADOS
([elec, E, kavg, atom, orbital, sum, norm])Spectral density of states (DOS) (1/eV). BDOS
([elec, E, kavg, sum, norm])Bulk density of states (DOS) (1/eV). DOS
([E, kavg, atom, orbital, sum, norm])Green function density of states (DOS) (1/eV). Eindex
(E)Return the closest energy index corresponding to the energy E
__init__
(filename[, mode, lvl, access, _open])Creates/Opens a SileCDF a2p
(atom)Return the pivoting indices (0-based) for the atoms atom_current
(elec, E[, kavg, activity])Atomic current of atoms atom_current_from_orbital
(Jij[, activity])Atomic current of atoms by passing the orbital current bond_current
(elec, E[, kavg, isc, sum, uc])Bond-current between atoms (sum of orbital currents) bond_current_from_orbital
(Jij[, sum, uc])Bond-current between atoms (sum of orbital currents) from an external orbital current chemical_potential
(elec)Return the chemical potential associated with the electrode elec close
()current
([elec_from, elec_to, kavg])Current from from to to using the k-weights and energy spacings in the file. current_parameter
(elec_from, mu_from, ...[, ...])Current from from to to using the k-weights and energy spacings in the file. electronic_temperature
(elec)Return temperature of the electrode electronic distribution in Kelvin eta
(elec)The imaginary part used when calculating the self-energies in eV exist
()Query whether the file exists info
([elec])Information about the calculated quantities available for extracting in this file isDataset
(obj)Return true if obj
is an instance of the NetCDF4Dataset
typeisDimension
(obj)Return true if obj
is an instance of the NetCDF4Dimension
typeisGroup
(obj)Return true if obj
is an instance of the NetCDF4Group
typeisRoot
(obj)Return true if obj
is an instance of the NetCDF4Dataset
typeisVariable
(obj)Return true if obj
is an instance of the NetCDF4Variable
typeiter
([group, dimension, variable, levels, root])Iterator on all groups, variables and dimensions. kT
(elec)Return temperature of the electrode electronic distribution in eV kindex
(k)Return the index of the k-point that is closests to the queried k-point (in reduced coordinates) mu
(elec)Return the chemical potential associated with the electrode elec norm
([atom, orbital, norm])Normalization factor depending on the input o2p
(orbital)Return the pivoting indices (0-based) for the orbitals orbital_current
(elec, E[, kavg, isc, take])Orbital current originating from elec as a sparse matrix read
(*args, **kwargs)Generic read method which should be overloaded in child-classes read_data
(*args, **kwargs)Read specific type of data. read_geometry
(*args, **kwargs)Returns Geometry object from this file read_supercell
()Returns SuperCell object from this file transmission
([elec_from, elec_to, kavg])Transmission from from to to. transmission_bulk
([elec, kavg])Bulk transmission for the elec electrode transmission_eig
([elec_from, elec_to, kavg])Transmission eigenvalues from from to to. vector_current
(elec, E[, kavg, sum])Vector for each atom describing the mean path for the current travelling through the atom vector_current_from_bond
(Jab)Vector for each atom being the sum of bond-current times the normalized bond between the atoms write
(*args, **kwargs)Generic write method which should be overloaded in child-classes write_geometry
(*args, **kwargs)This is not meant to be used write_tbtav
(*args, **kwargs)Convert this to a TBT.AV.nc file, i.e. -
ADOS
(elec=0, E=None, kavg=True, atom=None, orbital=None, sum=True, norm='none')[source]¶ Spectral density of states (DOS) (1/eV).
Extract the spectral DOS from electrode elec on a selected subset of atoms/orbitals in the device region
\[\mathrm{ADOS}_\mathfrak{el}(E) = \frac{1}{2\pi N} \sum_{\nu\in \mathrm{atom}/\mathrm{orbital}} [\mathbf{G}(E)\Gamma_\mathfrak{el}\mathbf{G}^\dagger]_{\nu\nu}(E)\]The normalization constant (\(N\)) is defined in the routine
norm
and depends on the arguments.Parameters: elec: str, int, optional
electrode originating spectral function
E : float or int, optional
optionally only return the DOS of atoms at a given energy point
kavg: bool, int or array_like, optional
whether the returned DOS is k-averaged, an explicit k-point or a selection of k-points
atom : array_like of int or bool, optional
only return for a given set of atoms (default to all). NOT allowed with orbital keyword
orbital : array_like of int or bool, optional
only return for a given set of orbitals (default to all) NOT allowed with atom keyword
sum : bool, optional
whether the returned quantities are summed or returned as is, i.e. resolved per atom/orbital.
norm : {‘none’, ‘atom’, ‘orbital’, ‘all’}
how the normalization of the summed DOS is performed (see
norm
routine).
-
BDOS
(elec=0, E=None, kavg=True, sum=True, norm='none')[source]¶ Bulk density of states (DOS) (1/eV).
Extract the bulk DOS from electrode elec on a selected subset of atoms/orbitals in the device region
\[\mathrm{BDOS}_\mathfrak{el}(E) = -\frac{1}{\pi} \Im\mathbf{G}(E)\]Parameters: elec: str, int, optional
electrode where the bulk DOS is returned
E : float or int, optional
optionally only return the DOS of atoms at a given energy point
kavg: bool, int or array_like, optional
whether the returned DOS is k-averaged, an explicit k-point or a selection of k-points
sum : bool, optional
whether the returned quantities are summed or returned as is, i.e. resolved per atom/orbital.
norm : {‘none’, ‘atom’, ‘orbital’, ‘all’}
whether the returned quantities are summed or normed by total number of orbitals. Currently one cannot extract DOS per atom/orbital.
-
DOS
(E=None, kavg=True, atom=None, orbital=None, sum=True, norm='none')[source]¶ Green function density of states (DOS) (1/eV).
Extract the DOS on a selected subset of atoms/orbitals in the device region
\[\mathrm{DOS}(E) = -\frac{1}{\pi N} \sum_{\nu\in \mathrm{atom}/\mathrm{orbital}} \Im \mathbf{G}_{\nu\nu}(E)\]The normalization constant (\(N\)) is defined in the routine
norm
and depends on the arguments.Parameters: E : float or int, optional
optionally only return the DOS of atoms at a given energy point
kavg: bool, int or array_like, optional
whether the returned DOS is k-averaged, an explicit k-point or a selection of k-points
atom : array_like of int or bool, optional
only return for a given set of atoms (default to all). NOT allowed with orbital keyword
orbital : array_like of int or bool, optional
only return for a given set of orbitals (default to all) NOT allowed with atom keyword
sum : bool, optional
whether the returned quantities are summed or returned as is, i.e. resolved per atom/orbital.
norm : {‘none’, ‘atom’, ‘orbital’, ‘all’}
how the normalization of the summed DOS is performed (see
norm
routine)
-
E
¶ Sampled energy-points in file
-
Eindex
(E)[source]¶ Return the closest energy index corresponding to the energy
E
Parameters: E : float or int
if
int
, return it-self, else return the energy index which is closests to the energy.
-
a2p
(atom)[source]¶ Return the pivoting indices (0-based) for the atoms
Parameters: atom : array_like or int
atomic indices (0-based)
-
a_d
¶ Atomic indices (0-based) of device atoms
-
a_dev
¶ Atomic indices (0-based) of device atoms
-
atom_current
(elec, E, kavg=True, activity=True)[source]¶ Atomic current of atoms
Short hand function for calling
orbital_current
andatom_current_from_orbital
.Parameters: elec: str, int
the electrode of originating electrons
E: float or int
the energy or energy index of the atom current.
kavg: bool, int or array_like, optional
whether the returned atomic current is k-averaged, an explicit k-point or a selection of k-points
activity: bool, optional
whether the activity current is returned, see
atom_current_from_orbital
for details.See also
orbital_current
- the orbital current between individual orbitals
bond_current_from_orbital
- transfer the orbital current to bond current
bond_current
- the bond current (orbital current summed over orbitals)
vector_current
- an atomic field current for each atom (Cartesian representation of bond-currents)
-
atom_current_from_orbital
(Jij, activity=True)[source]¶ Atomic current of atoms by passing the orbital current
The atomic current is a single number specifying a figure of the magnitude current flowing through each atom. It is thus not a quantity that can be related to the physical current flowing in/out of atoms but is merely a number that provides an idea of how much current this atom is redistributing.
The atomic current may have two meanings based on these two equations
\[\begin{split}J_\alpha^{|a|} &=\frac{1}{2} \sum_\beta \Big| \sum_{\nu\in \alpha}\sum_{\mu\in \beta} J_{\nu\mu} \Big| \\ J_\alpha^{|o|} &=\frac{1}{2} \sum_\beta \sum_{\nu\in \alpha}\sum_{\mu\in \beta} \big| J_{\nu\mu} \big|\end{split}\]If the activity current is requested (
activity=True
) \(J_\alpha^{\mathcal A} = \sqrt{ J_\alpha^{|a|} J_\alpha^{|o|} }\) is returned.If
activity=False
\(J_\alpha^{|a|}\) is returned.For geometries with all atoms only having 1-orbital, they are equivalent.
Generally the activity current is a more rigorous figure of merit for the current flowing through an atom. More so than than the summed absolute atomic current due to the following reasoning. The activity current is a geometric mean of the absolute bond current and the absolute orbital current. This means that if there is an atom with a large orbital current it will have a larger activity current.
Parameters: Jij: scipy.sparse.csr_matrix
the orbital currents as retrieved from
orbital_current
activity: bool, optional
True
to return the activity current, see explanation aboveExamples
>>> Jij = tbt.orbital_current(0, -1.03) # orbital current @ E = -1 eV originating from electrode ``0`` >>> Ja = tbt.atom_current_from_orbital(Jij)
-
bond_current
(elec, E, kavg=True, isc=None, sum='+', uc=False)[source]¶ Bond-current between atoms (sum of orbital currents)
Short hand function for calling
orbital_current
andbond_current_from_orbital
.Parameters: elec : str, int
the electrode of originating electrons
E : float or int
A float for energy in eV, int for explicit energy index Unlike
orbital_current
this may not be None as the down-scaling of the orbital currents may not be equivalent for all energy points.kavg : bool, int or array_like, optional
whether the returned bond current is k-averaged, an explicit k-point or a selection of k-points
isc : array_like, optional
the returned bond currents from the unit-cell (
[None, None, None]
) (default) to the given supercell. If[None, None, None]
is passed all bond currents are returned.sum : {‘+’, ‘all’, ‘-‘}
If “+” is supplied only the positive orbital currents are used, for “-”, only the negative orbital currents are used, else return the sum of both.
uc : bool, optional
whether the returned bond-currents are only in the unit-cell. If True this will return a sparse matrix of
shape = (self.na, self.na)
, else, it will return a sparse matrix ofshape = (self.na, self.na * self.n_s)
. One may figure out the connections via Geometry.sc_index.See also
orbital_current
- the orbital current between individual orbitals
bond_current_from_orbital
- transfer the orbital current to bond current
atom_current
- the atomic current for each atom (scalar representation of bond-currents)
vector_current
- an atomic field current for each atom (Cartesian representation of bond-currents)
Examples
>>> Jij = tbt.orbital_current(0, -1.0) # orbital current @ E = -1 eV originating from electrode ``0`` >>> Jab1 = tbt.bond_current_from_orbital(Jij) >>> Jab2 = tbt.bond_current(0, -1.0) >>> Jab1 == Jab2 True
-
bond_current_from_orbital
(Jij, sum='+', uc=False)[source]¶ Bond-current between atoms (sum of orbital currents) from an external orbital current
Conversion routine from orbital currents into bond currents.
The bond currents are a sum over all orbital currents:
\[J_{\alpha\beta} = \sum_{\nu\in\alpha}\sum_{\mu\in\beta} J_{\nu\mu}\]where if
sum='+'
: only \(J_{\nu\mu} > 0\) are summed,sum='-'
: only \(J_{\nu\mu} < 0\) are summed,sum='all'
: all \(J_{\nu\mu}\) are summed.
Parameters: Jij : scipy.sparse.csr_matrix
the orbital currents as retrieved from
orbital_current
sum : {‘+’, ‘all’, ‘-‘}
If “+” is supplied only the positive orbital currents are used, for “-”, only the negative orbital currents are used, else return both.
uc : bool, optional
whether the returned bond-currents are only in the unit-cell. If
True
this will return a sparse matrix ofshape = (self.na, self.na)
, else, it will return a sparse matrix ofshape = (self.na, self.na * self.n_s)
. One may figure out the connections via Geometry.sc_index.See also
orbital_current
- the orbital current between individual orbitals
bond_current
- the bond current (orbital current summed over orbitals)
atom_current
- the atomic current for each atom (scalar representation of bond-currents)
vector_current
- an atomic field current for each atom (Cartesian representation of bond-currents)
Examples
>>> Jij = tbt.orbital_current(0, -1.0) # orbital current @ E = -1 eV originating from electrode ``0`` >>> Jab = tbt.bond_current_from_orbital(Jij) >>> Jab[2,3] # bond current between atom 3 and 4
-
cell
¶ Unit cell in file
-
close
()¶
-
current
(elec_from=0, elec_to=1, kavg=True)[source]¶ Current from from to to using the k-weights and energy spacings in the file.
Calculates the current as:
\[I(\mu_t - \mu_f) = \frac{e}{h}\int\!\mathrm{d}E\, T(E) [n_F(\mu_t, k_B T_t) - n_F(\mu_f, k_B T_f)]\]The chemical potential and the temperature are taken from this object.
Parameters: elec_from: str, int, optional
the originating electrode
elec_to: str, int, optional
the absorbing electrode (different from elec_from)
kavg: bool, int or array_like, optional
whether the returned current is k-averaged, an explicit k-point or a selection of k-points
See also
current_parameter
- to explicitly set the electronic temperature and chemical potentials
chemical_potential
- routine that defines the chemical potential of the queried electrodes
kT
- routine that defines the electronic temperature of the queried electrodes
-
current_parameter
(elec_from, mu_from, kt_from, elec_to, mu_to, kt_to, kavg=True)[source]¶ Current from from to to using the k-weights and energy spacings in the file.
Calculates the current as:
\[I(\mu_t - \mu_f) = \frac{e}{h}\int\!\mathrm{d}E\, T(E) [n_F(\mu_t, k_B T_t) - n_F(\mu_f, k_B T_f)]\]The chemical potential and the temperature are passed as arguments to this routine.
Parameters: elec_from: str, int
the originating electrode
mu_from: float
the chemical potential of the electrode (in eV)
kt_from: float
the electronic temperature of the electrode (in eV)
elec_to: str, int
the absorbing electrode (different from elec_from)
mu_to: float
the chemical potential of the electrode (in eV)
kt_to: float
the electronic temperature of the electrode (in eV)
kavg: bool, int or array_like, optional
whether the returned current is k-averaged, an explicit k-point or a selection of k-points
See also
current
- which calculates the current with the chemical potentials and temperatures set in the TBtrans calculation
-
elecs
¶ List of electrodes
-
electronic_temperature
(elec)[source]¶ Return temperature of the electrode electronic distribution in Kelvin
-
exist
()¶ Query whether the file exists
-
file
¶ Filename of the current Sile
-
geom
¶ The associated geometry from this file
-
geometry
¶ The associated geometry from this file
-
info
(elec=None)[source]¶ Information about the calculated quantities available for extracting in this file
Parameters: elec : str, int
the electrode to request information from
-
isDataset
(obj)¶ Return true if
obj
is an instance of the NetCDF4Dataset
typeThis is just a wrapper for
isinstance(obj, netCDF4.Dataset)
.
-
isDimension
(obj)¶ Return true if
obj
is an instance of the NetCDF4Dimension
typeThis is just a wrapper for
isinstance(obj, netCDF4.Dimension)
.
-
isGroup
(obj)¶ Return true if
obj
is an instance of the NetCDF4Group
typeThis is just a wrapper for
isinstance(obj, netCDF4.Group)
.
-
isRoot
(obj)¶ Return true if
obj
is an instance of the NetCDF4Dataset
typeThis is just a wrapper for
isinstance(obj, netCDF4.Dataset)
.
-
isVariable
(obj)¶ Return true if
obj
is an instance of the NetCDF4Variable
typeThis is just a wrapper for
isinstance(obj, netCDF4.Variable)
.
-
iter
(group=True, dimension=True, variable=True, levels=-1, root=None)¶ Iterator on all groups, variables and dimensions.
This iterator iterates through all groups, variables and dimensions in the
Dataset
The generator sequence will _always_ be:
- Group
- Dimensions in group
- Variables in group
As the dimensions are generated before the variables it is possible to copy groups, dimensions, and then variables such that one always ensures correct dependencies in the generation of a new
SileCDF
.Parameters: group :
bool
(True)whether the iterator yields Group instances
dimension :
bool
(True)whether the iterator yields Dimension instances
variable :
bool
(True)whether the iterator yields Variable instances
levels :
int
(-1)number of levels to traverse, with respect to
root
variable, i.e. number of sub-groups this iterator will return.root :
str
(None)the base root to start iterating from.
Examples
Script for looping and checking each instance.
>>> for gv in self.iter(): ... if self.isGroup(gv): ... # is group ... elif self.isDimension(gv): ... # is dimension ... elif self.isVariable(gv): ... # is variable
-
kindex
(k)[source]¶ Return the index of the k-point that is closests to the queried k-point (in reduced coordinates)
Parameters: k : array_like of float
the queried k-point in reduced coordinates \(]-0.5;0.5]\).
-
kpt
¶ Sampled k-points in file
-
lasto
¶ Last orbital of corresponding atom
-
mu
(elec)¶ Return the chemical potential associated with the electrode elec
-
nE
¶ Number of energy-points in file
-
na
¶ Returns number of atoms in the cell
-
na_d
¶ Number of atoms in the device region
-
na_dev
¶ Number of atoms in the device region
-
na_u
¶ Returns number of atoms in the cell
-
ne
¶ Number of energy-points in file
-
nkpt
¶ Number of k-points in file
-
no
¶ Returns number of orbitals in the cell
-
no_d
¶ Number of orbitals in the device region
-
no_u
¶ Returns number of orbitals in the cell
-
norm
(atom=None, orbital=None, norm='none')[source]¶ Normalization factor depending on the input
The normalization can be performed in one of the below methods. In the following \(N\) refers to the normalization constant that is to be used (i.e. the divisor):
'none'
- \(N=1\)
'all'
- \(N\) equals the number of orbitals in the total device region.
'atom'
- \(N\) equals the total number of orbitals in the selected atoms. If orbital is an argument a conversion of orbital to the equivalent unique atoms is performed, and subsequently the total number of orbitals on the atoms is used. This makes it possible to compare the fraction of orbital DOS easier.
'orbital'
- \(N\) is the sum of selected orbitals, if atom is specified, this is equivalent to the ‘atom’ option.
Parameters: atom : array_like of int or bool, optional
only return for a given set of atoms (default to all). NOT allowed with orbital keyword
orbital : array_like of int or bool, optional
only return for a given set of orbitals (default to all) NOT allowed with atom keyword
norm : {‘none’, ‘atom’, ‘orbital’, ‘all’}
how the normalization of the summed DOS is performed (see
norm
routine)
-
o2p
(orbital)[source]¶ Return the pivoting indices (0-based) for the orbitals
Parameters: orbital : array_like or int
orbital indices (0-based)
-
orbital_current
(elec, E, kavg=True, isc=None, take='all')[source]¶ Orbital current originating from elec as a sparse matrix
This will return a sparse matrix, see
scipy.sparse.csr_matrix
for details. Each matrix element of the sparse matrix corresponds to the orbital indices of the underlying geometry.Parameters: elec: str, int
the electrode of originating electrons
E: float or int
the energy or the energy index of the orbital current. If an integer is passed it is the index, otherwise the index corresponding to Eindex(E) is used.
kavg: bool, int or array_like, optional
whether the returned orbital current is k-averaged, an explicit k-point or a selection of k-points
isc: array_like, optional
the returned bond currents from the unit-cell (
[None, None, None]
) to the given supercell, the default is all orbital currents for the supercell. To only get unit cell orbital currents, pass[0, 0, 0]
.take : {‘all’, ‘+’, ‘-‘}
which orbital currents to return, all, positive or negative values only. Default to
'all'
because it can then be used in the subsequent default arguments forbond_current_from_orbital
andatom_current_from_orbital
.See also
bond_current_from_orbital
- transfer the orbital current to bond current
bond_current
- the bond current (orbital current summed over orbitals)
atom_current_from_orbital
- transfer the orbital current to atomic current
atom_current
- the atomic current for each atom (scalar representation of bond-currents)
vector_current
- an atomic field current for each atom (Cartesian representation of bond-currents)
Examples
>>> Jij = tbt.orbital_current(0, -1.0) # orbital current @ E = -1 eV originating from electrode ``0`` >>> Jij[10, 11] # orbital current from the 11th to the 12th orbital
-
pivot
¶ Pivot table of device orbitals to obtain input sorting
-
read
(*args, **kwargs)¶ Generic read method which should be overloaded in child-classes
Parameters: **kwargs :
keyword arguments will try and search for the attribute
read_<>
and call it with the remaining**kwargs
as arguments.
-
read_data
(*args, **kwargs)[source]¶ Read specific type of data.
This is a generic routine for reading different parts of the data-file.
Parameters: geom: bool, optional
return the geometry
atom_current: bool, optional
return the atomic current flowing through an atom (the activity current)
vector_current: bool, optional
return the orbital currents as vectors
-
transmission
(elec_from=0, elec_to=1, kavg=True)[source]¶ Transmission from from to to.
The transmission between two electrodes may be retrieved from the Sile.
Parameters: elec_from: str, int, optional
the originating electrode
elec_to: str, int, optional
the absorbing electrode (different from elec_from)
kavg: bool, int or array_like, optional
whether the returned transmission is k-averaged, an explicit k-point or a selection of k-points
See also
transmission_eig
- the transmission decomposed in eigenchannels
transmission_bulk
- the total transmission in a periodic lead
-
transmission_bulk
(elec=0, kavg=True)[source]¶ Bulk transmission for the elec electrode
The bulk transmission is equivalent to creating a 2 terminal device with electrode elec tiled 3 times.
Parameters: elec: str, int, optional
the bulk electrode
kavg: bool, int or array_like, optional
whether the returned transmission is k-averaged, an explicit k-point or a selection of k-points
See also
transmission
- the total transmission
transmission_eig
- the transmission decomposed in eigenchannels
-
transmission_eig
(elec_from=0, elec_to=1, kavg=True)[source]¶ Transmission eigenvalues from from to to.
Parameters: elec_from: str, int, optional
the originating electrode
elec_to: str, int, optional
the absorbing electrode (different from elec_from)
kavg: bool, int or array_like, optional
whether the returned transmission is k-averaged, an explicit k-point or a selection of k-points
See also
transmission
- the total transmission
transmission_bulk
- the total transmission in a periodic lead
-
vector_current
(elec, E, kavg=True, sum='+')[source]¶ Vector for each atom describing the mean path for the current travelling through the atom
See
vector_current_from_bond
for details.Parameters: elec: str, int
the electrode of originating electrons
E: float or int
the energy or energy index of the vector current. Unlike
orbital_current
this may not be None as the down-scaling of the orbital currents may not be equivalent for all energy points.kavg: bool, int or array_like, optional
whether the returned vector current is k-averaged, an explicit k-point or a selection of k-points
sum : {‘+’, ‘-‘, ‘all’}
By default only sum outgoing vector currents (
'+'
). The incoming vector currents may be retrieved by'-'
, while the average incoming and outgoing direction can be obtained with'all'
. In the last case the vector currents are divided by 2 to ensure the length of the vector is compatibile with the other options given a pristine system.Returns: numpy.ndarray : an array of vectors per atom in the Geometry (only non-zero for device atoms)
See also
orbital_current
- the orbital current between individual orbitals
bond_current_from_orbital
- transfer the orbital current to bond current
bond_current
- the bond current (orbital current summed over orbitals)
atom_current
- the atomic current for each atom (scalar representation of bond-currents)
-
vector_current_from_bond
(Jab)[source]¶ Vector for each atom being the sum of bond-current times the normalized bond between the atoms
The vector current is defined as:
\[\mathbf J_\alpha = \sum_\beta \frac{r_\beta - r_\alpha}{|r_\beta - r_\alpha|} \cdot J_{\alpha\beta}\]Where \(J_{\alpha\beta}\) is the bond current between atom \(\alpha\) and \(\beta\) and \(r_\alpha\) are the atomic coordinates.
Parameters: Jab: scipy.sparse.csr_matrix
the bond currents as retrieved from
bond_current
Returns: numpy.ndarray : an array of vectors per atom in the Geometry (only non-zero for device atoms)
See also
orbital_current
- the orbital current between individual orbitals
bond_current_from_orbital
- transfer the orbital current to bond current
bond_current
- the bond current (orbital current summed over orbitals)
atom_current
- the atomic current for each atom (scalar representation of bond-currents)
-
wkpt
¶ Weights of k-points in file
-
write
(*args, **kwargs)¶ Generic write method which should be overloaded in child-classes
Parameters: **kwargs :
keyword arguments will try and search for the attribute write_ and call it with the remaining
**kwargs
as arguments.
-
write_tbtav
(*args, **kwargs)[source]¶ Convert this to a TBT.AV.nc file, i.e. all k dependent quantites are averaged out.
This command will overwrite any previous file with the ending TBT.AV.nc and thus will not take notice of any older files.
-
xa
¶ Atomic coordinates in file
-
xyz
¶ Atomic coordinates in file