Name

HuckelCalculator — Class for representing calculations using the extended Huckel model for configurations of the type MoleculeConfiguration and BulkConfiguration.

Synopsis

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

Description

The constructor for the HuckelCalculator.

HuckelCalculator Arguments

basis_set

An object describing the basis set used for the Extended-Huckel calculation. For further information, please consult this the section called “Parameters for the extended Hückel method”

Type: list of HuckelBasisParameters objects

Default: HoffmannHuckelParameters.All
pair_potentials

The repulsive pair potentials used for total energy and force calculations

Type: PairPotentials object

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 Huckel calculation.

Type: NumericalAccuracyParameters

Default: A default NumericalAccuracyParameters object.
iteration_control_parameters

The IterationControlParameters used for the self-consistent Huckel 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)
weighting_scheme

The weighting scheme used for calculating off-site matrix elements of the Huckel Hamiltonian. For further information, please consult the the section called “Weighting schemes”.

Type: HoffmannWeighting | WolfsbergWeighting

Default: WolfsbergWeighting
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 calculation is UNPOLARIZED (False) or POLARIZED (True).

Type: bool

Default: False

HuckelCalculator Methods

A HuckelCalculator 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 basis set.

  • 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.

  • setWeightingScheme(): Set the weighting scheme.

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

  • weightingScheme(): Return the weighting scheme.

Usage Examples

Perform a self-consistent Hückel calculation by setting the IterationControlParameters

iteration_control_parameters = IterationControlParameters(
    damping_factor=0.05,
    number_of_history_steps=12,
    )

calculator = HuckelCalculator(
    iteration_control_parameters=iteration_control_parameters,
    )

Restart a Hückel 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 the same number of atoms and the same elements
new_calculation=BulkConfiguration(...)

# Define the 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)

Calculate the spin-polarized band structure of iron. Note that spin-polarized calculations must be self-consistent.

# Set up iron in the BCC configuration
bulk_configuration = BulkConfiguration(
    bravais_lattice=BodyCenteredCubic(2.8665*Angstrom),
    elements=[Iron],
    cartesian_coordinates=[[ 0.,  0.,  0.]]*Angstrom
    )

# Setup spin-polarized calculation
numerical_accuracy_parameters = NumericalAccuracyParameters(
    k_point_sampling=(4, 4, 4) )

calculator = HuckelCalculator(
    basis_set=CerdaHuckelParameters.Iron_bcc_Basis,
    numerical_accuracy_parameters=numerical_accuracy_parameters,
    iteration_control_parameters=IterationControlParameters(),
    spin_polarization=True,
    )
bulk_configuration.setCalculator(calculator)

# Calculate the bandstructure
bandstructure = Bandstructure(
    configuration=bulk_configuration,
    route=['G', 'H', 'P', 'G', 'N', 'P', 'N', 'H'],
    )
nlsave('fe_huckel.nc', bandstructure)

fe_huckel.py

Notes

For the details of the extended-Hückel model, see the chapter on The ATK-SE Package.

Default is that the Hückel calculation is non-self-consistent. To make it self-consistent you must set the IterationControlParameters.

Note that most parameters are fitted for non-self-consistent situations, and to apply the parameters for self-consistent situations the vacuum_level of each element must be shifted to cancel the additional onsite term in the reference structure where the parameters where fitted.