DoubleContourIntegralParameters — Class for representing the contour parameters when using a double contour.
The distance between the lowest Fermi-level to the lowest energy circle contour point.
Type: PhysicalQuantity with type energy
Default:
1.5*Hartree
The eccentricity of the circle contour, 0 -> circle, 1 -> line.
Type: float > 0.0
Default:
0.3
Logarithmic bunching of the circle contour points, 0 -> no bunching, 1 -> all bunched.
Type: float > 0.0
Default:
0.3
The number of points on the circle contour.
Type: int > 2
Default:
30
Spacing between the points on bias window integration line close to the real axis.
Type: PhysicalQuantity of type energy
Default:
0.001*Hartree
Small imaginary shift of the bias window integration line from the real axis.
Type: PhysicalQuantity of type energy
Default:
0.001*Hartree
The integration line is extended with the amount real_axis_kbt_padding_factor*k_b*T below and above the electrode Fermi levels.
Type: float > 0.0
Default:
5.0
The number of points on the line from the Fermi energy level up to infinity.
Type: int > 0
Default:
11
The number of poles the Fermi function should have between the Fermi energy level and infinity.
Type: int > 0
Default:
4
A DoubleContourIntegralParameters object provides the following methods:
This object supports cloning. See the section called “Cloning of ATK Python objects”.
circleEccentricity(): Return the eccentricity of circle contour, 0 -> circle, 1 -> line.
circlePoints(): Return the number of points on the circle contour.
fermiFunctionPoles(): The number of poles, the Fermi function should have between the Fermi energy level and infinity.
fermiLinePoints(): The number of points on the line from the Fermi energy level up to infinity.
integralLowerBound(): Return the distance from the lowest Fermi-level to the lowest energy circle contour point.
logarithmicBunching(): Return the logarithmic bunching of the circle contour points, 0 -> no bunching, 1 -> all points close to upper circle contour point.
realAxisInfinitesimal(): Return the complex shift of the the non-equilibrium integration line above the real axis.
realAxisKbtPaddingFactor(): Return the scaling of k_b*T used for extending the line integration line below and above the electrode Fermi levels.
realAxisPointDensity(): Return the density of the points on the non-equilibrium integration line.
Define the most important DoubleContourIntegralParameters
contour_parameters = DoubleContourIntegralParameters(
integral_lower_bound = 5.*Hartree,
circle_points = 30,
real_axis_point_density = 0.002*eV,
real_axis_infinitesimal=1e-05*eV
)
The double contour calculates both a left and right single contour and perform a mixing of the contour integrals to obtain an accurate and reliable calculation of the Density Matrix at finite bias. The scheme is related to the contour mixing scheme in [2],[28], and can handle systems where there are bound states in the bias window.
The left and right SingleContourIntegralParameters gives two
equivalent estimates of the total density matrix (
), i.e. for a left contour we have
and for a right contour we have
where
,(
) are the equilibrium Density Matrix integrated to the left
(right) Fermi Level, and
(
) the
non-equilibrium Density Matrix from states in the left (right)
electrode integrated between the two Fermi levels.
See the section called “Notes” for single contours for more information on the left and right single contours.
In the following we describe the weighting scheme for the left and right Density Matrix.
Calculate the non-equilibrium atom Mulliken populations
From the
coefficients, calculate the weights
The weighted estimate for the Density Matrix is then
This weighting scheme optimizes at each site, that a maximum part of the Density Matrix is obtained from the equilibrium part. Since the equilibrium part of the Density Matrix is calculated from a complex contour it is usually much more accurate than the non-equilibrium part.
Assume the right Fermi level is higher than the left
Fermi level, then a bound state in the bias window will only be included in
. The occupation of the bound state is then given by
, which favors occupation of bound states at sites that are strongly
connected with the right electrode. This is similar to the scheme proposed in [28]