Name

TwoProbeConfiguration The TwoProbeConfiguration class is used to construct a two-probe system, which consist of two, not necessarily identical, semi-infinite electrodes and a central scattering region containing e.g. a molecule, an interface, or a nanotube.

Synopsis

Namespace: ATK.TwoProbe
Object TwoProbeConfiguration(
(electrode,electrode),
scattering_region_elements,
scattering_region_cartesian_coordinates,
equivalent_atoms,
electrode_repetitions,
pseudopotential_parameters
)

Description

List of arguments

(electrode,electrode)

Tuple containing the two electrodes, each defined as a PeriodicAtomConfiguration.

Default: None

scattering_region_elements

The elements (atoms) defining the scattering region.

Default: None

scattering_region_cartesian_coordinates

A list of tuples, each containing the Cartesian coordinates of an atom in the scattering region. The length and order of the list must match the scattering_region_elements list.

Default: None

equivalent_atoms

A list of two tuples containing a pair of atom identification numbers, [ (id_number_left_electrode,id_number_scattering_region), (id_number_right_electrode,id_number_scattering_region) ], specifying the alignment of the scattering region and electrodes. For a detailed description of two-probe alignment, see the note on equivalent atoms below.

Default: [(0,0),(-1,-1)]

electrode_repetitions

A list of two tuples, containing the super-cell repetition factors for the electrodes.

Default: [(1,1),(1,1)]

pseudopotential_parameters

Dictionary returned by pseudoPotentialParameters().

Default: None

Returned object methods

A TwoProbeConfiguration has the following member functions:

  • Array cartesianCoordinates(): Returns a NumPy array containing the Cartesian coordinates of the atoms in the TwoProbeConfiguration.

  • List elements(): Returns the elements of each atom in the system.

  • Tuple electrodes() tuple containing the PeriodicAtomConfiguration object representing the electrodes.

  • Object equivalentBulkSystem() : Returns a PeriodicAtomConfiguration object representing the central region (both electrodes and scattering region).

Usage examples

from ATK.TwoProbe import *

electrode = PeriodicAtomConfiguration(...)
two_probe=TwoProbeConfiguration(
    (electrode, electrode),
    3*[PeriodicTable.Li]+2*[PeriodicTable.H]+3*[PeriodicTable.Li],
    [(0.0, 0.0,-8.568),
     (0.0, 0.0,-5.668),
     (0.0, 0.0,-2.768),
     (0.0, 0.0,-0.402), 
     (0.0, 0.0, 0.402),
     (0.0, 0.0, 2.768),
     (0.0, 0.0, 5.668),
     (0.0, 0.0, 8.568)]*Ang,
    equivalent_atoms=((0, 0), (3, 7))
    )

Notes

  • If the system is to be considered as homogeneous (i.e. the electrodes are identical), the same object (i.e. program variable) must be used when specifying both electrodes. Otherwise, the system will be considered heterogeneous. While this in principle should have no influence on the results, experience shows that small systems take longer time to converge if heterogeneous electrodes are used. Here, "identical electrodes" should be understood as two electrodes where the atoms and their positions are identical within a translation along the transport direction (the z-axis).

  • Equivalent atoms

    • The alignment of a composite two-probe system

      The composite two-probe system is created by aligning the scattering region with the two electrodes. The alignment between the left electrode and the scattering region is achieved identifying a pair of atoms (the first atom belongs to the left electrode and the second one to the scattering region) which are indicated as equivalent atoms. The equivalent atom pairs are explicitly indicated by the tuple (id_number_left_electrode,id_number_scattering_region). When the composite two-probe system is created, the scattering region is translated as a whole in such a way that the second atom in the equivalent atom pair is placed at the position which is obtained by displacing the first atom in the pair by the left-electrode unit-cell vector along the transport direction.

      After that, the right electrode is aligned with the rest of the system using a similar second pair (id_number_right_electrode,id_number_scattering_region) of equivalent atoms. Similarly to the left electrode, the right electrode is aligned such that these two atoms would coincide if the right electrode was translated by the right-electrode unit-cell vector towards the scattering region.

      See Figure 66 for an example of alignment of a composite two-probe system.

      Upper panel: Example for the constituents of a composite two-probe system. Note that the equivalent atoms to be aligned are indicated by the dark red (blue) circles filled with yellow (pink), for the left (right) electrode and the scattering region. The labeling of the atoms follows the order of the lists containing their Cartesian coordinates. The atoms in the scattering region labeled by 6 and 0 (5) represent the padding layers for the left (right) electrode. l and r are the electrode unit-cell vectors along the transport direction. Middle panel: The alignment of the two-probe system corresponding to the choice [(3,0),(0,5)] for the equivalent atoms. Lower panel: The (periodically-repeated) two-probe system generated with the [(3,0),(0,5)] choice for the equivalent atoms. The unit cell corresponding to the equivalent bulk is also shown as delimited by the thin black solid line.

      Figure 66: Upper panel: Example for the constituents of a composite two-probe system. Note that the equivalent atoms to be aligned are indicated by the dark red (blue) circles filled with yellow (pink), for the left (right) electrode and the scattering region. The labeling of the atoms follows the order of the lists containing their Cartesian coordinates. The atoms in the scattering region labeled by 6 and 0 (5) represent the padding layers for the left (right) electrode. l and r are the electrode unit-cell vectors along the transport direction. Middle panel: The alignment of the two-probe system corresponding to the choice [(3,0),(0,5)] for the equivalent atoms. Lower panel: The (periodically-repeated) two-probe system generated with the [(3,0),(0,5)] choice for the equivalent atoms. The unit cell corresponding to the equivalent bulk is also shown as delimited by the thin black solid line.


    • How to define equivalent atoms

      Equivalent atoms are specified using the parameter equivalent_atoms, which is given as a list of two tuples, each of them containing a pair of atom identification numbers, e.g. considering the script snippet presented above the parameter is set to [(0,0),(3,7)]. In this example, the first tuple (0,0) indicates that the first listed atom (labeled as 0) in the left electrode is equivalent to the first listed atom (labeled also as 0) in the scattering region. Similarly, the second tuple (3,7) means that the 8'th atom (labeled as 7) of the scattering region is equivalent to the fourth one (labeled as 3) in the right electrode.

    • Default values: [(0,0),(-1,-1)]

      The default values of equivalent_atoms correspond to letting the first atom in the left electrode list correspond to the first atom of the scattering region list, and the last atom (referred to as atom number -1) of the right electrode list correspond to the last (-1) atom of the scattering region list. Notice that the identification numbers of atoms in a list in ATK always start from the value 0, and that the identification number -1 refers to the last atom of the list.

  • The electrode_repetitions keyword can be used to specify an electrode super-cell. The corresponding k-point sampling of the non-repeated electrode cell is automatically calculated by ATK.

  • The pseudopotential_parameters may be specified in two different ways:

    • A single dictionary, as returned directly by pseudoPotentialParameters().

    • A list of such dictionaries, in order to define individual pseudo-potential parameters for different elements.

    For more information, see pseudoPotentialParameters().

  • The order by which the electrodes are given determines the order in which the electrode voltages (bias) should be passed to either executeSelfConsistentCalculation() or TwoProbeMethod.