ExactExchangeParameters¶
Included in QATK.Calculators.DFT, QATK.Calculators.SemiEmpirical, QATK.Calculators.Parameters
- class ExactExchangeParameters(aux_basis_tolerance=None, number_of_waves=None, maximum_wave_vector=None, integral_tolerance=None, relative_screening_tolerance=None, use_admm=None, basis_set_admm=None, auxiliary_basis_set=None, gpu_acceleration=None)¶
Class for representing the parameters for setting the numerical accuracy of an exact exchange calculation.
- Parameters:
aux_basis_tolerance (dict of string to double, or just a single double used for all element.) – The auxiliary basis is constructed by taking a product basis of the regular basis and throwing away functions that are linearly dependent up to this tolerance. Default:
1.0e-3number_of_waves (int) – Parameter for the radial FFT. Will determine accuracy of the exchange integrals. Default:
1024maximum_wave_vector (double) – Parameter for the radial FFT. Will determine accuracy of the exchange integrals. Default:
50.0integral_tolerance (double) – The integral tolerance for throwing away integral contributions to the exchange matrix Default:
1.0e-4relative_screening_tolerance – The tolerance used to throw away contributions to the exchange matrix. Contributions that have an estimated contribution below this tolerance is not calculated. The tolerance is relative to the exchange_integral_tolerance, thus the actual tolerance used is relative_screening_tolerance * exchange_integral_tolerance. The screening tolerance is smaller than the exchange_integral_tolerance due to accumulation of errors. Default:
1.0e-2use_admm (boolean) – If true, we use the admm approximation for exact exchange.
basis_set_admm (
BasisSet) – If we use ADMM, we have a second smaller basis set for exchange, which is provided here.auxiliary_basis_set (
NLEngine.BasisSet) – If this is provided, we use this as an auxiliary basis set and not the product space.gpu_acceleration (
Enabled|Disabled|Automatic) – Whether to use GPU acceleration for the exact exchange calculation. If set toAutomatic, the solver will use the GPU if available. Default:Automatic
- auxBasisTolerance()¶
- Returns:
The auxiliary basis is constructed by taking a product basis of the regular basis and throwing away functions that are linearly dependent up to this tolerance.
- Return type:
dict of string to double, or just a single double used for all element.
- auxiliaryBasisSet()¶
- Returns:
The auxiliary basis set used for PARI, if this is None, the auxiliary basis set used will be the product basis of the exchange basis set.
- Return type:
NLEngine.BasisSet
- basisSetAdmm()¶
- Returns:
The Auxiliary Density Matrix Method (ADMM) ‘exchange’ basis set.
- Return type:
list
- gpuAcceleration()¶
- Returns:
Whether to use GPU acceleration for the exact exchange calculation. If set to
Automatic, the solver will use the GPU if available.- Return type:
Enabled|Disabled|Automatic
- integralTolerance()¶
- Returns:
The integral screening tolerance for throwing away integral contributions to the exchange matrix
- Return type:
double
- maximumWaveVector()¶
- Returns:
Parameter for the radial FFT. Will determine accuracy of the exchange integrals.
- Return type:
double
- minAuxBasisTolerance()¶
- Returns:
The auxiliary basis is constructed by taking a product basis of the regular basis and throwing away functions that are linearly dependent up to this tolerance.
- Return type:
double
- nlinfo()¶
- Returns:
The nlinfo.
- Return type:
dict
- numberOfWaves()¶
- Returns:
Parameter for the radial FFT. Will determine accuracy of the exchange integrals.
- Return type:
int
- relativeScreeningTolerance()¶
- Returns:
The integral screening tolerance for throwing away integral contributions to the exchange matrix
- Return type:
double
- uniqueString()¶
Return a unique string representing the state of the object.
- useAdmm()¶
- Returns:
True, then the Auxiliary Density Matrix Method (ADMM) is used.
- Return type:
bool
Notes¶
GPU acceleration¶
The calculation of exact exchange is computationally intensive and can benefit significantly from GPU acceleration. The speedup factor depends mostly on the basis size: basis sets with a low number of orbitals (e.g., ADMM basis, SingleZeta or SingleZetaPolarized basis) will not benefit significantly from GPU acceleration, while larger basis sets (for example, Medium, DoubleZetaPolarized or higher) will have a significant speedup (3x or larger).
Warning
Exact exchange requires a large amount of GPU memory.
For large systems (tens of thousands of orbitals), the data transfer to GPU memory will be
capped, which may degrade performance.
For extremely large systems, it may be necessary to disable GPU acceleration by setting
gpu_acceleration=Disabled to avoid running out of memory. This allows the GPU to still be
used for other parts of the calculation, such as matrix diagonalization.