NumericalAccuracyParameters

class NumericalAccuracyParameters(density_mesh_cutoff=None, k_point_sampling=None, radial_step_size=None, density_cutoff=None, interaction_max_range=None, number_of_reciprocal_points=None, reciprocal_energy_cutoff=None, bands_per_electron=None, occupation_method=None, exx_grid_cutoff=None, compensation_charge_mesh_cutoff=None, grid_mesh_cutoff=None, electron_temperature=None)

Class for representing the parameters for setting the numerical accuracy of a calculation.

Some parameter defaults are specific for each calculator, see HuckelCalculator, SlaterKosterCalculator, SemiEmpiricalCalculator, LCAOCalculator, PlaneWaveCalculator, DeviceHuckelCalculator, DeviceSlaterKosterCalculator, DeviceSemiEmpiricalCalculator, or DeviceLCAOCalculator.

Parameters:
  • density_mesh_cutoff (PhysicalQuantity of type energy | GridSampling | OptimizedFFTGridSampling) – The mesh cutoff to be used to determine the density grid sampling. The mesh cutoff must be a positive energy or a GridSampling object.
    Default: Specific for each calculator.
  • k_point_sampling (list of int | MonkhorstPackGrid) – The k-point sampling in reciprocal space given by three Monkhorst-Pack indices or a MonkhorstPackGrid object.
    Default: Specific for each calculator.
  • radial_step_size (PhysicalQuantity of type length) – The maximum sampling step size in all the radial grids. Must be positive.
    Default: Specific for each calculator.
  • density_cutoff (float) – The density cutoff determines the limit where a density is considered to to be zero. Smaller values therefore leads to longer ranges and less sparsity of the models. Must be positive.
    Default: 1.0e-6
  • interaction_max_range (PhysicalQuantity of type length) – The maximum allowed interaction distance between two orbitals.
    Default: Specific for each calculator.
  • number_of_reciprocal_points (int) – The number of reciprocal points used for evaluating two-center integrals. Must be larger than 1.
    Default: 1024
  • reciprocal_energy_cutoff (PhysicalQuantity of type energy) – The energy cutoff in reciprocal space used for evaluating of the two-center integrals. Must be positive.
    Default: 1250 * Hartree
  • bands_per_electron (float) – The number of bands per electron. The number must be 1.0 or larger. Only used by the PlaneWaveCalculator.
    Default: 1.2
  • occupation_method (FermiDirac | GaussianSmearing | MethfesselPaxton | ColdSmearing) – The method to calculate state occupations.
    Default: Specific for each calculator.
  • exx_grid_cutoff (PhysicalQuantity | GridSampling | OptimizedFFTGridSampling) – The energy cutoff/grid sampling that determines the grid size used for representing the the local exact exchange potential in plane-wave hybrid functional calculations. For lossless calculations the grid sizes should be twice that needed to represent the wave functions. However, one may use a smaller grid for faster calculations.
    Default: The same value as used for ‘density_mesh_cutoff’
  • compensation_charge_mesh_cutoff (PhysicalQuantity | GridSampling | OptimizedFFTGridSampling) – The energy cutoff/grid sampling that determines the grid size on which the compensation charge is stored in a PAW calculation.
    Default: The same value as used for ‘density_mesh_cutoff’.
  • electron_temperature (PhysicalQuantity of type temperature) –

    Deprecated since version 2016.1: Use occupation_method=FermiDirac(electron_temperature) instead.

    The electron temperature used in determining the shape of the Fermi function. Must be positive.

bandsPerElectron()
Returns:The bands per electron.
Return type:float
compensationChargeMeshCutoff()
Returns:The energy cutoff/grid sampling used for the compensation charge.
Return type:PhysicalQuantity | GridSampling | OptimizedFFTGridSampling
densityCutoff()
Returns:The density cutoff.
Return type:float
densityMeshCutoff()
Returns:The density mesh cutoff.
Return type:PhysicalQuantity of type energy | GridSampling
electronTemperature()
Returns:The electron temperature.
Return type:PhysicalQuantity of type energy
exxGridCutoff()
Returns:The energy cutoff/grid sampling used for the exact exchange potential.
Return type:PhysicalQuantity | GridSampling | OptimizedFFTGridSampling
gridMeshCutoff()
Returns:The density mesh cutoff.
Return type:PhysicalQuantity of type energy | GridSampling

Deprecated since version Use: densityMeshCutoff() instead.

interactionMaxRange()
Returns:The interaction max range.
Return type:PhysicalQuantity of type length
kPointSampling()
Returns:The k-point sampling.
Return type:MonkhorstPackGrid
numberOfReciprocalPoints()
Returns:The number of reciprocal points used in two-center integration.
Return type:int
occupationMethod()
Returns:The occupation method.
Return type:FermiDirac | GaussianSmearing | MethfesselPaxton | ColdSmearing
radialStepSize()
Returns:The radial grid sampling.
Return type:PhysicalQuantity of type length
reciprocalEnergyCutoff()
Returns:The reciprocal cutoff energy.
Return type:PhysicalQuantity of type energy

Usage Examples

Define the k-point sampling and real space grid mesh-cutoff.

numerical_accuracy_parameters = NumericalAccuracyParameters(
    density_mesh_cutoff=12.0*Hartree,
    k_point_sampling=MonkhorstPackGrid(2, 1, 1),
    electron_temperature = 200*Kelvin
    )

calculator = HuckelCalculator(
    iteration_control_parameters=iteration_control_parameters,
    )

Specify the electron temperature in units of eV instead of Kelvin

numerical_accuracy_parameters = NumericalAccuracyParameters(
    electron_temperature=0.02 * electronVolt/boltzmann_constant
    )

Notes

  • The distance between the points in the real space grid, \(\Delta x\), is related to the density_mesh_cutoff, \(E^\mathrm{grid}\), through

    \[\Delta x = \frac{\pi \hbar}{\sqrt{2 m E^{grid}}}.\]

    In atomic units \(m = \hbar = 1\) , thus for energies in Hartree and distances in Bohr, \(\Delta x = \pi/\sqrt{2 E^\mathrm{grid}}\).

  • When setting interaction_max_range some matrix elements are set to zero. For very long ranged basis sets this can make the overlap matrix ill defined at certain k-points (i.e. it is not positive definite), in such cases the matrix diagonalization routine will give a segmentation fault. The cure is to change the interaction_max_range, i.e. either make it very large to include all long range elements, or make it small so no long range elements are included.