DF-MP2: Density-Fitted 2nd-Order Møller–Plesset Perturbation Theory¶
Code author: Robert M. Parrish
Section author: Robert M. Parrish
Module: Keywords, PSI Variables, DFMP2
Introduction¶
Second-order Møller–Plesset Perturbation Theory (MP2) occupies a unique role
in quantum chemistry due to its small-prefactor
The support for MP2 by the DFMP2 module in PSI4 is detailed in
Table DFMP2 Capabilities. Even without
set qc_module dfmp2
, methods will default to this module, but
alternate implementations and use of MP2_TYPE for performing
a MP2 with conventional integrals can be seen at other modules.
◻ ◻ name ↓ → ◻ ◻ |
◻ ◻ type[1] ↓ → |
QC_MODULE=DFMP2 Capabilities |
|||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Restricted (RHF) |
Unrestricted (UHF) |
Restricted Open (ROHF) |
|||||||||||||||||||||||||||||||||||
CV |
DF |
CD |
CV |
DF |
CD |
CV |
DF |
CD |
CV |
DF |
CD |
CV |
DF |
CD |
CV |
DF |
CD |
||||||||||||||||||||
A |
F |
A |
F |
A |
F |
A |
F |
A |
F |
A |
F |
A |
F |
A |
F |
A |
F |
A |
F |
A |
F |
A |
F |
A |
F |
A |
F |
A |
F |
A |
F |
A |
F |
A |
F |
||
mp2[4] |
✓̳ |
✓̳ |
✓̳ |
✓̳ |
✓̳ |
✓̳ |
✓̳ |
✓̳ |
An example utilization of the code is:
molecule h2o {
0 1
O
H 1 1.0
H 1 1.0 2 104.5
}
set basis cc-pvdz
set scf_type df
set freeze_core True
energy('mp2')
The energy('mp2')
call to energy()
executes
the predefined DF-MP2 procedure, first calling
the SCF module with a default RHF reference and DF algorithm for the
two-electron integrals. When the orbitals are converged, the DF-MP2 module is
launched, which forms the density-fitted
-----------------------------------------------------------
==================> DF-MP2 Energies <====================
-----------------------------------------------------------
Reference Energy = -76.0213974638823942 [Eh]
Singles Energy = -0.0000000000000001 [Eh]
Same-Spin Energy = -0.0512503270216563 [Eh]
Opposite-Spin Energy = -0.1534098175176923 [Eh]
Correlation Energy = -0.2046601445393486 [Eh]
Total Energy = -76.2260576084217405 [Eh]
-----------------------------------------------------------
================> DF-SCS-MP2 Energies <==================
-----------------------------------------------------------
SCS Same-Spin Scale = 0.3333333333333333 [-]
SCS Opposite-Spin Scale = 1.2000000000000000 [-]
SCS Same-Spin Energy = -0.0170834423405521 [Eh]
SCS Opposite-Spin Energy = -0.1840917810212307 [Eh]
SCS Correlation Energy = -0.2011752233617829 [Eh]
SCS Total Energy = -76.2225726872441811 [Eh]
-----------------------------------------------------------
The theory, breakdown of results, and common keywords used in DF-MP2 are presented below.
Theory¶
Møller–Plesset Theory (MPn) or Many-Body Perturbation Theory (MBPT) through second order has the spin-orbital formula:
Here
is zero due to the Brillioun Condition, and the first contribution to the perturbation series is at the second order:
In the DFMP2 module, the first-order contribution, or “singles energy” is
always evaluated. This term is a significant contributor to the total
second-order energy if a ROHF reference is used. In this case, we have chosen
to use the ROHF-MBPT(2) ansatz, in which the ROHF orbitals are
semicanonicalized, the resultant nonzero Fock matrix elements
To increase the efficiency of MP2 energy evaluation, spin integration and simplification is carried out. This also allows for the identification of Same-Spin (SS) and Opposite-Spin (OS) terms for use in Grimme’s Spin-Component Scaled (SCS) MP2. For RHF-MP2 (also labeled as RMP2), the spin-free equations are (note that the integrals are now chemist’s integrals over spatial orbitals)
and
For UHF-MP2 (also labeled as UMP2) and the second-order contribution to ROHF-MBPT(2) using semicanonical orbitals, the spin-free equations are
and
Note that the UHF-MP2 equations use three classes of integrals, while the RHF-MP2 equations use only one class. Because of this, a UHF-MP2 or ROHF-MBPT(2) energy should take roughly three times as long as an RHF-MP2 energy.
Recommendations¶
All-in-all, DFMP2 should be a simple module to use, with few keywords (fully documented in the Appendix DFMP2). Some basic recommendations are included below:
DFMP2 should be run with the
-type RI or MP2FIT auxiliary basis sets, not the -JKFIT basis sets. The automatic basis selector should work fine for most all bases (exceptions are less common elements at higher than quadruple-zeta). Generally, it is always better to specify only the orbital basis set and let the auxiliary bases be chosen automatically. If you want to specify manually, use the DF_BASIS_MP2 keyword.DFMP2 likes memory. At a minimum,
doubles are required, where is the size of the auxiliary basis set. However, there is one disk transpose of the tensor in the RHF-MP2 algorithm [two for UHF-MP2 and ROHF-MBPT(2)], so more memory will reduce seek times. If you notice DFMP2 using more memory than allowed, it is possible that the threaded three-index ERI computers are using too much overhead memory. Set the DF_INTS_NUM_THREADS to a smaller number to prevent this in this section (does not affect threaded efficiency in the rest of the code).DFMP2 likes disk. At a minimum,
doubles are required for RHF-MP2, and doubles are required for UHF-MP2.DFMP2 likes threads. Some of the formation of the
tensor relies on threaded BLAS (such as MKL) for efficiency. The main step is done via small/medium-sized DGEMMs inside of OpenMP, so make sure to set theOMP_NESTED
environment variable toFALSE
to prevent thread thrash (or just as well, do not defineOMP_NESTED
at all).Freezing core is good for both efficiency and correctness purposes. Freezing virtuals is not recommended. The DFMP2 module will remind you how many frozen/active orbitals it is using in a section just below the title.
ROHF-MBPT(2) may be preferred to UHF-MP2, as the latter can suffer from severe spin contamination in some cases.
MP2 is not suitable for systems with multireference character. The orbital energies will come together and an explosion will occur.