calculateRetardedGreenFunction¶
- calculateRetardedGreenFunction(device_configuration, energy=PhysicalQuantity(0.0, eV), kpoint=None, spin=None, eta=PhysicalQuantity(1e-06, Hartree), self_energy_calculator=None)¶
Calculate the Retarded Green’s Function.
- Parameters:
device_configuration (
DeviceConfiguration
|SurfaceConfiguration
) – The configuration to use for the calculation.energy (PhysicalQuantity of type energy) – Absolute energy for the calculation Default:
0.0 * eV
kpoint (tuple of floats) – The kpoint as three floats representing fractional reciprocal space coordinates. Default: The Gamma point
(0.0, 0.0, 0.0)
spin (
Spin.Up
|Spin.Down
|Spin.All
) – The spin component for which to perform the calculation. Default:Spin.All
eta (PhysicalQuantity of type energy) – Complex energy for electrode transform matrices, imaginary part. Default:
1.0e-6 * Hartree
self_energy_calculator (
RecursionSelfEnergy
|DirectSelfEnergy
|KrylovSelfEnergy
|SparseRecursionSelfEnergy
) – The self energy evaluation strategy to use. Default: A defaultRecursionSelfEnergy
instance.
- Returns:
The Green’s Function as an array
- Return type:
PhysicalQuantity in units of inverse energy
Usage Examples¶
Calculate the retarded Green’s function for a DeviceConfiguration:
energy=1.0*eV
green_function = calculateRetardedGreenFunction(device_configuration, energy)
Equivalent calculation using basic variables, \(H\), \(S\)
energy=1.0*eV
H,S = calculateHamiltonianAndOverlap(device_configuration)
S_L = calculateSelfEnergy(device_configuration, energy, contribution=Left)
S_L = S_L.inUnitsOf(Hartree)
S_R = calculateSelfEnergy(device_configuration, energy, contribution=Right)
S_R = S_R.inUnitsOf(Hartree)
# Setup E*S-H-S_L-S_R
lhs = energy.inUnitsOf(Hartree)*S-H.inUnitsOf(Hartree)
n = S_L.shape[0]
lhs[:n,:n] -= S_L
n = S_R.shape[0]
lhs[-n:,-n:] -= S_R
# Do the inverse
green_function = numpy.linalg.inv(lhs)*Hartree
Notes¶
Calculates the Fourier transformed retarded Green’s function of a device. The retarded Green’s function is given by
\[G^{r}(E,{\bf k}) = [(E S({\bf k}) - H({\bf k}) - \Sigma^L(E+i\eta,{\bf k})-\Sigma^R(E+i\eta, {\bf k})]^{-1},\]where \(S\) is the overlap matrix, \(H\) Hamiltonian, and \(\Sigma^L, \Sigma^R\) are the left and right self energies.
The calculator assigned to the device must be density matrix-based for this function to perform successfully.
Consider Spin for details on how to handle the spin parameter.