Coupled cluster calculation

If you have not already done so, you should take a look at the eT_launch page to get an understanding of how the launch script works.

The ground state

To perform a coupled cluster calculation, you must specify a reference wave function along with the specific coupled cluster model in the method section. For instance, to do a standard CCSD calculation, you add the following method section:

- method
  hf
  ccsd

Furthermore, you must specify which type of calculation you wish to run. The options here are ground state, excited state, mean value, and response. Suppose we wish to simply find the ground state energy. Then we write:

- do
  ground state

This is all the information you have to specify to run with default settings. A minimal working example is the following:

- method
  hf
  ccsd

- do
  ground state

- geometry
basis: cc-pVDZ
H        0.8475370000      0.0347360000      1.0345270000
C        0.3504820000      0.0067450000      0.0608350000
H        0.6350750000      0.8927640000     -0.5200650000
H        0.6629360000     -0.8933800000     -0.4828330000
O       -1.0108350000     -0.0082340000      0.3643870000
H       -1.4851950000     -0.0326310000     -0.4568520000

Save this as methanol.inp and invoke the launch script.

path/to/eT_launch.py methanol.inp

You should now have a file called methanol.out. If the calculation exited succesfully (look for eT terminated successfully! at the bottom of the file), the output file should show iteration information for three solvers: one to decompose the electron repulsion integrals, one to converge the Hartree-Fock equations, and one to converge the CCSD ground state equation. You should see something like this in the coupled cluster solver:

 ...
 8          -115.416194297528     0.1673E-04     0.3289E-05
 9          -115.416194207952     0.4979E-05     0.8958E-07
10          -115.416194185137     0.1589E-05     0.2281E-07
11          -115.416194095902     0.4640E-06     0.8924E-07
---------------------------------------------------------------
Convergence criterion met in 11 iterations!

When running calculations in eT, each specific equation has a corresponding solver section. In these sections, you can specify which algorithm to use, how tight the thresholds should be, and so on. For example, if you wish to use the newton-raphson solver instead of the default diis solver for the above calculation, you can add a solver cc gs section (solver CC ground state) to your methanol.inp:

- solver cc gs
  algorithm: newton-raphson

If successful, you’ll see something like this in the convergence information for the coupled cluster ground state:

   Micro-iter.  Residual norm
   --------------------------
     1           0.6875E-06
     2           0.2180E-06
     3           0.9140E-07
     4           0.2428E-07
     5           0.4667E-08
   --------------------------

Macro-iter.    Energy (a.u.)        |omega|       Delta E (a.u.)
----------------------------------------------------------------
    4         -115.416194137363     0.6568E-08     0.2980E-07
----------------------------------------------------------------
Convergence criterion met in 4 iterations!

By default, eT provides two main output files, one .out and one .timing.out file. The latter contains detailed information regarding the time spent computing the most expensive terms. For example, in methanol.timing.out, you should find multiple instances of the time to construct the ground state equation (called “omega”):

Construct ccsd omega
wall time (sec):                 0.04
cpu time (sec):                  0.11
cpu/wall ratio:                  2.92

Excitation energies

Suppose we want two excitation energies in addition to the ground state. Then we need to change the type of calculation. Enter the methanol.inp file and edit your do section to ask for excited states:

- do
  excited state

To perform an excited state calculation, you also need to specify the number of states. This information must be specified in the solver section for the excited state calculation. Add solver cc es section to your input file, and specify two singlet states:

- solver cc es
  singlet states: 2

To avoid overwriting our old input files, we can use the --output-file command line argument, or -of for short, see the eT_launch page for more information. Now run the calculation:

path/to/eT_launch.py methanol.inp -of methanol_2_es.out

If successful, you should find a summary of the excitation energies towards the end of the output file methanol_2_es.out, given in Hartree and eV:

   - Electronic excitation energies:

                                 Excitation energy
                     ------------------------------------------
 State                (Hartree)             (eV)
---------------------------------------------------------------
   1                  0.288688760560        7.855621303236
   2                  0.357786659905        9.735870915469
---------------------------------------------------------------
eV/Hartree (CODATA 2014): 27.21138602

As for the ground state, you can specify different thresholds. Say you only want to converge the excited states to \(10^{-4}\) in the residual norms. Then you can add two keywords to your methanol.inp file:

- solver cc es
  singlet states:     2
  energy threshold:   1.0d-4
  residual threshold: 1.0d-4

Rerunning the calculation, we again obtain excitation energies, but this time less tightly converged:

- Electronic excitation energies:

                                 Excitation energy
                     ------------------------------------------
 State                (Hartree)             (eV)
---------------------------------------------------------------
   1                  0.288689280999        7.855635465111
   2                  0.357786036365        9.735853948081
---------------------------------------------------------------
eV/Hartree (CODATA 2014): 27.21138602

It is also straight-forward to run core excitations instead of UV excitations. To do so, you can ask for the core-valence separation (CVS) approximation. Suppose we wish to look at excitations out of the orbital with the lowest energy (orbital number 1, i.e., the 1s orbital on the oxygen in methanol). Then we specify 1 using the core excitation keyword:

- solver cc es
  singlet states:     2
  energy threshold:   1.0d-4
  residual threshold: 1.0d-4
  core excitation:    {1}

Save and run:

