Second order Møller-Plesset theory (MP2) [128] probably the simplest useful wavefunction-based electron correlation method. Revived in the mid-1970s, it remains highly popular today, because it offers systematic improvement in optimized geometries and other molecular properties relative to Hartree-Fock (HF) theory [8]. Indeed, in a recent comparative study of small closed-shell molecules [231], MP2 outperformed much more expensive singles and doubles coupled-cluster theory for such properties! Relative to state-of-the-art Kohn-Sham density functional theory (DFT) methods, which are the most economical methods to account for electron correlation effects, MP2 has the advantage of properly incorporating long-range dispersion forces. The principal weaknesses of MP2 theory are for open shell systems, and other cases where the HF determinant is a poor starting point.
Q-Chem contains an efficient conventional semi-direct method to evaluate the MP2 energy and gradient [232]. These methods require memory (, , are the numbers of occupied, virtual and total orbitals, respectively), and disk space which is bounded from above by . The latter can be reduced to by treating the occupied orbitals in batches of size , and re-evaluating the two-electron integrals times. This approach is tractable on modern workstations for energy and gradient calculations of at least 500 basis functions or so, or molecules of between 15 and 30 first row atoms, depending on the basis set size. The computational cost increases between the 3rd and 5th power of the size of the molecule, depending on which part of the calculation is time-dominant.
The algorithm and implementation in Q-Chem is improved over earlier methods [233, 234], particularly in the following areas:
Uses pure functions, as opposed to Cartesians, for all fifth-order steps. This leads to large computational savings for basis sets containing pure functions.
Customized loop unrolling for improved efficiency.
The sortless semi-direct method avoids a read and write operation resulting in a large I/O savings.
Reduction in disk and memory usage.
No extra integral evaluation for gradient calculations.
Full exploitation of frozen core approximation.
The implementation offers the user the following alternatives:
Direct algorithm (energies only).
Disk-based sortless semi-direct algorithm (energies and gradients).
Local occupied orbital method (energies only).
The semi-direct algorithm is the only choice for gradient calculations. It is also normally the most efficient choice for energy calculations. There are two classes of exceptions:
If the amount of disk space available is not significantly larger than the amount of memory available, then the direct algorithm is preferred.
If the calculation involves a very large basis set, then the local orbital method may be faster, because it performs the transformation in a different order. It does not have the large memory requirement (no array needed), and always evaluates the integrals four times. The AO2MO_DISK option is also ignored in this algorithm, which requires up to megabytes of disk space.
There are three important options that should be wisely chosen by the user in order to exploit the full efficiency of Q-Chem’s direct and semi-direct MP2 methods (as discussed above, the LOCAL_OCCUPIED method has different requirements).
MEM_STATIC: The value specified for this $rem variable must be sufficient to permit efficient integral evaluation (10-80Mb) and to hold a large temporary array whose size is , the product of the number of occupied, virtual and total numbers of orbitals.
AO2MO_DISK: The value specified for this $rem variable should be as large as possible (i.e., perhaps 80% of the free space on your $QCSCRATCH partition where temporary job files are held). The value of this variable will determine how many times the two-electron integrals in the atomic orbital basis must be re-evaluated, which is a major computational step in MP2 calculations.
N_FROZEN_CORE: The computational requirements for MP2 are proportional to the number of occupied orbitals for some steps, and the square of that number for other steps. Therefore the CPU time can be significantly reduced if your job employs the frozen core approximation. Additionally the memory and disk requirements are reduced when the frozen core approximation is employed.
The number of core electrons in an atom is relatively well defined, and consists of certain atomic shells, (note that ECPs are available in ‘small-core’ and ‘large-core’ varieties, see Chapter 8 for further details). For example, in phosphorus the core consists of 1, 2, and 2 shells, for a total of ten electrons. In molecular systems, the core electrons are usually chosen as those occupying the lowest energy orbitals, where is the number of core electrons in the constituent atoms. In some cases, particularly in the lower parts of the periodic table, this definition is inappropriate and can lead to significant errors in the correlation energy. Vitaly Rassolov has implemented an alternative definition of core electrons within Q-Chem which is based on a Mulliken population analysis, and which addresses this problem [235].
The current implementation is restricted to n-kl type basis sets such as 3-21 or 6-31, and related bases such as 6-31+G(d). There are essentially two cases to consider, the outermost 6G functions (or 3G in the case of the 3-21G basis set) for Na, Mg, K and Ca, and the 3d functions for the elements Ga—Kr. Whether or not these are treated as core or valence is determined by the CORE_CHARACTER $rem, as summarized in Table 5.3.2.
CORE_CHARACTER |
Outermost 6G (3G) |
3d (Ga–Kr) |
for Na, Mg, K, Ca |
||
1 |
valence |
valence |
2 |
valence |
core |
3 |
core |
core |
4 |
core |
valence |
The direct and semi-direct integral transformation algorithms used by Q-Chem (e.g., MP2, CIS(D)) are limited by available disk space, , and memory, , the number of basis functions, , the number of virtual orbitals, and the number of occupied orbitals, , as discussed above. The generic description of the key $rem variables are:
MEM_STATIC
Sets the memory for Fortran AO integral calculation and transformation modules.
TYPE:
INTEGER
DEFAULT:
64
corresponding to 64 Mb.
OPTIONS:
User-defined number of megabytes.
RECOMMENDATION:
For direct and semi-direct MP2 calculations, this must exceed OVN + requirements for AO integral evaluation (32–160 Mb), as discussed above.
MEM_TOTAL
Sets the total memory available to Q-Chem, in megabytes.
TYPE:
INTEGER
DEFAULT:
2000
(2 Gb)
OPTIONS:
User-defined number of megabytes.
RECOMMENDATION:
Use default, or set to the physical memory of your machine. Note that if more than 1GB is specified for a CCMAN job, the memory is allocated as follows
12%
MEM_STATIC
50%
CC_MEMORY
35%
Other memory requirements:
AO2MO_DISK
Sets the amount of disk space (in megabytes) available for MP2 calculations.
TYPE:
INTEGER
DEFAULT:
2000
Corresponding to 2000 Mb.
OPTIONS:
User-defined number of megabytes.
RECOMMENDATION:
Should be set as large as possible, discussed in Section 5.3.1.
CD_ALGORITHM
Determines the algorithm for MP2 integral transformations.
TYPE:
STRING
DEFAULT:
Program determined.
OPTIONS:
DIRECT
Uses fully direct algorithm (energies only).
SEMI_DIRECT
Uses disk-based semi-direct algorithm.
LOCAL_OCCUPIED
Alternative energy algorithm (see 5.3.1).
RECOMMENDATION:
Semi-direct is usually most efficient, and will normally be chosen by default.
N_FROZEN_CORE
Sets the number of frozen core orbitals in a post-Hartree–Fock calculation.
TYPE:
INTEGER
DEFAULT:
0
OPTIONS:
FC
Frozen Core approximation (all core orbitals frozen).
Freeze core orbitals.
RECOMMENDATION:
While the default is not to freeze orbitals, MP2 calculations are more efficient with frozen core orbitals. Use FC if possible.
N_FROZEN_VIRTUAL
Sets the number of frozen virtual orbitals in a post-Hartree–Fock calculation.
TYPE:
INTEGER
DEFAULT:
0
OPTIONS:
Freeze virtual orbitals.
RECOMMENDATION:
None
CORE_CHARACTER
Selects how the core orbitals are determined in the frozen-core approximation.
TYPE:
INTEGER
DEFAULT:
0
OPTIONS:
0
Use energy-based definition.
1-4
Use Mulliken-based definition (see Table 5.3.2 for details).
RECOMMENDATION:
Use default, unless performing calculations on molecules with heavy elements.
PRINT_CORE_CHARACTER
Determines the print level for the CORE_CHARACTER option.
TYPE:
INTEGER
DEFAULT:
0
OPTIONS:
0
No additional output is printed.
1
Prints core characters of occupied MOs.
2
Print level 1, plus prints the core character of AOs.
RECOMMENDATION:
Use default, unless you are uncertain about what the core character is.
Example 5.77 Example of an MP2/6-31G* calculation employing the frozen core approximation. Note that the EXCHANGE $rem variable will default to HF
$molecule
0 1
O
H1 O oh
H2 O oh H1 hoh
oh = 1.01
hoh = 105
$end
$rem
METHOD mp2
BASIS 6-31g*
N_FROZEN_CORE fc
$end