twoProbeAlgorithmParameters — Defines the parameters of the algorithm for the two-probe calculation.
The function twoProbeAlgorithmParameters() returns a dictionary with the parameters that define the algorithm for the two-probe calculation.
List of arguments
The type of constraint imposed on the electrodes.
Default: ElectrodeConstraints.Off
The type of electron density which is chosen as initial guess for the calculation.
Default: InitialDensityType.EquivalentBulk
This could be a typical example of a script where the user defines a set up for a TwoProbeMethod with a constraint on the real-space density in the electrodes.
from ATK.TwoProbe import * electrode_parms = ElectrodeParameters(brillouinZoneIntegrationParameters(1,1,100)) ... constrained_algorithm = twoProbeAlgorithmParameters( electrode_constraint = ElectrodeConstraints.RealSpaceDensity ) constrained_method = TwoProbeMethod( (electrode_parms,electrode_parms), algorithm_parameters = constrained_algorithm )
The function twoProbeAlgorithmParameters() can be also used to restart an unconstrained calculation after performing a constrained calculation. In the next, a script is shown for a calculation on a two-probe system performing first a constrained and afterwards an unconstrained self-consistent calculation.
from ATK.TwoProbe import * two_probe_configuration = VNLFile('two_probe_system.vnl').readAtomicConfigurations()['TwoProbe'] electrode_parms = ElectrodeParameters(brillouinZoneIntegrationParameters((1,1,100)) constrained_algorithm = twoProbeAlgorithmParameters( electrode_constraint = ElectrodeConstraints.RealSpaceDensity ) method = TwoProbeMethod( (electrode_parms,electrode_parms), algorithm_parameters = constrained_algorithm ) scf = method.apply(two_probe_configuration) new_unconstrained_algorithm = twoProbeAlgorithmParameters( electrode_constraint = ElectrodeConstraints.Off ) new_method = TwoProbeMethod( (electrode_parms,electrode_parms), algorithm_parameters = new_unconstrained_algorithm) new_scf = executeSelfConsistentCalculation( atomic_configuration = two_probe_configuration, method = newmethod, initial_calculation = scf )
The next example shows how to perform a self-consistent two-probe calculation which uses as initial guess for the electron density the superposition of atomic electron densities and an unconstrained algorithm.
from ATK.TwoProbe import * two_probe_configuration = VNLFile('two_probe_system.vnl').readAtomicConfigurations()['TwoProbe'] electrode_parms = ElectrodeParameters(brillouinZoneIntegrationParameters(1,1,100)) ... algorithm_parms = twoProbeAlgorithmParameters( electrode_constraint = ElectrodeConstraints.Off, initial_density_type = InitialDensityType.NeutralAtom ) method = TwoProbeMethod( (electrode_parms,electrode_parms), algorithm_parameters = algorithm_parms ) scf = method.apply(two_probe_configuration)
The variable electrode_constraint
can assume only one of the following values:
ElectrodeConstraints.Off
The calculation is performed without constraints on the electrodes.
ElectrodeConstraints.RealSpaceDensity
The real-space density in the electrode region is constrained to be identical to the one of the bulk calculation for the electrodes.
Further details about the appropriate setting of the variable
electrode_constraint
for two-probe calculations
can be found in the
Tips and Tricks appendix
of this manual.
The variable initial_density_type
can assume only one of the following values:
InitialDensityType.EquivalentBulk
The initial density is derived from a self-consistent calculation for the equivalent bulk system of the two-probe system.
InitialDensityType.NeutralAtom
The initial density is obtained as a superposition of the atomic electron densities of the atoms in the two-probe system.
Further details about the appropriate setting of the variable
initial_density_type
for two-probe calculations
can be found in the
Tips and Tricks appendix
of this manual.
When the variable initial_density_type
is set to InitialDensityType.EquivalentBulk
,
all the basic parameters taken for the self-consistent calculation for
the equivalent bulk are the same as the ones chosen for the two-probe
calculation, with the following exceptions:
Sampling of the Brillouin zone.
The k-point sampling in the transverse
direction
is taken as the same used for specifying the electrodes. Along the
longitudinal
direction only one k-point is used.
For example, if the k-point sampling for the electrodes is chosen to
be (5,8,40)
for the left electrode and
(5,8,25)
for the right electrode,
then, the k-point sampling taken for the equivalent bulk system is
(5,8,1)
.
Note
that both the left and right electrodes
must
have the same number of k-points in
the transversely directions,
Eigenstate occupation parameters.
The electron temperature
for the equivalent bulk
calculation
is taken as the average between the electron temperatures chosen for the
left and right electrodes.
Electron density parameters: Initial scaled spin.
If an initial spin configuration for polarized system is given, the
initial_scaled_spin
configuration
for the left and right electrodes
is appended to the one specified for the central region.