SlaterKosterCalculator — Class for representing calculations using a Slater-Koster tightbinding model for configurations of the type MoleculeConfiguration and BulkConfiguration.
The constructor for the SlaterKosterCalculator.
An object describing the basis set used for the SlaterKoster calculation.
Type: SlaterKosterTable | DFTBDirectory | HotbitDirectory
Default:
The repulsive pair potentials used for total energy and force calculations
Type: DFTBDirectory | HotbitDirectory | A list or tuple of PairPotential objects |
Default:
The charge of the system; a charge of -1 corresponds to one extra electron.
Type: float
Default:
0.0
The NumericalAccuracyParameters used for the self-consistent SlaterKoster calculation.
Type: NumericalAccuracyParameters
Default:
A default NumericalAccuracyParameters object.
The IterationControlParameters used for the self-consistent SlaterKoster calculation. For non-self-consistent calculations set this parameter to NonSelfconsistent.
Type: IterationControlParameters
Default:
NonSelfconsistent
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)
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.
Flag indicating if the number of spin should be UNPOLARIZED (False) or POLARIZED (True).
Type: bool
Default:
False
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.
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)