TransmissionEigenstate

class TransmissionEigenstate(configuration=None, energy=None, k_point=None, quantum_number=None, spin=None, contributions=None, energy_zero_parameter=None)

Class for representing the transmission eigenstate for a given configuration and calculator. Noncollinear and Spin-Orbit spin is currently not supported by TransmissionEigenstate.

Parameters:
  • configuration (DeviceConfiguration) – The device configuration with attached calculator for which the transmission eigenstate should be calculated.

  • energy (PhysicalQuantity of type energy) – The energy for which the transmission eigenstate should be calculated.
    Default: 0.0*eV

  • k_point (list of two floats.) – The 2-dimensional k-point in fractional coordinates for which the transmission eigenstate should be calculated (x,y), e.g. [0.8, 0.2].
    Default: [0.0, 0.0]

  • quantum_number (integer) – The quantum number of the desired eigenstate.
    Default: 0

  • spin (Spin.Up | Spin.Down | Spin.All) – The spin to be used for the transmission eigenstate calculation.
    Default: Spin.All

  • contributions (Left | Right) – The initial state electrode of the transmission eigenstate.
    Default: Left

  • energy_zero_parameter (AverageFermiLevel | AbsoluteEnergy.) – Specifies the choice for the energy zero.
    Default: AverageFermiLevel

absolute()
Returns:

A new grid containing the absolute values (or modulus) of the current field.

Return type:

GridValues

axisProjection(projection_type='sum', axis='c', spin=None, projection_point=None, coordinate_type=<class 'NL.ComputerScienceUtilities.NLFlag._NLFlag.Fractional'>)

Get the values projected on one of the grid axes.

Parameters:
  • projection_type (str) –

    The type of projection to perform. Should be either
    • ’sum’ for the sum over the plane spanned by the two other axes.

    • ’average’ or ‘avg’ for the average value over the plane spanned by the two other axes.

    • ’line’ for the value along a line parallel to the axis and through a point specified by the projection_point parameter.


    Default: ‘sum’

  • axis (str) – The axis to project the data onto. Should be either ‘a’, ‘b’ or ‘c’.
    Default: ‘c’

  • spin (Spin.Sum | Spin.Z | Spin.X | Spin.Y | Spin.Up | Spin.Down | Spin.RealUpDown | Spin.ImagUpDown) – Which spin component to project on.
    Default: Spin.All

  • projection_point (sequence, PhysicalQuantity) – Axis coordinates of the point through which to take a line if projection_type is ‘projection_point’. Must be given as a sequence of three coordinates [a, b, c]. It the numbers have units of length, they are first divided by the length of the respective primitive vectors [A, B, C], and then interpreted as fractional coordinates. Unitless coordinates are immidiately interpreted as fractional.

  • coordinate_type (Fractional | Cartesian) – Flag to toggle if the returned axis values should be given in units of Angstrom (NLFlag.Cartesian) or in units of the norm of the axis primitive vector (NLFlag.Fractional).
    Default: Fractional

Returns:

A 2-tuple of 1D numpy.arrays containing the axis values and the projected data. For Cartesian coordinate type the grid offset is added to the axis values.

Return type:

tuple.

contributions()
Returns:

The contributions used in the transmission eigenstate calculation.

Return type:

Left | Right

derivatives(x, y, z, spin=None)

Calculate the derivative of the transmission eigenstate wave function in the point (x, y, z).

Parameters:
  • x (PhysicalQuantity with type length.) – The Cartesian x coordinate.

  • y (PhysicalQuantity with type length.) – The Cartesian y coordinate.

  • z (PhysicalQuantity with type length.) – The Cartesian z coordinate.

  • spin (Spin.All | Spin.Up | Spin.Down) – The spin component to project on.
    Default: The spin this TransmissionEigenstate object was calculated for.

Returns:

The gradient at the specified point for the given spin. For Spin.All, a tuple with (Spin.Up, Spin.Down) components is returned if the calculation is not unpolarized.

Return type:

PhysicalQuantity of type energy-1/2 × length-5/2

downsample(downsampling_a=None, downsampling_b=None, downsampling_c=None)

Generate a new GridValues object where the grid is downsampled. Along periodic directions an FFT downsampling is performed. Along non-periodic directions antialiasing and downsampling is performed.

Parameters:
  • downsampling_a (int) – The new number of grid points along the A direction.
    Default: No downsampling.

  • downsampling_b (int) – The new number of grid points along the B direction.
    Default: No downsampling.

  • downsampling_c (int) – The new number of grid points along the C direction.
    Default: No downsampling.

electrodeFermiLevels()
Returns:

The left and right electrodes Fermi levels in absolute energies.

Return type:

PhysicalQuantity

energy()
Returns:

The energy used in this transmission eigenstate calculation.

Return type:

PhysicalQuantity of type energy

energyZero()
Returns:

The energy zero value.

Return type:

PhysicalQuantity of type energy

energyZeroParameter()
Returns:

