# RealAxisContour¶

class RealAxisContour(real_axis_point_density=None, real_axis_infinitesimal=None, real_axis_kbt_padding_factor=None)

A non-equilibrium contour using the real axis contour points and weights defined in [gBMO+02].

Parameters: real_axis_point_density (PhysicalQuantity of type energy) – Spacing between the points on bias window integration line close to the real axis. Default: 0.001 * Hartree real_axis_infinitesimal (PhysicalQuantity of type energy) – Small imaginary shift of the bias window integration line from the real axis. Default: 0.001 * Hartree real_axis_kbt_padding_factor (float > 0.0) – The integration line is extended with the amount $$f k_b T$$ below and above the electrode Fermi levels where $$f$$ is this value. Default: 5.0
realAxisInfinitesimal()
Returns: The imaginary shift. PhysicalQuantity of type energy
realAxisKbtPaddingFactor()
realAxisPointDensity()
Returns: The spacing between the points. PhysicalQuantity of type energy

## Usage Example¶

One can use the RealAxisContour by defining it as an non-equilibrium contour

non_equilibrium_contour = RealAxisContour()


which constructs a RealAxisContour with all defaults. Alternatively, more parameters that alter the accuracy of the approximation can be specified, e.g.

non_equilibrium_contour = RealAxisContour(
real_axis_point_density=0.002*Hartree,
real_axis_infinitesimal=0.003*Hartree,


To use it in a calculation of a the density matrix for a system with finite bias, the NonEquilibriumContour object is passed to the ContourParameters object,

contour_parameters = ContourParameters(non_equilibrium_contour=non_equilibrium_contour)


and saved on the calculator

device_calculator = DeviceLCAOCalculator(contour_parameters=contour_parameters)


## Notes¶

If a system has a finite bias, the density matrix has both an equilibrium and a non-equilibrium contribution (See Notes):

$D_{\mu\nu} = D^L_{\mu\nu} + \Delta^R_{\mu\nu} = D^R_{\mu\nu} + \Delta^L_{\mu\nu}$

The RealAxisContour provides a method to solve the non-equilibrium part $$\Delta$$ through a numerical integration of:

$\Delta^R_{\mu\nu} = \int_{-\infty}^{+\infty} d\epsilon~\rho^L_{\mu\nu}(\epsilon)\left[ f(\epsilon -\mu_R) - f(\epsilon - \mu_L)\right]$

in which $$\rho^L$$ is the spectral density matrix. The integration is performed over the bias window, extended by the real_axis_kbt_padding_factor.

To increase the accuracy of the approximation the user can specify the real_axis_point_density.

Because of the finite accuracy of the approximation the left and right approaches to calculate the density matrix can lead to a different result. The integration error can be quantified by:

$e_{\mu\nu} = D^L_{\mu\nu} + \Delta^R_{\mu\nu} - (D^R_{\mu\nu} + \Delta^L_{\mu\nu})$

For ways to deal with this error see DoubleContour.