# OCC: Orbital-Optimized Coupled-Cluster and Møller–Plesset Perturbation Theories¶

Code author: Ugur Bozkaya

Section author: Ugur Bozkaya

Module: Keywords, PSI Variables, OCC

Module: Keywords, PSI Variables, DFOCC

## Introduction¶

Orbital-optimized methods have several advantages over their non-optimized counterparts. Once the orbitals are optimized, the wave function will obey the Hellmann–Feynman theorem for orbital rotation parameters. Therefore, there is no need for orbital response terms in the evaluation of analytic gradients. In other words, it is unnecessary to solve the first order coupled-perturbed CC and many-body perturbation theory (MBPT) equations. Further, computation of one-electron properties is easier because there are no response contributions to the particle density matrices (PDMs). Moreover, active space approximations can be readily incorporated into the CC methods [Krylov:2000:vod]. Additionally, orbital-optimized coupled-cluster avoids spurious second-order poles in its response function, and its transition dipole moments are gauge invariant [Pedersen:1999:od].

Another advantage is that the orbital-optimized methods do not suffer from artifactual symmetry-breaking instabilities [Crawford:1997:instability], [Sherrill:1998:od], [Bozkaya:2011:omp2], and [Bozkaya:2011:omp3]. Furthermore, Kurlancheek and Head-Gordon [Kurlancek:2009] demonstrated that first order properties such as forces or dipole moments are discontinuous along nuclear coordinates when such a symmetry breaking occurs. They also observed that although the energy appears well behaved, the MP2 method can have natural occupation numbers greater than 2 or less than 0, hence may violate the N-representability condition. They further discussed that the orbital response equations generally have a singularity problem at the unrestriction point where spin-restricted orbitals become unstable to unrestriction. This singularity yields to extremely large or small eigenvalues of the one-particle density matrix (OPDM). These abnormal eigenvalues may lead to unphysical molecular properties such as vibrational frequencies. However, orbital-optimized MP2 (also MP3) will solve this N-representability problem by disregarding orbital response contribution of one-particle density matrix.

Although the performance of coupled-cluster singles and doubles (CCSD) and orbital-optimized CCD (OD) is similar, the situation is different in the case of triples corrections, especially at stretched geometries [Bozkaya:2012:odtl]. Bozkaya and Schaefer demonstrated that orbital-optimized coupled cluster based triple corrections, especially those of asymmetrics, provide significantly better potential energy curves than CCSD based triples corrections.

A lot of the functionality in OCC has been enabled with Density Fitting (DF) and Cholesky Decomposition (CD) techniques, which can greatly speed up calculations and reduce memory requirements for typically negligible losses in accuracy.

NOTE: As will be discussed later, all methods with orbital-optimization functionality have non-orbital optimized counterparts. Consequently, there arise two possible ways to call density-fitted MP2. In most cases, users should prefer the DF-MP2 code described in the DF-MP2 section because it is faster. If gradients are needed (like in a geometry optimization), then the procedures outlined hereafter should be followed. In general, choose the desired method, reference, and ERI type (e.g., set reference uhf, set mp2_type df, opt('mp2')) and the most efficient module will be selected automatically, according to Cross-module Redundancies.

Thus, there arise a few categories of method, each with corresponding input keywords:

• Orbital-optimized MP and CC methods with conventional integrals (OMP Methods OCC keywords)

• Orbital-optimized MP and CC methods with DF and CD integrals (OMP Methods DFOCC keywords)

• Non-orbital-optimized MP and CC methods with conventional integrals (MP/CC Methods OCC keywords)

• Non-orbital-optimized MP and CC methods with DF and CD integrals (MP/CC Methods DFOCC keywords)

## Theory¶

What follows is a very basic description of orbital-optimized Møller–Plesset perturbation theory as implemented in PSI4. We will follow our previous presentations ([Bozkaya:2011:omp2], [Bozkaya:2011:omp3], and [Bozkaya:2012:odtl])

