RecursiveSI

class sisl.physics.RecursiveSI(spgeom, infinite, eta=0.0001)

Bases: sisl.physics.SemiInfinite

Self-energy object using the Lopez-Sancho Lopez-Sancho algorithm

Attributes

__dict__

__doc__

__module__

__weakref__

list of weak references to the object (if defined)

Methods

__delattr__

Implement delattr(self, name).

__dir__

Default dir() implementation.

__eq__

Return self==value.

__format__

Default object formatter.

__ge__

Return self>=value.

__getattr__(attr)

Overload attributes from the hosting object

__getattribute__

Return getattr(self, name).

__gt__

Return self>value.

__hash__

Return hash(self).

__init__(spgeom, infinite[, eta])

Create a SelfEnergy object from any SparseGeometry

__init_subclass__

This method is called when a class is subclassed.

__le__

Return self<=value.

__len__()

Dimension of the self-energy

__lt__

Return self<value.

__ne__

Return self!=value.

__new__

Create and return a new object.

__reduce__

Helper for pickle.

__reduce_ex__

Helper for pickle.

__repr__

Return repr(self).

__setattr__

Implement setattr(self, name, value).

__sizeof__

Size of object in memory, in bytes.

__str__()

Representation of the RecursiveSI model

__subclasshook__

Abstract classes can override this to customize issubclass().

_setup(spgeom)

Setup the Lopez-Sancho internals for easy axes

green(E[, k, dtype, eps])

Return a dense matrix with the bulk Green function at energy E and k-point k (default Gamma).

scattering_matrix(*args, **kwargs)

Calculate the scattering matrix by first calculating the self-energy

se2scat(SE)

Calculate the scattering matrix from the self-energy

self_energy(E[, k, dtype, eps, bulk])

Return a dense matrix with the self-energy at energy E and k-point k (default Gamma).

self_energy_lr(E[, k, dtype, eps, bulk])

Return two dense matrices with the left/right self-energy at energy E and k-point k (default Gamma).

green(E, k=0, 0, 0, dtype=None, eps=1e-14, **kwargs)[source]

Return a dense matrix with the bulk Green function at energy E and k-point k (default Gamma).

Parameters
  • E (float/complex) – 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 type

  • eps (float, optional) – convergence criteria for the recursion

  • **kwargs (dict, optional) – arguments passed directly to the self.parent.Pk method (not self.parent.Sk), for instance spin

Returns

the self-energy corresponding to the semi-infinite direction

Return type

numpy.ndarray

scattering_matrix(*args, **kwargs)

Calculate the scattering 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 scattering matrix.

>>> SE = SelfEnergy(...)
>>> self_energy = SE.self_energy(0.1)
>>> gamma = SE.scattering_matrix(0.1)

For a huge performance boost, please do:

>>> SE = SelfEnergy(...)
>>> self_energy = SE.self_energy(0.1)
>>> gamma = SE.se2scat(self_energy)

Notes

When using both the self-energy and the scattering matrix please use se2scat after having calculated the self-energy, this will be much, MUCH faster!

See also

se2scat

converting the self-energy to the scattering matrix

self_energy

the used routine to calculate the self-energy before calculating the scattering matrix

static se2scat(SE)

Calculate the scattering matrix from the self-energy

\[\boldsymbol\Gamma = i(\boldsymbol\Sigma - \boldsymbol \Sigma ^\dagger)\]
Parameters

SE (matrix) – self-energy matrix

self_energy(E, k=0, 0, 0, dtype=None, eps=1e-14, bulk=False, **kwargs)[source]

Return a dense matrix with the self-energy at energy E and k-point k (default Gamma).

Parameters
  • E (float/complex) – 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 type

  • eps (float, optional) – convergence criteria for the recursion

  • bulk (bool, optional) – 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 the self.parent.Pk method (not self.parent.Sk), for instance spin

Returns

the self-energy corresponding to the semi-infinite direction

Return type

numpy.ndarray

self_energy_lr(E, k=0, 0, 0, dtype=None, eps=1e-14, bulk=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 (float/complex) – 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 to np.complex128

  • eps (float, optional) – convergence criteria for the recursion

  • bulk (bool, optional) – 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 the self.parent.Pk method (not self.parent.Sk), for instance spin

Returns

  • left (numpy.ndarray) – the left self-energy

  • right (numpy.ndarray) – the right self-energy