Name

DeviceAlgorithmParameters — Class for representing algorithm parameters relevant for the device calculation.

Synopsis

Namespace: NanoLanguage
DeviceAlgorithmParameters(
initial_density_type,
electrode_constraint,
self_energy_calculator_real,
self_energy_calculator_complex,
non_equilibrium_method
)

Description

Constructor for the DeviceAlgorithmParameters class.

DeviceAlgorithmParameters Arguments

initial_density_type

Select the method used for constructing the initial density.

Type: EquivalentBulk | NeutralAtom

Default: DeviceHuckelCalculator: NeutralAtom DeviceLCAOCalculator: EquivalentBulk(electrode_constraint_length=10*Angstrom)
electrode_constraint

Constrain system variables to bulk values within electrode_constraint_length from the electrodes.

Type: ElectrodeConstraint.Off | ElectrodeConstraint.DensityMatrix

Default: ElectrodeConstraint.Off
self_energy_calculator_real

The SelfEnergyCalculator that should be used for calculating the real energies in the contour integral.

Type: RecursionSelfEnergy | KrylovSelfEnergy | DirectSelfEnergy

Default: KrylovSelfEnergy()
self_energy_calculator_complex

The SelfEnergyCalculator that should be used for calculating the complex energies in the contour integral.

Type: RecursionSelfEnergy

Default: RecursionSelfEnergy()
non_equilibrium_method

The density matrix method employed in the real part of the contour integration.

Type: GreensFunction | ScatteringStates

Default: GreensFunction()

DeviceAlgorithmParameters Methods

A DeviceAlgorithmParameters object provides the following methods:

  • This object supports cloning. See the section called “Cloning of ATK Python objects”.

  • electrodeConstraint(): Return the type of the electrode constraint.

  • initialDensityType(): Return the initial density type.

  • nonEquilibriumMethod(): Return the non-equilibrium method for the real contour integration.

  • selfEnergyCalculatorComplex(): Return the self energy calculator for the complex energies.

  • selfEnergyCalculatorReal(): Return the self energy calculator for the real energies.

Usage Examples

Setup a non-self-consistent calculation with an equivalent bulk initial density.

device_algorithm_parameters = DeviceAlgorithmParameters(
    initial_density_type = EquivalentBulk(electrode_constraint_length = 7.*Ang))

calculator = DeviceHuckelCalculator(
    device_algorithm_parameters = device_algorithm_parameters,
    iteration_control_parameters = NonSelfconsistent,
    )

Use a RecursionSelfEnergy for the real axis contour integral

device_algorithm_parameters = DeviceAlgorithmParameters(
    self_energy_calculator_real = RecursionSelfEnergy(save_self_energies=False)
    )

calculator = DeviceHuckelCalculator(
    device_algorithm_parameters = device_algorithm_parameters,
    electrode_voltages = (-0.5,0.5)*Volt
    )

Notes

The initial_density_type is only used for setting up the starting guess for the self-consistent loop, while the electrode_constraint will constrain the density matrix at each step during the self-consistent loop.

The self_energy_calculator_complex is used for evaluating the self energy at each point along the complex contour. The self_energy_calculator_real is only used for calculating the real axis integral for finite bias calculations. Thus for zero bias calculations, the keyword self_energy_calculator_real has no effect.