sisl.physics.RecursiveSI
- class sisl.physics.RecursiveSI(spgeom, infinite: Literal['+A', '-A', '+B', '-B', '+C', '-C'], eta: float = 1e-4)
Bases:
SemiInfinite
Self-energy object using the Lopez-Sancho Lopez-Sancho algorithm
Methods
broadening_matrix
(*args, **kwargs)Calculate the broadening matrix by first calculating the self-energy
green
(E[, k, dtype, atol])Return a dense matrix with the bulk Green function at energy E and k-point k (default Gamma).
se2broadening
(SE)Calculate the broadening matrix from the self-energy
self_energy
(E[, k, dtype, atol, bulk])Return a dense matrix with the self-energy at energy E and k-point k (default Gamma).
self_energy_lr
(E[, k, dtype, atol, bulk])Return two dense matrices with the left/right self-energy at energy E and k-point k (default Gamma).
- broadening_matrix(*args, **kwargs)
Calculate the broadening matrix by first calculating the self-energy
Any arguments that is passed to this method is directly passed to
self_energy
.See
self_energy
for details.This corresponds to:
\[\boldsymbol\Gamma = i(\boldsymbol\Sigma - \boldsymbol \Sigma ^\dagger)\]Examples
Calculating both the self-energy and the broadening matrix.
>>> SE = SelfEnergy(...) >>> self_energy = SE.self_energy(0.1) >>> gamma = SE.broadening_matrix(0.1)
For a huge performance boost, please do:
>>> SE = SelfEnergy(...) >>> self_energy = SE.self_energy(0.1) >>> gamma = SE.se2broadening(self_energy)
Notes
When using both the self-energy and the broadening matrix please use
se2broadening
after having calculated the self-energy, this will be much, MUCH faster!See also
se2broadening
converting the self-energy to the broadening matrix
self_energy
the used routine to calculate the self-energy before calculating the broadening matrix
- green(E: complex, k=(0, 0, 0), dtype=None, atol: float = 1e-14, **kwargs)[source]
Return a dense matrix with the bulk Green function at energy E and k-point k (default Gamma).
- Parameters:
E – energy at which the calculation will take place
k (
array_like
, optional) – k-point at which the Green function should be evaluated. the k-point should be in units of the reciprocal lattice vectors.dtype (
numpy.dtype
) – the resulting data typeatol – convergence criteria for the recursion
**kwargs (
dict
, optional) – arguments passed directly to theself.parent.Pk
method (notself.parent.Sk
), for instancespin
- Returns:
numpy.ndarray
– the self-energy corresponding to the semi-infinite direction
- static se2broadening(SE)
Calculate the broadening matrix from the self-energy
\[\boldsymbol\Gamma = i(\boldsymbol\Sigma - \boldsymbol \Sigma ^\dagger)\]- Parameters:
SE (
matrix
) – self-energy matrix
- self_energy(E: complex, k=(0, 0, 0), dtype=None, atol: float = 1e-14, bulk: bool = False, **kwargs)[source]
Return a dense matrix with the self-energy at energy E and k-point k (default Gamma).
- Parameters:
E – energy at which the calculation will take place
k (
array_like
, optional) – k-point at which the self-energy should be evaluated. the k-point should be in units of the reciprocal lattice vectors.dtype (
numpy.dtype
) – the resulting data typeatol – convergence criteria for the recursion
bulk – if true, \(E\cdot \mathbf S - \mathbf H -\boldsymbol\Sigma\) is returned, else \(\boldsymbol\Sigma\) is returned (default).
**kwargs (
dict
, optional) – arguments passed directly to theself.parent.Pk
method (notself.parent.Sk
), for instancespin
- Returns:
numpy.ndarray
– the self-energy corresponding to the semi-infinite direction
- self_energy_lr(E: complex, k=(0, 0, 0), dtype=None, atol: float = 1e-14, bulk: bool = False, **kwargs)[source]
Return two dense matrices with the left/right self-energy at energy E and k-point k (default Gamma).
Note calculating the LR self-energies simultaneously requires that their chemical potentials are the same. I.e. only when the reference energy is equivalent in the left/right schemes does this make sense.
- Parameters:
E – energy at which the calculation will take place, if complex, the hosting
eta
won’t be used.k (
array_like
, optional) – k-point at which the self-energy should be evaluated. the k-point should be in units of the reciprocal lattice vectors.dtype (
numpy.dtype
, optional) – the resulting data type, default tonp.complex128
atol – convergence criteria for the recursion
bulk – if true, \(E\cdot \mathbf S - \mathbf H -\boldsymbol\Sigma\) is returned, else \(\boldsymbol\Sigma\) is returned (default).
**kwargs (
dict
, optional) – arguments passed directly to theself.parent.Pk
method (notself.parent.Sk
), for instancespin
- Returns:
left (
numpy.ndarray
) – the left self-energyright (
numpy.ndarray
) – the right self-energy