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 [1].
- 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.
- Return type:
PhysicalQuantity of type energy
- realAxisKbtPaddingFactor()¶
- Returns:
The padding factor.
- Return type:
float
- realAxisPointDensity()¶
- Returns:
The spacing between the points.
- Return type:
PhysicalQuantity of type energy
- uniqueString()¶
Return a unique string representing the state of the object.
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,
real_axis_kbt_padding_factor=10.0)
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):
The RealAxisContour provides a method to solve the non-equilibrium part \(\Delta\) through a numerical integration of:
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:
For ways to deal with this error see DoubleContour.
More information about this approach can be found in [1].