path/to/eT_launch.py methanol.inp -of methanol_2_core_es.out

You should then see the following summary in your output file:

- Electronic excitation energies:

                                  Excitation energy
                      ------------------------------------------
  State                (Hartree)             (eV)
 ---------------------------------------------------------------
    1                 19.801727040165      538.832438352602
    2                 19.909586934852      541.767455583007
 ---------------------------------------------------------------
 eV/Hartree (CODATA 2014): 27.21138602

Oscillator strengths

If we want ground-to-excited-state intensities, we need to compute the transition moments. To do so, we first need to change the type of calculation. Enter methanol.inp and change the do section to the following:

- do
  response

In addition, we should specify that we want to use equation of motion (EOM), the dipole operator, and request transition moments (not polarizabilities). This is specified in the cc response section:

- cc response
  eom
  dipole length
  transition moments

Now run the calculation again:

path/to/eT_launch.py methanol.inp -of methanol_core_es_transitions.out

In the summary, you should now see the state energies along with transition moments (left and right), their components, and the oscillator strengths. For state 1, you should get something like the following:

States n = 0 and m = 1:
-------------------------
Calculation type:                               EOM
Excitation energy (n->m) [E_h]:     19.801727040165
Excitation energy (n->m) [eV]:     538.832438352604
Hartree-to-eV (CODATA 2014):            27.21138602

              Transition moments [a.u.]         Transition strength [a.u.]
--------------------------------------------------------------------------
Comp.       < n | r | m >    < m | r | n >     < n | r | m > < m | r | n >
--------------------------------------------------------------------------
X           0.0074932967      0.0160811966            0.0001205012
Y           0.0006087560      0.0012881757            0.0000007842
Z           0.0237667088      0.0501232307            0.0011912642
--------------------------------------------------------------------------
Oscillator strength (length gauge):      0.017327165800

Note that if dipole velocity is used, the oscillator strength in length, velocity, and mixed gauge will be computed and printed.

If rotatory strength is requested or, the rotatory strength in length and velocity gauge will be computed and printed in addition to the oscillator strengths in 3 gauges.

Polarizabilities

To get polarizabilities in addition to the transition moments, we can further specify this in the cc response section. Let us evaluate the \(xx\) and \(xz\) components of the polarizability at the frequencies \(0.1\) and \(0.2\). Then we can change the section to:

- cc response
  eom
  dipole length
  transition moments
  polarizabilities: {xx, xz}
  frequencies: {0.1d0, 0.2d0}

At the very end of the output, you should see the evaluated polarizabilities:

6) Calculation of the EOM polarizabilities
   << mu_x, mu_x >>(0.10E+00):    -17.622255238276
   << mu_z, mu_x >>(0.10E+00):     -0.574776932260
   << mu_x, mu_x >>(0.20E+00):    -19.265672305850
   << mu_z, mu_x >>(0.20E+00):     -0.573229023242

If an asymmetric expression is to be used to calculate polarizabilities and only the response of \(x\) is to be evaluated (but for both amplitude and multipliers) one writes in the cc response section:

- cc response
  eom
  dipole length
  asymmetric
  polarizabilities: {11, 13}
  response components: {x}
  frequencies: {0.1d0, 0.2d0}

Damped response

For EOM, it is also possible to obtain polarizabilities and transition intensities using a damped response formalism. In this case the intensities are calculated as the linear absorption cross sections and are evaluated based on the imaginary component of the polarizability. Thus, both quantities are determined in the same calculation. To perform such a calculation, we must specify that algorithm to use is that of the damped response (or complex polarization propagator, i.e., cpp) solver. That is done by adding the damping keyword to the cc response section:

- cc response
  damping: 0.0045
- cc response
  eom
  dipole length
  polarizabilities: {xx, zx}
  frequencies: {0.1d0}
  damping: 0.0045

At the very end of the output, you should see the evaluated polarizabilities and cross sections:

-------------------------------------------------------------------------------
Frequency/a.u. Comp.  Re(alpha)/a.u.     Im(alpha)/a.u.      Cross section/a.u.
-------------------------------------------------------------------------------
   0.10000      xx     0.17621126E+02     0.43365205E-01      0.39766431E-03
   0.10000      zx     0.57477690E+00     0.47618827E-03      0.43667055E-05
-------------------------------------------------------------------------------

For keywords related to the CPP solver, see the solver cpp section.

Geometry optimization

It is possible to perform geometry optimizations for both ground and excited states. Currently, analytical gradients are only available for CCSD, and numerical gradients are used for the other CC methods. This is specified in the do section, which must read:

- do
  geometry optimization

For a geometry optimization of an excited state, additional keywords must be added to the solver cc es section and the solver geometry optimization section. We need to determine right and left hand side eigenvectors of the excited state of interest. If we want to determine the geometry optimized for the fourth valence excited state, we specify

- solver cc es
  right eigenvectors
  left eigenvectors
  singlet states: 4

and

- solver geometry optimization
  state: 4

Core excited states can also be considered by adding core excitation: {X} for the core orbital, X, of interest, to the solver cc es section.

Relevant input sections

Coupled cluster mean value

Coupled cluster response

Solver coupled cluster excited state

Solver coupled cluster ground state

Solver coupled cluster multipliers

Solver coupled cluster response

Solver geometry optimization

Solver complex polarization propagator