The orbital variations may be expressed by means of an exponential unitary operator

$\begin{split}\widetilde{\hat{p}}^{\dagger} &= e^{\hat{K}} \hat{p}^{\dagger} e^{-\hat{K}}\\ \widetilde{\hat{p}} &= e^{\hat{K}} \ \hat{p} \ e^{-\hat{K}} \\ | \widetilde{p} \rangle &= e^{\hat{K}} \ | p \rangle\end{split}$

where $$\hat{K}$$ is the orbital rotation operator

$\begin{split}\hat{K} &= \sum_{p,q}^{} K_{pq} \ \hat{E}_{pq} = \sum_{p>q}^{} \kappa_{pq} \ \hat{E}_{pq}^{-} \\ \hat{E}_{pq} &= \hat{p}^{\dagger} \hat{q} \\ \hat{E}_{pq}^{-} &= \hat{E}_{pq} \ - \ \hat{E}_{qp} \\ {\bf K} &= Skew({\bf \kappa})\end{split}$

The effect of the orbital rotations on the MO coefficients can be written as

${\bf C({\bf \kappa})} = {\bf C^{(0)}} \ e^{{\bf K}}$

where $${\bf C^{(0)}}$$ is the initial MO coefficient matrix and $${\bf C({\bf \kappa})}$$ is the new MO coefficient matrix as a function of $${\bf \kappa}$$. Now, let us define a variational energy functional (Lagrangian) as a function of $${\bf \kappa}$$

• OMP2

$\begin{split}\widetilde{E}({\bf \kappa}) &= \langle 0| \hat{H}^{\kappa} | 0 \rangle \\ &+ \langle 0| \big(\hat{W}_{N}^{\kappa}\hat{T}_{2}^{(1)}\big)_{c} | 0 \rangle \\ &+ \langle 0| \{\hat{\Lambda}_{2}^{(1)} \ \big(\hat{f}_{N}^{\kappa} \hat{T}_{2}^{(1)} \ + \ \hat{W}_{N}^{\kappa} \big)_{c}\}_{c} | 0 \rangle\end{split}$
• OMP3

$\begin{split}\widetilde{E}({\bf \kappa}) &= \langle 0| \hat{H}^{\kappa} | 0 \rangle \\ &+ \langle 0| \big(\hat{W}_{N}^{\kappa}\hat{T}_{2}^{(1)}\big)_{c} | 0 \rangle \ + \ \langle 0| \big(\hat{W}_{N}^{\kappa}\hat{T}_{2}^{(2)}\big)_{c} | 0 \rangle \\ &+ \langle 0| \{\hat{\Lambda}_{2}^{(1)} \ \big(\hat{f}_{N}^{\kappa} \hat{T}_{2}^{(1)} \ + \ \hat{W}_{N}^{\kappa} \big)_{c}\}_{c} | 0 \rangle \\ &+ \langle 0| \{\hat{\Lambda}_{2}^{(1)} \ \big(\hat{f}_{N}^{\kappa} \hat{T}_{2}^{(2)} \ + \ \hat{W}_{N}^{\kappa}\hat{T}_{2}^{(1)} \big)_{c}\}_{c} | 0 \rangle \\ &+ \langle 0| \{\hat{\Lambda}_{2}^{(2)} \ \big(\hat{f}_{N}^{\kappa} \hat{T}_{2}^{(1)} \ + \ \hat{W}_{N}^{\kappa} \big)_{c}\}_{c} | 0 \rangle\end{split}$
• OLCCD

$\begin{split}\widetilde{E}({\bf \kappa}) &= \langle 0| \hat{H}^{\kappa} | 0 \rangle \ + \ \langle 0| \big(\hat{W}_{N}^{\kappa}\hat{T}_{2}\big)_{c} | 0 \rangle \\ &+ \langle 0| \{\hat{\Lambda}_{2} \ \big(\hat{W}_{N}^{\kappa} \ + \ \hat{H}_{N}^{\kappa}\hat{T}_{2} \big)_{c}\}_{c} | 0 \rangle\end{split}$

