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.
List of arguments
Tuple containing the two electrodes, each defined as a PeriodicAtomConfiguration.
Default:
None
The elements (atoms) defining the scattering region.
Default:
None
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
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)]
A list of two tuples, containing the super-cell repetition factors for the electrodes.
Default: [(1,1),(1,1)]
Dictionary returned by pseudoPotentialParameters().
Default:
None
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).
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)) )
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).
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.
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.