The CCSD(T) method is often referred to as the "gold standard" of quantum chemistry for its high accuracy and reliability. The purpose of this project is to illustrate the fundamental aspects of an efficient implementation of the (T) energy correction. This project builds upon the results of Project #5.
The spin-orbital expression for the (T) correction, using the same notation as in Project #5, is:
where
the "disconnected" triples are defined as
and the "connected" triples as
The three-index permutation operator is defined by its action on an algebraic function as
The total energy is
The most straightforward approach to evaluation of the (T) energy correction is to compute and store explicitly the connected and disconnected triples and plug them into the energy expression above. Store the triples amplitudes as six-dimensional arrays over occupied and virtual spin orbitals.
Note that each T3 amplitude depends on all the T1 and T2 amplitudes, not on other triples. This suggests that the calculation of the T3 amplitudes appearing in the energy expression could proceed one amplitude at a time:
Loop over i
Loop over j
Loop over k
Loop over a
Loop over b
Loop over c
Compute connected and disconnected T3 amplitudes for current i,j,k,a,b,c combination
Calculate contribution of these T3 amplitudes to the (T) energy
End c loop
End b loop
End a loop
End k loop
End j loop
End i loop
This algorithm reduces the storage (memory and disk) requirements of the (T) correction considerably. One can conceive of other approaches as well, including calculations of batches of T3 amplitudes (rather than one at a time) to improve floating-point performance. For example:
Loop over i
Loop over j
Loop over k
Compute all T3 amplitudes (all a,b,c combinations) for current i,j,k
Calculation contribution of these T3 amplitudes to the (T) energy
End k loop
End j loop
End i loop
This approach requires more storage [O(v3)] than the one-at-a-time approach, but can be considerably faster for modern high-performance computers. A good discussion of the most efficient algorithm can be found in A. P. Rendell, T. J. Lee, A. Komornicki, //Chem. Phys. Lett.// 178, 462-470 (1991).
The input structures, integrals, etc. for these examples may be found in the input directory, the CCSD Energies can be found in Project #5.