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:
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.