DeviceAlgorithmParameters

class DeviceAlgorithmParameters(initial_density_type=None, electrode_constraint=None, self_energy_calculator_real=None, self_energy_calculator_complex=None, non_equilibrium_method=None, equilibrium_method=None, store_grids=None, store_basis_on_grid=None, scf_restart_step_length=None, enforce_different_electrodes=None)

Class for representing algorithm parameters relevant for the device calculation.

Parameters:
electrodeConstraint()
Returns:The type of the electrode constraint.
Return type:ElectrodeConstraint.Off | DensityMatrix
enforceDifferentElectrodes()
Returns:If separate calculations for the left and right electrodes should be enforced.
Return type:bool
equilibriumMethod()
Returns:The equilibrium method for the complex contour integration.
Return type:GreensFunction | SparseGreensFunction
initialDensityType()
Returns:The initial density type.
Return type:EquivalentBulk | NeutralAtom
nonEquilibriumMethod()
Returns:The non-equilibrium method for the real contour integration.
Return type:GreensFunction | SparseGreensFunction | ScatteringStates
scfRestartStepLength()
Returns:The SCF restart step length of this calculator.
Return type:PhysicalQuantity of type length
selfEnergyCalculatorComplex()
Returns:The self energy calculator for the complex energies.
Return type:RecursionSelfEnergy | SparseRecursionSelfEnergy
selfEnergyCalculatorReal()
Returns:The self energy calculator for the real energies.
Return type:RecursionSelfEnergy | KrylovSelfEnergy | DirectSelfEnergy | SparseRecursionSelfEnergy | FeastSelfEnergy
storeBasisOnGrid()
Returns:If the storage of the basis functions on a real space grids is enabled or not
Return type:Automatic | True | False
storeGrids()
Returns:If the storage of grids is enabled or not
Return type:bool

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(storage_strategy=NoStorage())
    )

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.