12.2. The Configuration Interaction Module on top of RHF¶
12.2.1. Summary of keyword arguments¶
The RCIS
, RCID
, and RCISD
modules support various keyword
arguments that allow the user to steer the process of
the RCIS/RCID/RCISD Hamiltonian diagonalization. In the following, all supported keyword
arguments are listed together with their default values. Please note that
the default values should be sufficient to reach convergence in simple systems.
- nroot
(int) the number of states (default: 1; ground state for RCID/RCISD; first excited state for RCIS)
- nguessv
(int) total number of guess vectors (default: (nroot-1)*4+1)
- tolerance
(float) tolerance for energies (default: 1e-6)
- tolerancev
(float) tolerance for eigenvectors (default: 1e-5)
- maxiter
(int) maximum number of iterations (default: 200).
- threshold
(float) printing tolerance for contributions of RCI wave function (default: 0.1).
- maxvectors
(int) maximum number of Davidson vectors (default: nroot*10)
- scc
(boolean) determines whether a size-consistency correction is to be calculated (default: True)
- threshold_c_0
a threshold that helps verifying the accuracy of Davidson-type corrections
- print_csf
(boolean) decides in which variant (True: CSF; False: SD) the results will be printed (default: False)
12.2.2. Relation between Configuration State Function and Slater Determinant¶
A Configuration State Function (CSF) is a symmetry-adapted linear combination of Slater determinants (SD). Below, we illustrate the exact relations between CSF and SD for singly- and doubly-excited configurations. To distinguish between the SD and CSF representation, the individual components of a SD will be denoted with normal size letters, while capitalized letters are used for CSFs.
The relation for single excitations is as follows
while the relation for double excitations is more complicated and can be expressed as a set of equations
12.2.3. Setting up calculations using CSFs and SDs¶
By default, all variants of RCI
classes perform a calculation using the CSF representation.
To change this and use a SD basis instead, the csf
argument has to be set to False
in the initialization of an instance of the chosen RCI class.
The following code snippet shows how to use this option
rcis = RCIS(lf, occ_model, csf=False)
rcid = RCID(lf, occ_model, csf=False)
rcisd = RCISD(lf, occ_model, csf=False)
12.2.4. Frozen core RCI¶
By default, all (occupied and virtual) orbitals are active.
To freeze some (occupied) orbitals, the number of frozen cores has to be specified during
the initialization of some occupation module class.
The code snippet below shows how to freeze the first (occupied) orbital in a
RCIS
, RCID
, RCISD
calculation, by specifying the ncore
argument during the initialization of
the chosen occupation model
# Select one frozen core orbital
#-------------------------------
occ_model = AufbauOccModel(gobasis, ncore=1)
# Perform CI calculation, ncore is stored in occ_model
#-----------------------------------------------------
rcis = RCIS(lf, occ_model)
rcis_out = rcis(kin, ne, er, hf_out)
rcid = RCID(lf, occ_model)
rcid_out = rcid(kin, ne, er, hf_out)
rcisd = RCISD(lf, occ_model)
rcisd_out = rcisd(kin, ne, er, hf_out)
12.2.5. Size-consistency Corrections¶
The RCI module allows you to calculate Davidson-type corrections for the ground state. The following variants of Davidson-type corrections are supported
Davidson:
[davidson-corr](12.7)¶\[E_{DC}=(1-{c_{0}}^2)(E_{RCI} - E_{RF})\]Renormalized Davidson:
[scc-overview](12.8)¶\[E_{RDC}=\left(\frac{1-{c_{0}}^2}{{c_{0}}^2}\right)(E_{RCI} - E_{RF})\]Modified Pople:
[scc-overview](12.9)¶\[E_{PC}=E_{RDC}\left(1-\frac{2}{n_e}\right)\]Meissner:
[meissner-overview](12.10)¶\[E_{MC}=E_{RDC}\left( \frac{(n_e-2)(n_e-3)}{n_e(n_e-1)} \right)\]Duch and Diercksen:
[duch1994](12.11)¶\[E_{DDC}=E_{RCI}\left(\frac{1-{c_{0}}^2}{2\left(\frac{n_e-1}{n_e-2}\right)c_0^2-1} \right),\]
where \(E_{RCI}\) indicates the total energy of the RCI
method,
\(E_{RF}\) is the energy of the reference method, \(c_0\) is the contribution of the reference determinant of the reference method, and \(n_e\) denotes the total number of electrons in the system.
Note
Please note that PyBEST supports size-consistency calculations for two variants of the RCI
module:
RCID
and RCISD
.
The size-consistency corrections are calculated directly by setting the scc
keyword argument to True (see also Summary of keyword arguments).
By default, all size-consistency corrections are calculated.