Name

SlaterKosterCalculator — Class for representing calculations using a Slater-Koster tightbinding model for configurations of the type MoleculeConfiguration and BulkConfiguration.

Synopsis

Namespace: NanoLanguage
SlaterKosterCalculator(
basis_set,
pair_potentials,
charge,
numerical_accuracy_parameters,
iteration_control_parameters,
poisson_solver,
checkpoint_handler,
spin_polarization
)

Description

The constructor for the SlaterKosterCalculator.

SlaterKosterCalculator Arguments

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:
charge

The charge of the system; a charge of -1 corresponds to one extra electron.

Type: float

Default: 0.0
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
poisson_solver

The Poisson solver used to determine the electrostatic potential.

Type: FastFourierSolver | MultigridSolver | FastFourier2DSolver

Default: BulkConfiguration without Metallic and Dielectric Regions=FastFourierSolver, BulkConfiguration with Metallic and Dielectric Regions=MultigridSolver([PeriodicBoundaryCondition]*3), MoleculeConfiguration without Metallic Regions=MultigridSolver([MultipoleBoundaryCondition]*3), MoleculeConfiguration with Metallic Regions=MultigridSolver([NeumannBoundaryCondition]*3)
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

SlaterKosterCalculator Methods

A SlaterKosterCalculator object provides the following methods:

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

  • basisSet(): Return the basis set.

  • charge(): Query method for the charge of the system

  • checkpointHandler(): Return the checkpoint handler.

  • 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 spin polarized SlaterKosterCalculator with a Carbon pi model

# Generate a basis set for a Carbon p-p Pi model
# The p-p Pi model is described using s orbitals
# Parameters from: Hancock et. al., J. Low Temp Phys. 153, 393 (2008)

carbon_onsite = SlaterKosterOnsiteParameters(
    element = Carbon,
    angular_momenta = [0],
    occupations = [1],
    ionization_potential = [0.0]*eV,
    onsite_hartree_shift = ATK_U(Carbon, ['2p']),
    onsite_spin_split = ATK_W(Carbon, ['2p']))

# Specify the distances for which the matrix elements are specified
distances = [1.422, 2.463 ,2.844, 3.1]*Ang
# Specify the p-p Pi matrix elements
pp_pi = [[-2.7], [-0.2], [-0.18], [0.0]]*eV

Carbon_Basis = SlaterKosterTable(
    carbon_carbon_sss = zip(distances,pp_pi),
    carbon = carbon_onsite)

calculator = SlaterKosterCalculator(basis_set = Carbon_Basis,
                                    spin_polarization = True)

Restart a Slater-Koster calculation using the self-consistent state from a previous calculation

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

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

# 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

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