ContourParameters¶
- class ContourParameters(equilibrium_contour=None, non_equilibrium_contour=None, method=None)¶
Generic object representing the contour segments to use in a device calculation.
- Parameters:
equilibrium_contour (
OzakiContour
|SemiCircleContour
) – The equilibrium contour to use.non_equilibrium_contour (
RealAxisContour
) – The non-equilibrium contour to use.method (
SingleContour
|DoubleContour
) – The contour method to use, either a single contour or a double contour. Default:DoubleContour
for finite bias,SingleContour
for zero bias.
- equilibriumContour()¶
- Returns:
The equilibrium contour.
- Return type:
- method()¶
- Returns:
The contour method used.
- Return type:
- nonEquilibriumContour()¶
- Returns:
The non-equilibrium contour.
- Return type:
- uniqueString()¶
Return a unique string representing the state of the object.
Usage Example¶
The ContourParameters class sets the contours used to calculate the density matrix. Both the equilibrium and non-equilibrium contour can be specified, e.g. to combine an OzakiContour with a RealAxisContour:
equilibrium_contour = OzakiContour(number_of_poles=128)
non_equilibrium_contour = RealAxisContour(
real_axis_point_density=0.002*Hartree,
real_axis_infinitesimal=0.003*Hartree,
real_axis_kbt_padding_factor=10.0)
contour_parameters = ContourParameters(
equilibrium_contour=equilibrium_contour,
non_equilibrium_contour=non_equilibrium_contour)
The keyword method
is used to specify how to deal with the numerical inaccuracy
which causes a discrepancy between the left and right approach to obtain the density matrix, e.g.:
contour_parameters = ContourParameters(
method=SingleContour(direction=Left))
will only calculate the Left part (see SingleContour). If the DoubleContour option is specified:
contour_parameters = ContourParameters(method=DoubleContour())
the left and right parts are both calculated and added up with a special weighting to obtain the best result (See DoubleContour).
Notes¶
The ContourParameters object specifies the contour points for integrating the density matrix in a DeviceConfiguration with or without bias.
The equilibrium part of the density matrix is obtained by integrating up to the left (right) Fermi level \(\mu_{L(R)}\):
in which \(f(E-\mu)\) is the Fermi-Dirac distribution.
The equilibrium density matrix is calculated with an EquilibriumContour
method.
At zero bias \(D^L\) and \(D^R\) yield identical results.
The non-equilibrium contribution to the density matrix is
calculated using a NonEquilibriumContour
method,
which integrates the spectral density matrix from states in the left (right) electrode
between the two Fermi levels:
in which \(\rho^{L(R)}\) is the left (right) spectral density matrix.
It follows there are two equivalent ways to calculate the total density matrix \(D\):
When there is a finite bias in the system both expressions yield different estimates
for the density matrix due to the finite accuracy of the integration.
The method
parameter determines how the density matrix is obtained from both expressions.