where subscript c means only connected diagrams are allowed, and $$\hat{H}^{\kappa}$$, $$\hat{f}_{N}^{\kappa}$$, and $$\hat{W}_{N}^{\kappa}$$ defined as

$\begin{split}\hat{H}^{\kappa} &= e^{-\hat{K}} \hat{H} e^{\hat{K}} \\ \hat{f}_{N}^{\kappa} &= e^{-\hat{K}} \hat{f}_{N}^{d} e^{\hat{K}} \\ \hat{W}_{N}^{\kappa} &= e^{-\hat{K}} \hat{W}_{N} e^{\hat{K}}\end{split}$

where $$\hat{f}_{N}$$, and $$\hat{W}_{N}$$ are the one- and two-electron components of normal-ordered Hamiltonian. Then, first and second derivatives of the energy with respect to the $${\bf \kappa}$$ parameter at $${\bf \kappa} = 0$$

$w_{pq} = \frac{\partial \widetilde{E}}{\partial \kappa_{pq}}$
$A_{pq,rs} = \frac{\partial^2 \widetilde{E}}{\partial \kappa_{pq} \partial \kappa_{rs}}$

Then the energy can be expanded up to second-order as follows

$\widetilde{E}^{(2)}({\bf \kappa}) = \widetilde{E}^{(0)} + {\bf \kappa^{\dagger} w} + \frac{1}{2}~{\bf \kappa^{\dagger} A \kappa}$

where $${\bf w}$$ is the MO gradient vector, $${\bf \kappa}$$ is the MO rotation vector, and $${\bf A}$$ is the MO Hessian matrix. Therefore, minimizing the energy with respect to $${\bf \kappa}$$ yields

${\bf \kappa} = -{\bf A^{-1}w}$

This final equation corresponds to the usual Newton-Raphson step.

• OREMP

The REMP hybrid perturbation theory is a constrained mixture of the Møller–Plesset perturbation theory and the Retaining the Excitation degree perturbation theory([Fink:2006:RE], [Behnle:2019:REMP]). The mixing ratio is determined by the parameter :math’:A:

$\widehat{H}^{(0)}_\text{REMP} = (1-A)\widehat{H}^{(0)}_\text{RE} + A\widehat{H}^{(0)}_\text{MP}$

Technically, the second order of RE corresponds to LCCD for RHF and UHF references. REMP2 and its orbital-optimized variant OREMP2 are thus straightforward to implement in a (O)LCCD program by appropriate scaling of residual vector contributions and density matrices.

## Convergence Problems¶

For problematic open-shell systems, we recommend to use the ROHF or DFT orbitals as an initial guess for orbital-optimized methods. Both ROHF and DFT orbitals may provide better initial guesses than UHF orbitals, hence convergence may be significantly speeded up with ROHF or DFT orbitals. In order to use ROHF orbitals, simply set reference rohf. For DFT orbitals, set reference uks and set dft_functional b3lyp. Of course users can use any DFT functional available in PSI4.

## Methods¶

The various orbital-optimized methods supported by the OCC/DFOCC modules in PSI4 are summarized in Table OCC OO Methods and detailed in Table OCC OO Capabilities. Note that while two separate libraries OCC (conventional integrals CONV) and DFOCC (density-fitted DF and Cholesky-decomposed CD) together provide the methods described on this page, they are controlled through one QC_MODULE value OCC. Without set qc_module occ, these methods may default to implementations in other modules based on efficiency considerations.

Orbital-optimized theoretical methods accessible through OCC/DFOCC

name

calls method

OO

omp2

orbital-optimized second-order MP perturbation theory

E/G

omp2.5

orbital-optimized average of MP2 and MP3

E/G

omp3

orbital-optimized third-order MP perturbation theory

E/G

oremp2

orbital-optimized second-order REMP hybrid PT

E/G

olccd

