RealSpaceSE¶
-
class
sisl.physics.
RealSpaceSE
(parent, semi_axis, k_axes, unfold=(1, 1, 1), **options)[source]¶ Bulk real-space self-energy (or Green function) for a given physical object with periodicity
The real-space self-energy is calculated via the k-averaged Green function:
\[\boldsymbol\Sigma^\mathcal{R}(E) = \mathbf S^\mathcal{R} (E+i\eta) - \mathbf H^\mathcal{R} - \sum_{\mathbf k} \mathbf G_{\mathbf k}(E)\]The method actually used is relying on
RecursiveSI
andBloch
objects.- Parameters
- parentSparseOrbitalBZ
a physical object from which to calculate the real-space self-energy. The parent object must have only 3 supercells along the direction where self-energies are used.
- semi_axisint
semi-infinite direction (where self-energies are used and thus exact precision)
- k_axesarray_like of int
the axes where k-points are desired. 1 or 2 values are required and the semi_axis cannot be one of them
- unfold(3,) of int
number of times the parent structure is tiled along each direction The resulting Green function/self-energy ordering is always tiled along the semi-infinite direction first, and then the other directions in order.
- etafloat, optional
imaginary part in the self-energy calculations (default 1e-4 eV)
- dkfloat, optional
fineness of the default integration grid, specified in units of Ang, default to 1000 which translates to 1000 k-points along reciprocal cells of length 1. Ang^-1.
- bzBrillouinZone, optional
integration k-points, if not passed the number of k-points will be determined using dk and time-reversal symmetry will be determined by trs, the number of points refers to the unfolded system.
- trsbool, optional
whether time-reversal symmetry is used in the BrillouinZone integration, default to true.
Examples
>>> graphene = geom.graphene() >>> H = Hamiltonian(graphene) >>> H.construct([(0.1, 1.44), (0, -2.7)]) >>> rse = RealSpaceSE(H, 0, 1, (3, 4, 1)) >>> rse.green(0.1)
The Brillouin zone integration is determined naturally.
>>> graphene = geom.graphene() >>> H = Hamiltonian(graphene) >>> H.construct([(0.1, 1.44), (0, -2.7)]) >>> rse = RealSpaceSE(H, 0, 1, (3, 4, 1)) >>> rse.set_options(eta=1e-3, bz=MonkhorstPack(H, [1, 1000, 1])) >>> rse.initialize() >>> rse.green(0.1) # eta = 1e-3 >>> rse.green(0.1 + 1j * 1e-4) # eta = 1e-4
Manually specify Brillouin zone integration and default \(\eta\) value.
Methods
__init__
(self, parent, semi_axis, k_axes[, …])Initialize real-space self-energy calculator
clear
(self)Clears the internal arrays created in
initialize
green
(self, E[, k, dtype])Calculate the real-space Green function
initialize
(self)Initialize the internal data-arrays used for efficient calculation of the real-space quantities
real_space_coupling
(self[, ret_indices])Real-space coupling parent where sites fold into the parent real-space unit cell
real_space_parent
(self)Return the parent object in the real-space unfolded region
self_energy
(self, E[, k, bulk, coupling, dtype])Calculate the real-space self-energy
set_options
(self, \*\*options)Update options in the real-space self-energy
-
clear
(self)[source]¶ Clears the internal arrays created in
initialize
-
green
(self, E, k=(0, 0, 0), dtype=None, **kwargs)[source]¶ Calculate the real-space Green function
The real space Green function is calculated via:
\[\mathbf G^\mathcal{R}(E) = \sum_{\mathbf k} \mathbf G_{\mathbf k}(E)\]- Parameters
- Efloat/complex
energy to evaluate the real-space Green function at
- karray_like, optional
only viable for 3D bulk systems with real-space Green functions along 2 directions. I.e. this would correspond to a circular real-space Green function
- dtypenumpy.dtype, optional
the resulting data type, default to
np.complex128
- **kwargsdict, optional
arguments passed directly to the
self.parent.Pk
method (notself.parent.Sk
), for instancespin
-
initialize
(self)[source]¶ Initialize the internal data-arrays used for efficient calculation of the real-space quantities
This method should first be called after all options has been specified.
If the user hasn’t specified the
bz
value as an option this method will update the internal integration Brillouin zone based ondk
andtrs
options. The \(\mathbf k\) point sampling corresponds to the number of points in the non-folded system and thus the final sampling is equivalent to the sampling times the unfolding (per \(\mathbf k\) direction).
-
real_space_coupling
(self, ret_indices=False)[source]¶ Real-space coupling parent where sites fold into the parent real-space unit cell
The resulting parent object only contains the inner-cell couplings for the elements that couple out of the real-space matrix.
- Parameters
- ret_indicesbool, optional
if true, also return the atomic indices (corresponding to
real_space_parent
) that encompass the coupling matrix
- Returns
- parentparent object only retaining the elements of the atoms that couple out of the primary unit cell
- atom_indexindices for the atoms that couple out of the geometry (ret_indices)
-
self_energy
(self, E, k=(0, 0, 0), bulk=False, coupling=False, dtype=None, **kwargs)[source]¶ Calculate the real-space self-energy
The real space self-energy is calculated via:
\[\boldsymbol\Sigma^{\mathcal{R}}(E) = \mathbf S^{\mathcal{R}} E - \mathbf H^{\mathcal{R}} - \sum_{\mathbf k} \mathbf G_{\mathbf k}(E)\]- Parameters
- Efloat/complex
energy to evaluate the real-space self-energy at
- karray_like, optional
only viable for 3D bulk systems with real-space self-energies along 2 directions. I.e. this would correspond to circular self-energies.
- bulkbool, optional
if true, \(\mathbf S^{\mathcal{R}} E - \mathbf H^{\mathcal{R}} - \boldsymbol\Sigma^\mathcal{R}\) is returned, otherwise \(\boldsymbol\Sigma^\mathcal{R}\) is returned
- couplingbool, optional
if True, only the self-energy terms located on the coupling geometry (coupling_geometry) are returned
- dtypenumpy.dtype, optional
the resulting data type, default to
np.complex128
- **kwargsdict, optional
arguments passed directly to the
self.parent.Pk
method (notself.parent.Sk
), for instancespin
-
set_options
(self, **options)[source]¶ Update options in the real-space self-energy
After updating options one should re-call
initialize
for consistency.- Parameters
- etafloat, optional
imaginary part in the self-energy calculations (default 1e-4 eV)
- dkfloat, optional
fineness of the default integration grid, specified in units of Ang, default to 1000 which translates to 1000 k-points along reciprocal cells of length 1. Ang^-1.
- bzBrillouinZone, optional
integration k-points, if not passed the number of k-points will be determined using dk and time-reversal symmetry will be determined by trs, the number of points refers to the unfolded system.
- trsbool, optional
whether time-reversal symmetry is used in the BrillouinZone integration, default to true.