PerturbativeTriples

Table of Contents

1. Brief description

This algorithm can evaluate the (T) or the (cT) perturbative contribution to the correlation energy.

In the case of evaluating the (cT) contribution, it needs to evaluate first the (cT) intermediate tensor using the PerturbativeCT algorithm (see below). In this case, when the PerturbativeTriples algorithm is ran, both the (T) and (cT) contributions are provided as an output.

2. Algorithm call

A typical input file snippet to call the PerturbativeTriples algorithm is given below.

- name: PerturbativeTriples
  in:
    coulombIntegrals: CoulombIntegrals
    amplitudes: Amplitudes
    slicedEigenEnergies: EigenEnergies
    mp2PairEnergies: Mp2PairEnergies
  out:
    {}

2.1. (cT) contribution

A typical input file snippet to call the PerturbativeTriples algorithm to output the (T) and (cT) energies is the following:

# Calculate the ctintermediate tensor
- name: PerturbativeCT
  in:
    coulombIntegrals: CoulombIntegrals
    amplitudes: Amplitudes
    coulombVertex: CoulombVertex
  out:
    cTIntermediate: ctintermediate

# use the ctintermediate tensor as input for cTIntermediate
- name: PerturbativeTriples
  in:
    cTIntermediate: ctintermediate
    coulombIntegrals: CoulombIntegrals
    amplitudes: Amplitudes
    slicedEigenEnergies: EigenEnergies
    mp2PairEnergies: Mp2PairEnergies
  out:
    {}

Note that the first part of the snippet computes the (cT) intermediate tensors, which are provided as input to the PerturbativeTriples algorithm.

3. Algorithm input

Table 1: Input keywords for PerturbativeTriples
Keyword Value
amplitudes Singles and doubles amplitudes
cTIntermediate (optional) (cT) intermediate tensors
coulombIntegrals Coulomb Integrals
slicedEigenEnergies Sliced one-electron energies
mp2PairEnergies MP2 pair energies matrix

4. Algorithm output

4.1. Sample stdout

Below an example standard output stream is shown for a successful PerturbativeTriples algorithm run.

step: 7, PerturbativeTriples
Progress(%)  time(s)   GFLOP/s      
1            0         4.187        
10           0         5.657        
20           0         5.789        
30           0         5.919        
40           0         5.916        
50           0         5.938        
60           0         5.913        
70           0         5.877        
80           0         5.850        
90           0         5.857        
100          0         5.845        
(T) correlation energy:      -0.822530510989498
realtime 2.592587863 s
--

If the (cT) contribution is calculated, an additional output containing the (cT) energy is printed:

...
100          0         5.845        
(T) correlation energy:      -0.822530510989498
(cT) correlation energy:      -0.822530510989498
realtime 2.592587863 s
--

5. Sample yaml output

Below an example yaml output stream is shown for a successful PerturbativeTriples algorithm run.

floatingPointOperations: 11703705600
flops: 729564426.2969619
in:
  amplitudes: 0x24cd038
  coulombIntegrals: 0x247f2b8
  slicedEigenEnergies: 0x2487f38
name: PerturbativeTriples
out:
  energy:
    correlation: -0.82253051098949848
    unit: 0.036749322175638782
realtime: 2.592587863

When (cT) is being calculated, the energy output contains two extra fields, ct and t in order to clearly differentiate between both energies:

...
out:
  energy:
    correlation: -0.82253051098949848
    ct: -0.82253051098949848
    t: -0.82253051098949848

6. Computational complexity

The computational cost is \(\mathcal{O}{(N_o^3 N_v^3(N_o+N_v))}\) with \(N_o\) and \(N_v\) being the number of occupied and virtual orbitals, respectively. The memory footprint is mainly determined by the storage of the PPPH-integral, which is of size \(\mathcal{O}{N_o N_v^3}\).

The computational cost to compute both the (cT) and (T) energies is roughly two times that of the (T) computation alone. The memory footprint involves additionally storing a \( J^{ab}_{ci} \) tensor of the same dimensions of the \( V^{ab}_{ci} \) integrals.

7. Theory

The implemented expressions of (T) correspond to those from Ref. (Raghavachari et al. 1989). For more details see Ref. (Bartlett and Musiał 2007) and references therin. The implemented expressions of (cT) correspond to those from Ref. (Masios et al. 2023).

8. Reference implementation

In addition to the PerturbativeTriples algorithm, there is also a slower reference implementation called PerturbativeTriplesReference which is used in the same way as PerturbativeTriples. To use it, you should just change the name PerturbativeTriples by PerturbativeTriplesReference.

9. Literature

Bartlett, R.J., and Monika Musiał. 2007. “Coupled-cluster theory in quantum chemistry.” Rev. Mod. Phys. 79 (1): 291–352. doi:10.1103/RevModPhys.79.291.
Masios, Nikolaos, Andreas Irmler, Tobias Schäfer, and Andreas Grüneis. 2023. “Averting the Infrared Catastrophe in the Gold Standard of Quantum Chemistry.” Phys. Rev. Lett. 131 (October). American Physical Society: 186401. doi:10.1103/PhysRevLett.131.186401.
Raghavachari, Krishnan, Gary W. Trucks, John A. Pople, and Martin Head-Gordon. 1989. “A Fifth-Order Perturbation Comparison of Electron Correlation Theories.” Chemical Physics Letters 157 (6): 479–83. doi:https://doi.org/10.1016/S0009-2614(89)87395-6.

Created: 2025-09-04 Thu 15:35