orbital-optimized linear coupled cluster doubles

E/G

Detailed orbital-optimized capabilities of the OCC module. “✓” runs analytically. Single underline “✓̲” is default module when QC_MODULE unspecified. Double underline “✓̳” is default algorithm type when type selector (e.g., CC_TYPE) unspecified.

name ↓ →

type[1] ↓ →

QC_MODULE=OCC Capabilities

Restricted (RHF)

Unrestricted (UHF)

Restricted Open (ROHF)

energy()

energy()

energy()

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

omp2[4]

MP2_TYPE

✓̲

✓̳

✓̳

✓̲

✓̲

✓̲

✓̳

✓̳

✓̲

✓̳

✓̳

✓̲

✓̲

✓̲

✓̳

✓̳

✓̲

✓̳

✓̳

✓̲

✓̲

✓̲

✓̳

✓̳

omp2.5[4]

MP_TYPE

✓̳

✓̲

✓̲

✓̲

✓̲

✓̳

✓̲

✓̲

✓̳

✓̲

✓̲

✓̲

✓̲

✓̳

✓̲

✓̲

✓̳

✓̲

✓̲

✓̲

✓̲

✓̳

✓̲

✓̲

omp3[4]

MP_TYPE

✓̳

✓̲

✓̲

✓̲

✓̲

✓̳

✓̲

✓̲

✓̳

✓̲

✓̲

✓̲

✓̲

✓̳

✓̲

✓̲

✓̳

✓̲

✓̲

✓̲

✓̲

✓̳

✓̲

✓̲

oremp2[4]

CC_TYPE

✓̳

✓̲

✓̲

✓̲

✓̲

✓̳

✓̲

✓̲

✓̳

✓̲

✓̲

✓̲

✓̲

✓̳

✓̲

✓̲

✓̳

✓̲

✓̲

✓̲

✓̲

✓̳

✓̲

✓̲

olccd[4]

CC_TYPE

✓̳

✓̲

✓̲

✓̲

✓̲

✓̳

✓̲

✓̲

✓̳

✓̲

✓̲

✓̲

✓̲

✓̳

✓̲

✓̲

✓̳

✓̲

✓̲

✓̲

✓̲

✓̳

✓̲

✓̲

Spin-Component-Scaled Orbital-Optimized MP capabilities of OCC/DFOCC modules

name

calls method

Energy

scs-omp3

Spin-Component Scaled Orbital-Optimized MP3

RHF/UHF/ROHF/RKS/UKS

sos-omp3

Spin-Opposite Scaled Orbital-Optimized MP3

RHF/UHF/ROHF/RKS/UKS

scs(n)-omp3

A special version of SCS-OMP3 for nucleobase interactions

RHF/UHF/ROHF/RKS/UKS

scs-omp3-vdw

A special version of SCS-OMP3 (from ethene dimers)

RHF/UHF/ROHF/RKS/UKS

sos-pi-omp3

A special version of SOS-OMP3 for $$\pi$$-systems

RHF/UHF/ROHF/RKS/UKS

scs-omp2

Spin-Component Scaled Orbital-Optimized MP2

RHF/UHF/ROHF/RKS/UKS

sos-omp2

Spin-Opposite Scaled Orbital-Optimized MP2

RHF/UHF/ROHF/RKS/UKS

scs(n)-omp2

A special version of SCS-OMP2 for nucleobase interactions

RHF/UHF/ROHF/RKS/UKS

scs-omp2-vdw

A special version of SCS-OMP2 (from ethene dimers)

RHF/UHF/ROHF/RKS/UKS

sos-pi-omp2

A special version of SOS-OMP2 for $$\pi$$-systems

RHF/UHF/ROHF/RKS/UKS

## Basic OCC Keywords¶

### E_CONVERGENCE¶

Convergence criterion for energy. See Table Post-SCF Convergence for default convergence criteria for different calculation types.

### R_CONVERGENCE¶

Convergence criterion for amplitudes (residuals).

