Density-fitted Coupled Cluster methods

Exported functions

Internal functions

ElemCo.DFCoupledCluster.calc_3idx_svd_decompositionMethod
calc_3idx_svd_decomposition(EC::ECInfo, full_voL::AbstractArray)

Calculate $U^{iX}_a$ from $v_a^{iL}$ using SVD.

Version without holding all $v_a^{iL}$ integrals in memory. full_voL is the full 3-index integral $v_a^{iL}$ (can be mmaped).

source
ElemCo.DFCoupledCluster.calc_MP2_from_3idxMethod
calc_MP2_from_3idx(EC::ECInfo, voL::AbstractArray, ishift)

Calculate MP2 energy from $v_a^{iL}$.

The imaginary shift ishift is used in the denominator in the calculation of the MP2 amplitudes.

source
ElemCo.DFCoupledCluster.calc_deco_hylleraasMethod
calc_deco_hylleraas(EC::ECInfo, T1, T2, R1, R2)

Calculate closed-shell singles and doubles Hylleraas energy using contravariant decomposed doubles amplitudes T2=$T_{XY}$ or full contravariant doubles amplitude T2=$T^{ij}_{ab}$.

source
ElemCo.DFCoupledCluster.calc_doubles_decomposition_without_doublesMethod
calc_doubles_decomposition_without_doubles(EC::ECInfo)

Decompose $T^{ij}_{ab}=U^{iX}_a U^{jY}_b T_{XY}$ without explicit calculation of $T^{ij}_{ab}$.

The decomposition is done in two steps:

  1. $\bar U^{i\bar X}_a$ is calculated from $v_a^{iL}$ using SVD (with threshold CcOptions.ampsvdtol×CcOptions.ampsvdfac);
  2. MP2 doubles $T^{i}_{aX}$ are calculated from $v_a^{iL}$ and $U^{iX}_a$ and again decomposed using SVD and threshold CcOptions.ampsvdtol.

The SVD-basis is rotated to pseudocanonical basis to diagonalize orbital-energy differences, $ϵ_X = U^{iX}_{a}(ϵ_a-ϵ_i)U^{iX}_a$. The imaginary shift CcOptions.deco_ishiftp is used in the denominator in the calculation of the MP2 amplitudes. The orbital energy differences are saved in file e_X. The SVD-coefficients $U^{iX}_a$ are saved in file C_voX. The starting guess for doubles $T_{XY}$ is saved in file T_XX. Return full MP2 correlation energy (using the imaginary shift).

source
ElemCo.DFCoupledCluster.calc_svd_dcsd_residualMethod
calc_svd_dcsd_residual(EC::ECInfo, T1, T2)

Calculate decomposed closed-shell DCSD residual with $T^{ij}_{ab}=U^{iX}_a U^{jY}_b T_{XY}$ and $R_{XY}=U^{iX†}_a U^{jY†}_b R^{ij}_{ab}$. T2 contains decomposed amplitudes $T_{XY}$ or full amplitudes $T^{ij}_{ab}$.

If T2 is $T^{ij}_{ab}$, the residual is also returned in full form.

source
ElemCo.DFCoupledCluster.calc_vᵥᵒˣMethod
calc_vᵥᵒˣ(EC::ECInfo)

Calculate $\hat v_a^{iX} = \hat v_{ak}^{ci} U^{kX}_c$ with $\hat v_{ak}^{ci} = \hat v_a^{cL} \hat v_k^{iL}$ and $U^{kX}_c$ from file C_voX.

source
ElemCo.DFCoupledCluster.contravariant_deco_doublesFunction
contravariant_deco_doubles(EC::ECInfo, T2, projx=false)

Calculate contravariant doubles amplitudes $T̃^{ij}_{ab} = 2T^{ij}_{ab} - T^{ij}_{ba}$ with $T^{ij}_{ab} = U^{iX}_a U^{jY}_b T_{XY}$. If projx is true, the projected exchange is returned: $T̃_{XY} = U^{†a}_{iX} U^{†b}_{jY} T̃^{ij}_{ab}$

source
ElemCo.DFCoupledCluster.dress_df_fockMethod
dress_df_fock(EC, T1)

Dress DF fock matrix with DF 3-index integrals.

The dress-contribution is added to the original fock matrix from file f_mm. The dressed fock matrix is stored in file df_mm.

source
ElemCo.DFCoupledCluster.get_tildevˣˣMethod
get_tildevˣˣ(EC::ECInfo)

Return $\tilde v^{XY} = U^{kX}_c U^{lX}_d (2 v_{kl}^{cd} - v_{lk}^{cd} )$ with $v_{kl}^{cd} = v_k^{cL} v_l^{dL'}δ_{LL'}$.

The integrals will be read from file td_^XX. If the file does not exist, the integrals will be calculated and stored in file td_^XX. vk^{cL} and U^{kX}c are read from files d_ovL and C_voX.

source