Name

KohnShamMethod Represents the parameters that controls the density-functional electronic structure calculation of molecules and bulk systems.

Synopsis

Namespace: ATK.KohnSham
Object KohnShamMethod(
basis_set_parameters,
exchange_correlation_type,
electron_density_parameters,
eigenstate_occupation_parameters,
two_center_integral_parameters,
iteration_mixing_parameters,
iteration_control_parameters,
poisson_equation_parameters,
brillouin_zone_integration_parameters
)

Description

The KohnShamMethod class is used to represent parameters that control the density-functional electronic structure calculation of molecules and bulk systems. The returned object is used as an input parameter to executeSelfConsistentCalculation() which performs the actual self-consistent calculation. Alternatively, the apply() method of the KohnShamMethod object (see below) can also be used.

The method is in principle independent of the atomic geometry, which for the systems in question are defined by BulkConfiguration, MoleculeConfiguration, and PeriodicAtomConfiguration. There is, however, some connection via the Brillouin zone integration parameters (see below). These only apply to bulk systems, of course, but should be chosen to match the geometry of the system, as the parameters are different for a nanotube and a bulk crystal).

List of arguments

basis_set_parameters

A dictionary of basis set parameters.

Default: Parameters corresponding to basisSetParameters() supplied with no arguments.

exchange_correlation_type

The type of exchange correlation functionals to be used.

Default: LDA.PZ

electron_density_parameters

A dictionary with electron density parameters, such as mesh cut-off and initial spin.

Default: Parameters corresponding to electronDensityParameters() supplied with no arguments.

eigenstate_occupation_parameters

Eigenstate occupation parameters such as the electron temperature.

Default: Parameters corresponding to eigenstateOccupationParameters() supplied with no arguments.

two_center_integral_parameters

Parameters for the two-center integrals.

Default: Parameters corresponding to twoCenterIntegralParameters() supplied with no arguments.

iteration_mixing_parameters

Parameters used to control the mixing in the self-consistent field calculation.

Default: Parameters corresponding to iterationMixingParameters() supplied with no arguments.

iteration_control_parameters

Parameters used to determine the convergence criteria of the self-consistent field calculation.

Default: Parameters corresponding to iterationControlParameters() supplied with no arguments.

poisson_equation_parameters

The padding factor used for solving the Poisson equation. Default

Default: Parameters corresponding to poissonEquationParameters() supplied with no arguments.

brillouin_zone_integration_parameters

Defines the k-point mesh in the Brillouin zone. This has no default value and must be specified using the function brillouinZoneIntegrationParameters().

Default: None

Usage examples

Set up a method applicable for molecule systems only:

from ATK.KohnSham import *
    dft_method = KohnShamMethod(
        poisson_equation_parameters = 
            poissonEquationParameters(padding_factor=0.2),
        basis_set_parameters = basisSetParameters(type=SingleZeta),
        exchange_correlation_type = GGA.PBE
        )

Set up a method applicable for a bulk system only configuration:

from ATK.KohnSham import *

    dft_method = KohnShamMethod(
        basis_set_parameters = basisSetParameters(type=SingleZeta),
        brillouin_zone_integration_parameters = 
            brillouinZoneIntegrationParameters((3,3,3))
        )

Set up a general method applicable for both molecule and bulk systems:

from ATK.KohnSham import *

    dft_method = KohnShamMethod(
        basis_set_parameters = basisSetParameters(type=SingleZeta),
        exchange_correlation_type = GGA.PBE,
        )

Notes

If poisson_equation_parameters is specified, the returned KohnShamMethod can only be used for molecular systems. The same is true if the electron_density_parameters contain a specification of a fixed_spin. Conversely, if brillouin_zone_integration_parameters are specified, the returned method can only be used for bulk systems. Naturally, these two parameter groups cannot be combined in the same method.

The basis_set_parameters may be specified in two different ways:

  • A single dictionary returned directly by basisSetParameters().

  • A list of such dictionaries in order to define individual basis set parameters for different elements

For more information, see basisSetParameters().

The KohnShamMethod object is used as input when performing a self-consistent density-functional calculation using executeSelfConsistentCalculation():

configuration = ...
method = KohnShamMethod(...)
scf = executeSelfConsistentCalculation(configuration,method,...)

Alternatively, it is also possible to use the KohnShamMethod to perform the calculation by using its apply() method:

configuration = ...
method = KohnShamMethod(...)
scf = method.apply(configuration)

The apply() method takes a single argument, which either is of the type BulkConfiguration, MoleculeConfiguration, or PeriodicAtomConfiguration.

The returned object from the apply() method is equivalent to the object returned from executeSelfConsistentCalculation() and is used as input for various kinds of analysis calculations, such as calculateTotalEnergy().

The main difference between these two different ways of performing the calculation presently lies in the way the verbosity level and the name of the checkpoint file is specified. The function executeSelfConsistentCalculation() takes an argument runtime_parameters for specifying these parameters for the actual self-consistent iteration. The apply() method, on the other hand, uses the globally set verbosity level and checkpoint file name.