Convergence criterion for RMS orbital gradient. If this keyword is not set by the user, OCC will estimate and use a value required to achieve the desired E_CONVERGENCE The listed default will be used for the default value of E_CONVERGENCE

Convergence criterion for maximum orbital gradient. If this keyword is not set by the user, OCC will estimate and use a value required to achieve the desired E_CONVERGENCE The listed default will be used for the default value of E_CONVERGENCE

### MO_MAXITER¶

Maximum number of iterations to determine the orbitals

• Type: integer

• Default: 50

### WFN_TYPE¶

Type of the wavefunction.

• Type: string

• Possible Values: OMP2, OMP3, OCEPA, OMP2.5, REMP, OREMP

• Default: OMP2

### ORB_OPT¶

Do optimize the orbitals?

## Advanced OCC Keywords¶

### OPT_METHOD¶

The optimization algorithm. Modified Steepest-Descent (MSD) takes a Newton-Raphson (NR) step with a crude approximation to diagonal elements of the MO Hessian. The ORB_RESP option obtains the orbital rotation parameters with a crude approximation to all elements of the MO Hessian. Additionally, for both methods a DIIS extrapolation will be performed with the DO_DIIS = TRUE option.

• Type: string

• Possible Values: MSD, ORB_RESP

• Default: MSD

### ORTH_TYPE¶

The algorithm for orthogonalization of MOs

• Type: string

• Possible Values: GS, MGS

• Default: MGS

### MP2_OS_SCALE¶

Removed in 1.4. Will raise an error in 1.5.

• Type: double

• Default: 6.0

### MP2_SS_SCALE¶

Removed in 1.4. Will raise an error in 1.5.

• Type: double

• Default: 1.0

### MP2_SOS_SCALE¶

Removed in 1.4. Will raise an error in 1.5.

• Type: double

• Default: 1.3

### MP2_SOS_SCALE2¶

Removed in 1.4. Will raise an error in 1.5.

• Type: double

• Default: 1.2

### NAT_ORBS¶

Do compute natural orbitals?

### OCC_ORBS_PRINT¶

Do print OCC orbital energies?

### TPDM_ABCD_TYPE¶

How to take care of the TPDM VVVV-block. The COMPUTE option means it will be computed via an IC/OOC algorithm. The DIRECT option (default) means it will not be computed and stored, instead its contribution will be directly added to Generalized-Fock Matrix.

• Type: string

• Possible Values: DIRECT, COMPUTE

• Default: DIRECT

### DO_DIIS¶

Do apply DIIS extrapolation?

### DO_LEVEL_SHIFT¶

Removed in 1.4. Will raise an error in 1.5.

## Basic DFOCC Keywords¶

### E_CONVERGENCE¶

Convergence criterion for energy. See Table Post-SCF Convergence for default convergence criteria for different calculation types.

### R_CONVERGENCE¶

Convergence criterion for amplitudes (residuals).

Convergence criterion for RMS orbital gradient. If this keyword is not set by the user, DFOCC will estimate and use a value required to achieve the desired E_CONVERGENCE The listed default will be used for the default value of E_CONVERGENCE

Convergence criterion for maximum orbital gradient. If this keyword is not set by the user, DFOCC will estimate and use a value required to achieve the desired E_CONVERGENCE The listed default will be used for the default value of E_CONVERGENCE

### MO_MAXITER¶

Maximum number of iterations to determine the orbitals

• Type: integer

• Default: 100

### ORB_OPT¶

Do optimize the orbitals?

## Advanced DFOCC Keywords¶

### OPT_METHOD¶

The orbital optimization algorithm. Presently quasi-Newton-Raphson algorithm available with several Hessian * options.

• Type: string

• Possible Values: QNR

• Default: QNR

### HESS_TYPE¶

Type of the MO Hessian matrix

• Type: string

• Possible Values: APPROX_DIAG, APPROX_DIAG_EKT, APPROX_DIAG_HF, HF