The specified choice for the energy zero.

Return type:

AverageFermiLevel | AbsoluteEnergy

evaluate(x, y, z, spin=None)

Evaluate the transmission eigenstate wave function in the point (x, y, z).

Parameters:
  • x (PhysicalQuantity with type length.) – The Cartesian x coordinate.

  • y (PhysicalQuantity with type length.) – The Cartesian y coordinate.

  • z (PhysicalQuantity with type length.) – The Cartesian z coordinate.

  • spin (Spin.All | Spin.Up | Spin.Down) – The spin component to project on.
    Default: The spin this TransmissionEigenstate object was calculated for.

Returns:

The value at the specified point for the given spin. For Spin.All, a tuple with (Spin.Up, Spin.Down) components is returned if the calculation is not unpolarized.

Return type:

PhysicalQuantity of type energy-1/2 × length-3/2

gridCoordinate(i, j, k)

Return the coordinate for a given grid index.

Parameters:
  • i (int) – The grid index in the A direction.

  • j (int) – The grid index in the B direction.

  • k (int) – The grid index in the C direction.

Returns:

The Cartesian coordinate of the given grid index.

Return type:

PhysicalQuantity of type length.

kPoint()
Returns:

The two-dimensional fractional k-point used in this transmission eigenstate calculation.

Return type:

list of two floats

metatext()
Returns:

The metatext of the object or None if no metatext is present.

Return type:

str | None

nlinfo()
Returns:

The information.

Return type:

dict

nlprint(stream=None)

Print a string containing an ASCII table useful for plotting the AnalysisSpin object.

Parameters:

stream (python stream) – The stream the table should be written to.
Default: NLPrintLogger()

primitiveVectors()
Returns:

The primitive vectors of the grid.

Return type:

PhysicalQuantity of type length.

quantumNumber()
Returns:

The quantum number - the requested transmission state.

Return type:

int

scale(scale)

Scale the field with a float.

Parameters:

scale (float) – The parameter to scale with.

setMetatext(metatext)

Set a given metatext string on the object.

Parameters:

metatext (str | None) – The metatext string that should be set. A value of “None” can be given to remove the current metatext.

shape()
Returns:

The number of grid points in each direction.

Return type:

tuple of three int.

spin()
Returns:

The spin the transmission eigenstate is calculated for.

Return type:

Spin.Up | Spin.Down | Spin.All

spinProjection(spin=None)

Construct a new GridValues object with the values of this object projected on a given spin component.

Parameters:

spin (Spin.All | Spin.Sum | Spin.X | Spin.Y | Spin.Z | Spin.Up | Spin.Down | Spin.RealUpDown | Spin.ImagUpDown) – The spin component to project on.
Default: The spin the object was created with. If the spin was Spin.All, Spin.Sum will be used for the projection.

Returns:

A new GridValues object for the specified spin.

Return type:

GridValues

toArray()
Returns:

The values of the grid as a numpy array slicing off any units.

Return type:

numpy.array

uniqueString()

Return a unique string representing the state of the object.

unit()
Returns:

The unit of the data in the grid.

Return type:

A physical unit.

unitCell()
Returns:

The unit cell of the grid.

Return type:

PhysicalQuantity of type length.

volumeElement()
Returns:

The volume element of the grid represented by three vectors.

Return type:

PhysicalQuantity of type length.

Usage Examples

Calculate the TransmissionEigenstate for a DeviceConfiguration and save the results for visualization with QuantumATK:

eigenstates = TransmissionEigenstate(device_configuration, 0.0*eV, quantum_number=0)
nlsave('eigenstate.nc',eigenstates)
../../../_images/transmission_eigenstate.png

Fig. 173 Spin up component of the transmission eigenstates of a graphene ribbon with a wedge. The transmission eigenstate is a complex 3D wave function and is illustrated by an isosurface with isovalue given by the magnitude of the eigenstate and the color maps the phase of the eigenstate.

For examples on working with 3D grids, see HartreePotential and ElectronDensity.

Notes

The TransmissionEigenstate is an analysis option which finds the eigenstates of the transmission matrix. The transmission matrix is given by

\[T_{nm} = \sum_k t_{nk} t^\dagger_{km},\]

where \(t_{nk}\) is the transmission amplitude from Bloch state \(\psi_n\) in the left electrode to Bloch state \(\psi_k\) in the right electrode. The transmission coefficient is given by the trace of the transmission matrix,

\[T = \sum_n T_{nn}.\]

The transmission eigenstates are obtained by propagating the linear combination of the Bloch states, \(\sum_n e_{\alpha,n} \psi_n\), where \(e_{\alpha,n}\) diagonalize the transmission matrix,

\[\sum_m T_{nm}e_{\alpha,m}= \lambda_\alpha e_{\alpha,n},\]

with transmission eigenvalue \(\lambda_\alpha\).

See also, TransmissionEigenvalues and LocalDeviceDensityOfStates.