Name

DeviceSlaterKosterCalculator — Class for representing calculations using the SlaterKoster Model for DeviceConfigurations.

Synopsis

Namespace: NanoLanguage
DeviceSlaterKosterCalculator(
electrode_calculators,
contour_parameters,
basis_set,
pair_potentials,
numerical_accuracy_parameters,
iteration_control_parameters,
device_algorithm_parameters,
poisson_solver,
electrode_voltages,
checkpoint_handler,
spin_polarization
)

Description

The constructor for the DeviceSlaterKosterCalculator.

DeviceSlaterKosterCalculator Arguments

electrode_calculators

A sequence of SlaterKosterCalculator's containing a calculator for each electrode.

Type: A sequence of SlaterKosterCalculator's.

contour_parameters

The ContourIntegralParameters used for the complex contour integration.

Type: DoubleContourIntegralParameters | SingleContourIntegralParameters

Default: A default DoubleContourIntegralParameters object.
basis_set

An object describing the basis set used for the SlaterKoster calculation.

Type: SlaterKosterTable | DFTBDirectory | HotbitDirectory

Default:
pair_potentials

The repulsive pair potentials used for total energy and force calculations

Type: DFTBDirectory | HotbitDirectory | A list or tuple of PairPotential objects |

Default:
numerical_accuracy_parameters

The NumericalAccuracyParameters used for the self-consistent SlaterKoster calculation.

Type: NumericalAccuracyParameters

Default: A default NumericalAccuracyParameters object.
iteration_control_parameters

The IterationControlParameters used for the self-consistent SlaterKoster calculation. For non-self-consistent calculations set this parameter to NonSelfConsistent.

Type: IterationControlParameters

Default: NonSelfconsistent.
device_algorithm_parameters

The DeviceAlgorithmParameters used for the device simulation

Type: DeviceAlgorithmParameters

Default: A default DeviceAlgorithmParameters object
poisson_solver

The Poisson solver used to determine the electrostatic potential.

Type: FastFourierSolver | MultigridSolver | FastFourier2DSolver

Default: For a homogeneous DeviceConfiguration without metallic and dielectric regions : FastFourierSolver For others : MultigridSolver([PeriodicBoundaryCondition,PeriodicBoundaryCondition,DirichletBoundaryCondition])
electrode_voltages

The voltages applied to the electrodes.

Type: A sequence containing two elements of type PhysicalQuantity with unit Volt.

Default: (0.0,0.0)*Volt
checkpoint_handler

The CheckpointHandler used for specifying the save-file and the time interval between saving the calculation during the scf-loop.

Type: CheckpointHandler

Default: A default CheckpointHandler object.
spin_polarization

Flag indicating if the number of spin should be UNPOLARIZED (False) or POLARIZED (True).

Type: bool

Default: False

DeviceSlaterKosterCalculator Methods

A DeviceSlaterKosterCalculator object provides the following methods:

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

  • basisSet(): Return the basis set.

  • checkpointHandler(): Return the checkpoint handler.

  • contourParameters(): Query method for the ContourIntegralParameters.

  • deviceAlgorithmParameters(): Query method for the DeviceAlgorithmParameters.

  • electrodeCalculators(): Query method for the electrode calculators (see SlaterKosterCalculator).

  • electrodeVoltages(): Query method for the electrode voltages.

  • iterationControlParameters(): Return the IterationControlParameters.

  • numberOfSpins(): Query method for the number of spins

  • numericalAccuracyParameters(): Return the NumericalAccuracyParameters.

  • pairPotentials(): Return the repulsive pair potentials

  • poissonSolver(): Return the Poisson solver.

  • setBasisSet(): Set the basis set.

  • setCheckpointHandler(): Set the checkpoint handler.

  • setIterationControlParameters(): Set the iteration control parameters.

  • setNumericalAccuracyParameters(): Set the numerical accuracy parameters.

  • setPairPotentials(): Set the basis set.

  • setPoissonSolver(): Set the Poisson solver.

  • setSpinPolarization(): Set the spin polarization flag.

  • spinPolarization(): Query function for the spin polarization needed for the clone.

Usage Examples

Define a DeviceSlaterKosterCalculator with a Vogl tightbinding basis (se also SlaterKosterTable)

calculator = Deviceslaterkostercalculator(
    basis_set=Vogl.Silicon_Basis,
    )

Restart a DeviceSlaterKosterCalculator calculation using the self-consistent state from a previous calculation

# Read in the DeviceConfiguration with the old scf state
old_calculation=nlread("filename.nc",DeviceConfiguration)[0]

# Define the DeviceConfiguration with similar number of atoms
new_calculation=DeviceConfiguration(...)

# extract the old calculator
old_calculator = old_calculation.calculator()

# make a clone of the old calculator
new_calculator = old_calculator()

# Attach the calculator and use the old initial state
new_calculation.setCalculator(new_calculator, initial_state=old_calculation)

Notes

The parameters for the constructor of a DeviceSlaterKosterCalculator object and the parameters of its electrode calculators must fulfill the conditions below. In case the user does not set an electrode parameter, ATK will generate the parameter using the rules below:

  • The NumericalAccuracyParameters must be the same for the electrodes and the device. The central region of the device does not use k-points in the C-direction and this parameter is only used for the electrodes. The electrodes need a very dense k-point sampling in the C direction.

  • The poisson_solver must be set to the MultigridSolver with the same boundary conditions in the A and B directions for the electrodes and device. In the C directions the user setting is ignored and the program always uses PeriodicBoundaryCondition for the electrodes and DirichletBoundaryCondition for the device.

  • The electrode_voltages give rise to a shift of the Fermi levels of the electrodes by -e V_\mathrm{bias}, where V_\mathrm{bias} is the applied bias. Thus, a positive V_\mathrm{bias} on the right electrode, gives rise to an electron flow from left to right, corresponding to an electrical current from right to left.

For the details of the Slater-Koster model, see the chapter on The ATK-SE Package.