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, neumann_self_energy_update_strategy=None, density_predictor=None)¶
Class for representing algorithm parameters relevant for the device calculation.
- Parameters:
initial_density_type (
EquivalentBulk|NeutralAtom|RepeatedElectrode) – Select the method used for constructing the initial density. Default:NeutralAtomelectrode_constraint (
ElectrodeConstraint.Off|ElectrodeConstraint.DensityMatrix) –Constrain system variables to the electrode bulk values (see
ElectrodeConstraintfor the available options.) The default value differs if the class is used in aDeviceConfigurationor in aSurfaceConfiguration. Default:self_energy_calculator_real (
RecursionSelfEnergy|KrylovSelfEnergy|DirectSelfEnergy|SparseRecursionSelfEnergy) – TheSelfEnergyCalculatorthat should be used for calculating the real energies in the contour integral. Default: A defaultRecursionSelfEnergyinstanceself_energy_calculator_complex (
RecursionSelfEnergy|SparseRecursionSelfEnergy) – TheSelfEnergyCalculatorthat should be used for calculating the complex energies in the contour integral. Default: A defaultRecursionSelfEnergyinstancenon_equilibrium_method (
GreensFunction|SparseGreensFunction|ScatteringStates) – The density matrix method employed in the real part of the contour integration. Default: A defaultGreensFunctioninstanceequilibrium_method (
GreensFunction|SparseGreensFunction) – The density matrix method employed in the complex part of the contour integration. Default: A defaultGreensFunctioninstancestore_grids (bool) – Enable or disable the storage of grids that can be reused in the SCF process. True will increase the memory usage, but reduce the computation time. Default:
Truestore_basis_on_grid (
Automatic|True|False) – Control the storage of the basis functions on a real space grid. When enabled, increases the memory usage but reduces the computation time. Default:Automaticscf_restart_step_length (PhysicalQuantity of type length) – The maximum distance that an atom can move so that the calculation can be restarted from the previous initial state. Default:
0.1 * Angenforce_different_electrodes (bool) – Enforce separate calculations for the left and right electrodes, when enabled. When disabled, electrodes are treated identical if they differ by a constant translation. Default:
Falseneumann_self_energy_update_strategy (
SurfaceAverage|VolumeAverage) – Defines how the self-energies are updated during a self-consistent loop. Only relevant when Neumann boundary conditions in the transport direction are used. The self-energies are shifted rigidly to ensure the electrode is aligned in energy with the corresponding electrode repetition in the device, by inspection of the electrostatic potential. IfSurfaceAverageis selected, a surface average at the boundary between device and electrode is used. IfVolumeAverageis selected, a volume average on atoms in the minimal electrode and in the device atoms corresponding to the minimal electrode is used. In both cases, only regions within the atomic basis compact support are considered. Default:SurfaceAveragedensity_predictor (
DensityPredictor| False) – The parameters for the density predictor to be used for the initial guess for density in a DFT calculation. This option is currently only used for DeviceLCAOCalculator. Default:False
- densityPredictor()¶
- Returns:
The density predictor to be used for the initial guess for density in a DFT calculation.
- Return type:
DensityPredictor| False
- 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:
- initialDensityType()¶
- Returns:
The initial density type.
- Return type:
- neumannSelfEnergyUpdateStrategy()¶
- Returns:
The strategy used to update self energy when using Neumann boundary conditions in the transport direction.
- Return type:
SurfaceAverage|VolumeAverage
- nlinfo()¶
- Returns:
The nlinfo.
- Return type:
dict
- nonEquilibriumMethod()¶
- Returns:
The non-equilibrium method for the real contour integration.
- Return type:
- 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:
- selfEnergyCalculatorReal()¶
- Returns:
The self energy calculator for the real energies.
- Return type:
RecursionSelfEnergy|KrylovSelfEnergy|DirectSelfEnergy|SparseRecursionSelfEnergy
- 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
- uniqueString()¶
Return a unique string representing the state of the object.
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.