The Coulomb part of the DFT calculations using ordinary Gaussian representations can be sped up dramatically using plane waves as a secondary basis set by replacing the most costly analytical electron repulsion integrals with numerical integration techniques. The main advantages to keeping the Gaussians as the primary basis set is that the diagonalization step is much faster than using plane waves as the primary basis set, and all electron calculations can be performed analytically.
The Fourier Transform Coulomb (FTC) technique276, 277 is precise and tunable and all results are practically identical with the traditional analytical integral calculations. The FTC technique is at least 2–3 orders of magnitude more accurate then other popular plane wave based methods using the same energy cutoff. It is also at least 2–3 orders of magnitude more accurate than the density fitting (resolution-of-identity) technique. Recently, an efficient way to implement the forces of the Coulomb energy was introduced,278 and a new technique to localize filtered core functions. Both of these features have been implemented within Q-Chem and contribute to the efficiency of the method.
The FTC method achieves these spectacular results by replacing the analytical integral calculations, whose computational costs scales as (where is the number of basis function) with procedures that scale as only . The asymptotic scaling of computational costs with system size is linear versus the analytical integral evaluation which is quadratic. Research at Q-Chem Inc. has yielded a new, general, and very efficient implementation of the FTC method which work in tandem with the J-engine and the CFMM (Continuous Fast Multipole Method) techniques.275
In the current implementation the speed-ups arising from the FTC technique are moderate when small or medium Pople basis sets are used. The reason is that the J-matrix engine and CFMM techniques provide an already highly efficient solution to the Coulomb problem. However, increasing the number of polarization functions and, particularly, the number of diffuse functions allows the FTC to come into its own and gives the most significant improvements. For instance, using the 6-311G+(df,pd) basis set for a medium-to-large size molecule is more affordable today then before. We found also significant speed ups when non–Pople basis sets are used such as cc-pvTZ. The FTC energy and gradients calculations are implemented to use up to -type basis functions.
FTC
Controls the overall use of the FTC.
TYPE:
INTEGER
DEFAULT:
0
OPTIONS:
0
Do not use FTC in the Coulomb part
1
Use FTC in the Coulomb part
RECOMMENDATION:
Use FTC when bigger and/or diffuse basis sets are used.
FTC_SMALLMOL
Controls whether or not the operator is evaluated on a large grid and stored in
memory to speed up the calculation.
TYPE:
INTEGER
DEFAULT:
1
OPTIONS:
1
Use a big pre-calculated array to speed up the FTC calculations
0
Use this option to save some memory
RECOMMENDATION:
Use the default if possible and use 0 (or buy some more memory) when
needed.
FTC_CLASS_THRESH_ORDER
Together with FTC_CLASS_THRESH_MULT, determines the cutoff
threshold for included a shell-pair in the class, i.e., the class that
is expanded in terms of plane waves.
TYPE:
INTEGER
DEFAULT:
5
Logarithmic part of the FTC classification threshold. Corresponds to
OPTIONS:
User specified
RECOMMENDATION:
Use the default.
FTC_CLASS_THRESH_MULT
Together with FTC_CLASS_THRESH_ORDER, determines the cutoff
threshold for included a shell-pair in the class, i.e., the class that
is expanded in terms of plane waves.
TYPE:
INTEGER
DEFAULT:
5
Multiplicative part of the FTC classification threshold. Together with
the default value of the FTC_CLASS_THRESH_ORDER this leads to
the threshold value.
OPTIONS:
User specified.
RECOMMENDATION:
Use the default. If diffuse basis sets are used and the molecule is relatively
big then tighter FTC classification threshold has to be used. According to our
experiments using Pople-type diffuse basis sets, the default value provides accurate result for an alanine5 molecule while threshold value for alanine10 and value for
alanine15 has to be used.