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
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
.