# PerturbativeTriples

## Table of Contents

## 1. Brief description

Evaluates the (T) contribution.

## 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: {}

## 3. Algorithm input

Keyword | Value |
---|---|

`amplitudes` |
Singles and doubles amplitudes |

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

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

## 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}\).

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

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

*Rev. Mod. Phys.*79 (1): 291–352. doi:10.1103/RevModPhys.79.291.

*Chemical Physics Letters*157 (6): 479–83. doi:https://doi.org/10.1016/S0009-2614(89)87395-6.