Density-fitted Coupled Cluster methods
ElemCo.DFCoupledCluster — ModuleDFCoupledCluster
Density-fitted coupled-cluster methods.
Exported functions
ElemCo.DFCoupledCluster.calc_dressed_3idx — Methodcalc_dressed_3idx(EC::ECInfo, T1)Calculate dressed integrals for 3-index integrals from file mmL.
ElemCo.DFCoupledCluster.calc_svd_dc — Methodcalc_svd_dc(EC::ECInfo, method::AbstractString)Calculate decomposed closed-shell DCSD or DCD with $T^{ij}_{ab}=U^{iX}_a U^{jY}_b T_{XY}$.
ElemCo.DFCoupledCluster.calc_svd_dc — Methodcalc_svd_dc(EC::ECInfo, method::ECMethod)Calculate decomposed closed-shell DCSD or DCD with $T^{ij}_{ab}=U^{iX}_a U^{jY}_b T_{XY}$.
Currently only DC methods are supported. DF integrals are used (have to be calculated before). The starting guess for SVD-coefficients is calculated without doubles, see calc_doubles_decomposition_without_doubles.
Internal functions
ElemCo.DFCoupledCluster.calc_3idx_svd_decomposition — Methodcalc_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).
ElemCo.DFCoupledCluster.calc_MP2_amplitudes_from_3idx — Methodcalc_MP2_amplitudes_from_3idx(EC::ECInfo, voL::AbstractArray, ishift)Calculate MP2 amplitudes from $v_a^{iL}$.
The imaginary shift ishift is used in the denominator in the calculation of the MP2 amplitudes.
ElemCo.DFCoupledCluster.calc_MP2_from_3idx — Methodcalc_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. Returns total energy, SS, OS and Openshell (0.0) contributions as a NamedTuple (E,ESS,EOS,EO).
ElemCo.DFCoupledCluster.calc_deco_doubles_energy — Methodcalc_deco_doubles_energy(EC::ECInfo, T2)Calculate closed-shell doubles energy using decomposed doubles amplitudes T2=$T_{XY}$ or T2=$T^{ij}_{ab}$ using density-fitted integrals.
Returns total energy, SS, OS and Openshell (0.0) contributions as a NamedTuple (E,ESS,EOS,EO).
ElemCo.DFCoupledCluster.calc_deco_hylleraas — Methodcalc_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}$.
Returns total energy, SS, OS and Openshell (0.0) contributions as a NamedTuple (E,ESS,EOS,EO).
ElemCo.DFCoupledCluster.calc_df_doubles_energy — Methodcalc_df_doubles_energy(EC::ECInfo, T2)Calculate closed-shell doubles energy using DF integrals and T2[a,b,i,j] = $T^{ij}_{ab}$.
Returns total energy, SS, OS and Openshell (0.0) contributions as a NamedTuple (E,ESS,EOS,EO).
ElemCo.DFCoupledCluster.calc_doubles_decomposition — Methodcalc_doubles_decomposition(EC::ECInfo)Decompose $T^{ij}_{ab}=U^{iX}_a U^{jY}_b T_{XY}$
ElemCo.DFCoupledCluster.calc_doubles_decomposition_with_doubles — Methodcalc_doubles_decomposition_with_doubles(EC::ECInfo)Decompose $T^{ij}_{ab}=U^{iX}_a U^{jY}_b T_{XY}$ using explicit doubles amplitudes $T^{ij}_{ab}$.
ElemCo.DFCoupledCluster.calc_doubles_decomposition_without_doubles — Methodcalc_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:
- $\bar U^{i\bar X}_a$ is calculated from $v_a^{iL}$ using SVD (with threshold
CcOptions.ampsvdtol×CcOptions.ampsvdfac); - 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, SS, OS, and Openshell(0.0) (using the imaginary shift) as a NamedTuple (E,ESS,EOS,EO).
ElemCo.DFCoupledCluster.calc_svd_dcsd_residual — Methodcalc_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.
ElemCo.DFCoupledCluster.calc_voX — Methodcalc_voX(EC::ECInfo; calc_vᵥᵒˣ=false, calc_vᵛₒₓ=false)Calculate $\hat v_a^{iX} = \hat v_{ak}^{ci} U^{kX}_c$ and/or $\hat v^c_{kX} = \hat v_{ak}^{ci} U^{†a}_{kX}$ with $\hat v_{ak}^{ci} = \hat v_a^{cL} \hat v_k^{iL}$ and $U^{kX}_c$ from file C_voX.
Return a tuple (vᵥᵒˣ, vᵛₒₓ) (not calculated intermediates are empty arrays).
ElemCo.DFCoupledCluster.contravariant_deco_doubles — Functioncontravariant_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}$
ElemCo.DFCoupledCluster.dress_df_fock — Methoddress_df_fock(EC::ECInfo, 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. Additionally, the coulomb and exchange dressing contributions to $\hat f_k^c$ are stored in files dfc_ov and dfe_ov.
ElemCo.DFCoupledCluster.gen_vₓˣᴸ — Methodgen_vₓˣᴸ(EC::ECInfo)Generate $v_X^{X'L} = v_a^{cL} U^{†a}_{kX} U^{kX'}_c$ using bare integrals.
The integrals and the SVD-coefficients are read from files mmL and C_voX, and the result is stored in file X^XL.
ElemCo.DFCoupledCluster.get_ssv_osvˣˣ — Methodget_ssv_osvˣˣ(EC::ECInfo)Return $ssv^{XY} = U^{kX}_c U^{lX}_d (v_{kl}^{cd} - v_{lk}^{cd} )$ and $osv^{XY} = U^{kX}_c U^{lX}_d v_{kl}^{cd}$ with $v_{kl}^{cd} = v_k^{cL} v_l^{dL'}δ_{LL'}$.
The integrals will be read from files ssd_^XX and osd_^XX. If the files do not exist, the integrals will be calculated and stored in files ssd_^XX and osd_^XX. vk^{cL} and U^{kX}c are read from files d_ovL and C_voX.
ElemCo.DFCoupledCluster.save_pseudo_dress_df_fock — Methodsave_pseudo_dress_df_fock(EC::ECInfo)Save non-dressed DF fock matrix from file f_mm to dressed file df_mm.
ElemCo.DFCoupledCluster.save_pseudodressed_3idx — Methodsave_pseudodressed_3idx(EC::ECInfo)Save non-dressed 3-index integrals from file mmL to dressed files.