Name

calculateTransmissionEigenstates Calculates transmission eigenstates.

Synopsis

Namespace: ATK.TwoProbe
list calculateTransmissionEigenstates(
self_consistent_calculation,
energy,
quantum_numbers,
eigenvalue_moving,
eigenvalue_propagating,
energy_infinitesimal
)

Description

The function calculateTransmissionEigenstates() calculates and returns the transmission eigenstates \Psi_n(E,\mathbf{k},\sigma) corresponding to a given energy E and a given set of quantum numbers (n,\mathbf{k},\sigma).

The transmission eigenstates \Psi_n(E,\mathbf{k},\sigma) are calculated as the eigenvectors (expressed in real space) of the Hermitian matrix t^\dagger t, where t(E,\mathbf{k},\sigma) is the transmission matrix.

The states can be stored in a VNLFile for visualization.

List of arguments

self_consistent_calculation

An object returned from a previously performed self-consistent calculation for a TwoProbeConfiguration.

Default: None

energy

The energy E for which the transmission eigenstates are to be calculated.

Default: None

quantum_numbers

Sequence of quantum numbers (n, [\mathbf{k}_1,\mathbf{k}_2,\dots],\sigma) for which the transmission eigenstates are to be calculated (see below).

Default: None

eigenvalue_moving

Criteria to choose the moving mode in the calculation.

Default: 1.0E-13

eigenvalue_propagating

Criteria to choose the propagating mode in the calculation.

Default: 0.90

energy_infinitesimal

Scattering states infinitesimal used as the imaginary part of energy.

Default: 1.0E-5 * Units.eV

Returned object methods

Each item in the list corresponds to a particular eigenstate, and has the following query methods:

  • Array toArray(): Returns the real-space representation of the transmission eigenstate in the region defined by the central region plus one unit cell for both the left and right electrodes. The returned values are complex numbers in a NumPy array with dimensions (n1, n2, n3).

  • PhysicalUnit toUnit(): Returns the unit of the real-space representation of the eigenstate.

  • Tuple quantumNumber(): Returns the quantum numbers of the transmission eigenstate. The format of the quantum depends on the type of system (see below).

  • PhysicalQuantity eigenvalue(): Returns the (dimensionless) transmission eigenvalue of the transmission eigenstate.

Usage examples

from ATK.TwoProbe import *
...
# Define output on VNL file
vnl_file = VNLFile("myfile.vnl")
...
# Set the quantum numbers
index_list = [0, 1]
k_point_list =[(0.0,0.0), (0.0,0.3), (0.5,0.5)]
spin = Spin.Up
...
# Set up and perform calculations
self_consistent_calculation = executeSelfConsistentCalculation(
    atomic_configuration,
    twoprobe_method
    )
for index in index_list:
    transmission_eigenstate = calculateTransmissionEigenstates(
        self_consistent_calculation,
        energy = 0*electronVolt,
        quantum_numbers = (index, k_point_list, spin)
        )
    for k_index in range(len(k_point_list)):
            vnl_file.addToSample(transmission_eigenstate[k_index],"My Sample")

In this example for each of the three k-points (\mathbf{k}_1=(0.0,0.0), \mathbf{k}_2=(0.0,0.3), and \mathbf{k}_3=(0.5,0.5)) the first two transmission eigenstates with spin up are calculated. Then, the transmission eigenstates are stored for visualization in a VNLFile.

Notes

The energy is measured relative to the average Fermi level of the two electrodes. These Fermi levels are, in turn, aligned with the applied bias on each electrode. Note that this means that if the same bias is applied to both electrodes, the energy zero-level (and of course the entire transmission spectrum) is unchanged.

The quantum numbers depend on whether the system is spin-polarized or not, and should be specified according to the rules:

  • (index, [k_point_list], spin) for spin-polarized systems.

  • (index, [k_point_list]) for unpolarized systems.

where:

  • index is the transmission eigenvalue index (see calculateTransmissionEigenvalues()). The transmission eigenvalue index may assume any integer value within the range [0, N_{\rm eigenchannels}-1], where N_{\rm eigenchannels} indicates the number of eigenchannels which corresponds to non-vanishing transmission eigenvalues.

  • k_point_list is a list of two-dimensional, dimensionless coordinates representing a list of k-points in the 2D Brillouin zone of the unit cell transverse to the transport direction. The coordinates must be given in units of the reciprocal lattice vectors.

  • spin is the spin \sigma.

The dimensionality of the returned array corresponds to the number of elements in the quantum_numbers list.

Further examples