Skip to content

CCSD

The CCSD method adopts an exponential wavefunction ansatz:

\[\psi=e^{T_1+T_2}|\psi_0>\]

where \(\psi_0\) is a Hartree-Fock wavefunction (single determinant), \(T_1\) is composed of single excitation operators and amplitudes, and \(T_2\) is composed of double excitation operators and amplitudes:

\[T_1 = \sum_{ia} t_a^i \hat a^{\dagger}_a \hat a_i \]
\[T_2 = \sum_{ijab} t_{ab}^{ij} \hat a^{\dagger}_a \hat a^{\dagger}_b \hat a_j \hat a_i \]

where \(t_a^i\) and \(t_{ab}^{ij}\) are the amplitudes that need to be determined. The primary advantage of coupled cluster methods is their ability to describe electron correlation while remaining rigorously size-extensive. The primary disadvantage is that they are (usually) restricted to a single determinant reference. Therefore, they can perform poorly when static electron correlation is important (for example, when breaking covalent bonds).

TeraChem implements conventional CCSD as well as tensor-hypercontracted (THC-CCSD) and rank-reduced (RR-CCSD and RR-THC-CCSD) forms.1 It also implements equation-of-motion CCSD (EOM-CCSD) for excited electronic states. Only energies are currently implemented for CCSD methods (i.e., analytic gradients are not available). All coupled-cluster methods implemented in TeraChem assume a closed-shell reference, i.e. a preceding restricted Hartree-Fock calculation. Unrestricted Hartree-Fock (UHF) references are not allowed, nor are open-shell (ROHF) references supported.

To run a CCSD calculation in TeraChem, the minimum required input keywords are:

ccbox      yes
ccbox_ccsd yes

By default the CCSD code freezes the core orbitals; the number of frozen orbitals can be adjusted with ccbox_frozen_core (see the general keyword table in the Coupled Cluster overview).

Worked example

ccsd_h2o.in
basis           cc-pvdz
sphericalbasis  true
coordinates     geom.xyz
method          rhf
run             energy

threall         1.0e-14
convthre        1.0e-8
precision       double
guess           sad

charge          0
spinmult        1

ccbox                   yes
ccbox_ccsd              yes
ccbox_scratch_dir       ./scr.geom
ccbox_ccsd_r_convthre   1.0e-6
ccbox_cd_thresh         1.0e-4
end

This computes the CCSD correlation energy on top of a closed-shell RHF reference. The ccbox_scratch_dir keyword controls where the (potentially large) CC intermediate files live; by default they go to /tmp, which is rarely what you want for a production run.

On a successful run, the output ends with a summary block listing the reference, correlation, and total energies along with the D1 diagnostic, a single-reference quality indicator (values above ~0.05 suggest that single-reference CCSD is losing accuracy):

CCSD converged

  ---------------------------------------------------------
  ====================> CCSD Energies <===================
  ---------------------------------------------------------
  Reference  Energy         =    -227.8305188340249288 [H]
  Correlation Energy        =      -0.6665110167832837 [H]
  Total Energy              =    -228.4970298508082180 [H]
  ---------------------------------------------------------

  D1 Diagnostic             =                 0.059025

CCSD(T)

The perturbative triples correction is turned on by adding ccbox_ccsdt yes to a CCSD job. Triples reuse the converged CCSD amplitudes, so they add no extra convergence parameters beyond those needed for CCSD itself:

ccsdt_example.in
basis           cc-pvdz
sphericalbasis  true
coordinates     geom.xyz
method          rhf
run             energy

threall         1.0e-24
convthre        1.0e-10
precision       double
guess           sad

charge          0
spinmult        1

ccbox                   yes
ccbox_ccsd              yes
ccbox_ccsdt             yes
ccbox_frozen_core       4
ccbox_scratch_dir       ./scr.geom
ccbox_ccsd_r_convthre   1.0e-12
ccbox_cd_thresh         1.0e-13
end

For CCSD(T), it is generally worth tightening ccbox_cd_thresh (Cholesky decomposition accuracy) and ccbox_ccsd_r_convthre (amplitude convergence) significantly past their defaults, since errors in the underlying CCSD amplitudes propagate into the triples correction.

Summary of relevant keywords

Keyword Type Default Description
ccbox_ccsd_maxiter integer 100 Maximum number of iterations in the CCSD equations
ccbox_ccsd_diisvecs integer 5 Maximum number of DIIS vectors when solving the CCSD equations
ccbox_ccsd_r_convthre float 1.0e-6 Convergence threshold for amplitudes
ccbox_ccsd_e_convthre float 1.0e-6 Convergence threshold for CCSD energy
ccbox_ccsdt boolean no Compute perturbative triples correction (i.e. CCSD(T))?
ccbox_ccsd_properties boolean no Compute ground-state one-electron properties (e.g. CCSD dipole moment)

For Cholesky decomposition and general ccbox_* keywords (scratch directory, frozen-core orbitals, in-memory vs on-disk), see the Coupled Cluster overview.

References


  1. B. S. Fales, E. R. Curtis, K. G. Johnson, D. Lahana, S. Seritan, Y. Wang, H. Weir, T. J. Martinez and E. G. Hohenstein, Performance of Coupled-Cluster Singles and Doubles on Modern Stream Processing Architectures, J. Chem. Theory Comput. 16 4021 (2020). ↩