Name

calculateSpinCurrent Calculate the spin current for a two-probe system for a given set of bias voltages using the linear-response approximation.

Synopsis

Namespace: ATK.Consortia
PhysicalQuantity calculateSpinCurrent(
self_consistent_calculation,
voltages,
brillouin_zone_integration_parameters,
green_function_infinitesimal,
number_of_points
)

Description

The function calculateSpinCurrent calculates the spin current in a two-probe system for a given set of bias voltages, using the linear-response approximation. The spin current is calculated as the difference between the linear-response current for spin-up and spin-down electrons. For more details about the linear-response approximation, please see calculateLinearResponseCurrent.

List of arguments

self_consistent_calculation

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

Default: None

voltages

Values of voltages where each entry is in units of Volt. The voltage is symmetrically superimposed on the chemical potentials in the electrodes. For example, in the specific case of a positive value of the voltage V, the superimposed voltages are -V/2 and +V/2 on the left and right electrodes, respectively.

Default: None

brillouin_zone_integration_parameters

The k-point sampling used for integrating the transmission spectrum in the 2D Brillouin zone transverse to the transport direction.

Default: brillouinZoneIntegrationParameters((1,1))

green_function_infinitesimal

The imaginary infinitesimal added to the energy of the retarded Green's function.

Default: 1.0e-5*eV

number_of_points

The number of energy-points used for the integration.

Default: 100

Returned object methods

The function calculateSpinCurrent returns a NumPy Array of dimension len(voltages), holding the spin current corresponding to the input bias voltages. Each element of the array is a PhysicalQuantity with units of Ampere.

Please see ATK.Units for the query methods of a PhysicalQuantity.

Usage examples

from ATK.TwoProbe import *
from ATK.Consortia import MSM

scf = restoreSelfConsistentCalculation('myfile.nc')
bz_params = brillouinZoneIntegrationParameters((1,1))
voltages = [-0.10,-0.05, 0.00, 0.05,
             0.10, 0.15, 0.20, 0.25] * Units.Volt

spin_current = calculateSpinCurrent(
    scf,
    voltages,
    bz_params)

for entry in zip(voltages,spin_current):
    print entry[0], entry[1]

Notes

The default k-point sampling (Γ point only) is a crude approximation if the electrodes are three-dimensional (e.g. Au fcc), however, it is completely sufficient if the electrodes are effectively one-dimensional (atomic chain, carbon nanotube, etc).

For high bias voltages the linear-response approximation is no longer valid.