Name

twoProbeAlgorithmParameters Defines the parameters of the algorithm for the two-probe calculation.

Synopsis

Namespace: ATK.TwoProbe
dictionary twoProbeAlgorithmParameters(
electrode_constraint,
initial_density_type
)

Description

The function twoProbeAlgorithmParameters() returns a dictionary with the parameters that define the algorithm for the two-probe calculation.

List of arguments

electrode_constraint

The type of constraint imposed on the electrodes.

Default: ElectrodeConstraints.Off

initial_density_type

The type of electron density which is chosen as initial guess for the calculation.

Default: InitialDensityType.EquivalentBulk

Usage examples

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)

Notes

  • 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.