OzakiContour

class OzakiContour(number_of_poles=None)

An equilibrium contour using the Ozaki contour points and weights defined in [1].

Parameters:

number_of_poles (int) – The total number of poles to include in the calculation.

numberOfPoles()
Returns:

The number of poles.

Return type:

int

uniqueString()

Return a unique string representing the state of the object.

Usage Example

One can use the OzakiContour by defining it as an equilibrium contour. One has to supply the number of poles that will be used in the approximation.

equilibrium_contour = OzakiContour(number_of_poles=100)

To use it in a calculation of the equilibrium density matrix one has to set the equilibrium contour explicitly on the ContourParameters object,

contour_parameters = ContourParameters(equilibrium_contour=equilibrium_contour)

and save the contour_parameters on the DeviceCalculator (e.g. DeviceLCAOCalculator)

device_calculator = DeviceLCAOCalculator(contour_parameters=contour_parameters)

Notes

The OzakiContour presents a different approach to calculating the equilibrium density matrix \(D\) by integrating the Greens function \(G\),

\[D = \Im\left[-\frac{2}{\pi}\int_{-\infty}^{+\infty} dE f(E - \mu) G(E + i0^+)\right]~,\]

in which \(f(E)\) is the Fermi-Dirac distribution and \(\mu\) is the Fermi level.

This integral can be solved using the residue theorem:

\[\oint dz G(z) f(z) = - 2\pi i kT \sum_{z_\nu} G(z_\nu)\]

in which the sum on the right hand side runs over the poles of the integrant included in the contour.

The Ozaki method tries to solve this integral by representing the Fermi-Dirac distribution as a continued fraction. If the fraction is broken off at a certain level, say \(M\), the poles of this function can be found through the solution of a generalized eigenvalue problem of size \(M\). The accuracy increases as more poles are included.

More information can be found in the references [1], [2].