• Default: HF

### MO_DIIS_NUM_VECS¶

Number of vectors used in orbital DIIS

• Type: integer

• Default: 6

### ORTH_TYPE¶

The algorithm for orthogonalization of MOs

• Type: string

• Possible Values: GS, MGS

• Default: MGS

### DO_DIIS¶

Do apply DIIS extrapolation?

### DO_LEVEL_SHIFT¶

Do apply level shifting?

## Conventional (Non-OO) Coupled-Cluster and Møller–Plesset Perturbation Theories¶

The various non-orbital-optimized methods supported by the OCC/DFOCC modules in PSI4 are summarized in Table OCC non-OO Methods and detailed in Table OCC non-OO Capabilities. Note that while two separate libraries OCC (conventional integrals CONV) and DFOCC (density-fitted DF and Cholesky-decomposed CD) together provide the methods described on this page, they are controlled through one QC_MODULE value OCC. Without set qc_module occ, these methods may default to implementations in other modules based on efficiency considerations.

Starting in v1.4, MP2.5 and MP3 default to the density-fit algorithm. Set MP_TYPE to CONV to get previous behavior.

Publications resulting from the use of the non-OO CC codes should cite the following publications:

Non-OO theoretical methods accessible through OCC/DFOCC

name

calls method

plain

FNO

mp2

second-order MP perturbation theory

E/G

n/a

mp2.5

average of MP2 and MP3

E/G

mp3

third-order MP perturbation theory

E/G

remp2

second-order retaining-the-excitation-degree MP hybrid PT

E

lccd

linear coupled cluster doubles

E/G

ccd

coupled cluster doubles

E/G

ccsd

coupled cluster singles and doubles

E/G

ccsd(t)

coupled cluster singles and doubles with perturbative triples

E/G

a-ccsd(t)

CCSD with asymmetric perturbative triples

E

Detailed non-orbital-optimized capabilities of the OCC module. “✓” runs analytically. Single underline “✓̲” is default module when QC_MODULE unspecified. Double underline “✓̳” is default algorithm type when type selector (e.g., CC_TYPE) unspecified.

name ↓ →

type[5] ↓ →

QC_MODULE=OCC Capabilities

Restricted (RHF)

Unrestricted (UHF)

Restricted Open (ROHF)

energy()

energy()

energy()

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

MP2_TYPE

✓̲

✓̲

✓̲

✓̲

✓̲

✓̲

✓̲

✓̲

✓̲

✓̲

✓̳

✓̳

✓̲

✓̲

✓̲

✓̲

mp2.5

MP_TYPE

✓̲

✓̲

✓̳

✓̳

✓̲

✓̲

✓̲

✓̳

✓̳

✓̲

✓̲

✓̳

✓̳

✓̲

✓̲

✓̲

✓̳

✓̳

mp3

MP_TYPE

✓̲

✓̲

✓̳

✓̳

✓̲

✓̲

✓̲

✓̳

✓̳

✓̲

✓̲

✓̳

✓̳

✓̲

✓̲

✓̲

✓̳

✓̳

remp2

CC_TYPE

✓̳

✓̳

✓̲

✓̲

✓̲

✓̲

✓̳

✓̳

✓̲

✓̲

✓̲

✓̲

lccd

CC_TYPE

✓̲

✓̲

✓̲

✓̲

✓̳

✓̲

✓̲

✓̳

✓̳

✓̲

✓̲

✓̲

✓̲

✓̳

✓̲

✓̲

ccd

CC_TYPE

✓̲

✓̲

✓̲

✓̲

✓̲

✓̲

✓̲

✓̲

✓̲

✓̲

✓̲

✓̲

ccsd

CC_TYPE

✓̲

✓̲

✓̲

✓̲

✓̲

✓̲

✓̲

✓̲

ccsd(t)

CC_TYPE

✓̲

✓̲

a-ccsd(t)[8]

CC_TYPE

✓̲

✓̲

✓̲

✓̲