Configuration Interaction, CI
CI Wavefunction
The APMO/CI wave function is written as a linear combination of CI configurations
as products of Slater determinants between all quantum species
where each is built as excitations within each type of quantum species, written in second quantization as:
For example,
Schematic of multicomponent CI configuration
Normally in CI, those configurations are group together according to the excitation level
leading to all singles excitations for all species, doubles within the same species (intraspecies), doubles as products of two single excitations from two different species (interspecies) for all possible pairs, as well as triples, quadrupoles, … and so on.
Schematic of multicomponent CI wave function
Given that wavefunction, the CI Hamiltonian matrix are computed following Slater’s rules taking into accound that the multispecies potential operator are still a two-body operator at most.
Identical determinants:
One spin-orbital different
Two spin-orbital different, same species
One spin-orbital different for two different quantum species
More than two spin orbital different within same species or more than two different species, differing in one spin orbital.
The combinational CI coefficients \(c\) are obtained variationally by solving the CI eigenvalue problem \(\textbf{Hc} = E\textbf{c}\). Due to the size of the Hamiltonian Matrix \(\textbf{H}\), it is necessary to use iterative techniques for diagonalization of real symmetric matrices avoiding the memory storage of the full matrix. Davidson’s method is the most used technique to find the lowest eigenvalues and eigenvectors. Here, the storage requirements of \(\textbf{H}\) can be greatly reduced by direct calculation of a matrix-vector product of the form \(\textbf{Hc} = \sigma\).
Selected CI, SCI
In openLOWDIN, the CI techniques aimed to select the most relevant configurations within the whole CI space are encompassed as the SCI family. These are usually categorized as stochastic or deterministic [3]. Currently the code has implemented an extended multicomponent version of Adaptive Sampling CI, ASCI [4].
Schematic of SCI algorithm
Natural orbitals
In CI, natural orbitals are special orbitals defined as the eigenfunctions of the one-particle reduced CI density. Using them significantly improves CI convergence by reducing the number of configurations needed to describe electron correlation. This allows a CI calculation to achieve good accuracy with a much smaller set of configurations, as natural orbitals focus on those with large occupation numbers. Thus, the CI reduced density matrix for the CI \(I\)-th state is defined as
The natural orbitals are the eigenvectors of this density matrix, and the eigenvalues of the diagonalized density matrix are the natural occupation numbers, which indicate the importance of each natural orbital in the overall wave function.
Diagonal corrections
CI Input options
configurationInteractionLevel=[character] Select Configuration Interaction level."CIS"Singles
"CISD"Singles and doubles
"CISD-"Singles, doubles interspecies only
"CISD+"Singles, doubles, triples interpecies only
"CISDT"Singles, doubles, triples
"CISDTQ"Singles, doubles, triples, quadruples
"SCI"Selected CI
"FCI"Full CI
"NONE"Default
numberOfCIStates=[integer] Set the number of lowest energy eigenvectors to find for the CI matrix in increasing energy. Default1(Ground state)CIdiagonalizationMethod=[character] Select the diagonalization subroutine"DSYEVX"LAPACK subroutine for selected eigenvalues and, optionally, eigenvectors of a real symmetric matrix. It requires to precompute and hold in memory the whole matrix (NXN) Default
"DSYEVR"Newest LAPACK subroutine for selected eigenvalues and, optionally, eigenvectors of a real symmetric matrix. It requires to precompute and hold in memory the whole matrix (NXN) Default
"JADAMILU"Jacobi-Davidson iterative algorithm. It requires to save only m-auxiliary matrix-vector products (NXm).
CIdiagonalDressedShift=[character] Add a diagonal shift to the CI matrix for size-extensive corrections. Values:CISD. Default"NONE"CIstatesToPrint=[integer] Number of CI states to print additional information about configuration occupations. Default1CIsizeOfGuessMatrix=[integer] Size N of the initial CI space to initialize the first eigenvector guess, it requires to hold in memory a matrix of NXN size for its diagonalization Default300CIstackSize=[integer] Stacksize of an temporary array to load and save CI eigenvectors in disk. Default5000CIConvergence=[float] Tolerance threshold for the eigenvector residual in JADAMILU Default1E-4CImatvecTolerance=[float] Tolerance threshold in the CI eigenvector guess for skipping the matrix-vector calculation during JADAMILU’s iterations. Higher values reduce the cost of each iteration but increase the number of steps. Default1E-10CISaveEigenVector=[logical] Save CI eigenvector for future computations Default.false.CILoadEigenVector=[logical] Load previously saved CI eigenvector as an initial guess Default.false.CIMadSpace=[integer] Desired size of the search space in JADAMILU, MS. The memory cost of JADAMILU’s diagonalization is given by N*(3*MS+NEIG+1)+4*MS*MS. Where N is the number of configurations, and NEIG the number of desired eigenvectors to find. Default5CINaturalOrbitals=[logical] Flag to compute natural orbitals after CI diagonalization. Default.false.CIPrintEigenVectorsFormat=[character] Select the format to print the CI eigenvectors for each configuration above abs(CIPrintThreshold)"ORBITALS"Print all orbitals occupation (0 or 1)
"OCCUPIED"Print the occupied orbitals index Default
"NONE"No printing
CIPrintThreshold=[float] Print all configurations above abs(CIPrintThreshold) for each eigenstate Default1E-1