Coupled-cluster methods
ElemCo.CoupledCluster — ModuleCoupled-cluster methods
The following coupled-cluster methods are implemented in ElemCo.jl:
ccsd- closed-shell implementation, for open-shell systems defaults touccsd,uccsd- unrestricted implementation,rccsd- restricted implementation (for high-spin RHF reference only),ccsd(t)- closed-shell implementation,dcsd- closed-shell implementation, for open-shell systems defaults toudcsd,udcsd- unrestricted implementation,rdcsd- restricted implementation (for high-spin RHF reference only),λccsd- calculation of Lagrange multipliers, closed-shell implementation,λccsd(t)- closed-shell implementation,λdcsd- calculation of Lagrange multipliers, closed-shell implementation.
The most efficient version of closed-shell CCSD/DCSD in ElemCo.jl combines the dressed factorization from [Kats2013] with the cckext type of factorization from [Hampel1992] and is given by
\[\begin{align*} \mathcal{L} &= v_{kl}^{cd} \tilde T^{kl}_{cd} + \left(\hat f_k^c + f_k^c\right) T^k_c + Λ_{ij}^{ab} \left(\hat v_{kl}^{ij} \red{+ v_{kl}^{cd} T^{ij}_{cd}}\right) T^{kl}_{ab} + Λ_{ij}^{ab} R^{ij}_{pq} δ_a^p δ_b^q \red{+Λ_{ij}^{ab} v_{kl}^{cd}T^{kj}_{ad}T^{il}_{cb}}\\ &+ Λ_{ij}^{ab} \mathcal{P}(ai;bj)\left\{\left(\hat f_a^c - \red{2\times}\frac{1}{2}v_{kl}^{cd} \tilde T^{kl}_{ad}\right)T^{ij}_{cb} - \left(\hat f_k^i + \red{2\times}\frac{1}{2}v_{kl}^{cd}\tilde T^{il}_{cd}\right)T^{kj}_{ab} \right.\\ &+ \left(\hat v_{al}^{id} + \frac{1}{2} v_{kl}^{cd}\tilde T^{ik}_{ac}\right)\tilde T^{lj}_{db} - \hat v_{ka}^{ic} T^{kj}_{cb} -\hat v_{kb}^{ic} T^{kj}_{ac} \red{-v_{kl}^{cd}T^{ki}_{da}\left(T^{lj}_{cb}-T^{lj}_{bc}\right)}\\ &\left.- R^{ij}_{pq} \left(δ_k^p δ_b^q - \frac{1}{2} δ_k^p δ_l^q T^l_b\right) T^k_a \right\} +Λ_i^a R^{ij}_{pq}\left( 2δ_a^p δ_j^q - δ_j^p δ_a^q \right) -Λ_i^a T^k_a R^{ij}_{pq}\left( 2δ_k^p δ_j^q - δ_j^p δ_k^q \right)\\ &+Λ_i^a \hat h_a^i + Λ_i^a \hat f_j^b \tilde T^{ij}_{ab} - Λ_i^a \hat v_{jk}^{ic} \tilde T^{kj}_{ca}, \end{align*}\]
where
\[R^{ij}_{pq} = v_{pq}^{rs} \left(\left(T^{ij}_{ab}+T^i_a T^j_b\right)δ_r^a δ_s^b +δ_r^i T^j_b δ_s^b + T^i_a δ_r^a δ_s^j + δ_r^i δ_s^j \right). \]
The DCSD Lagrangian is obtained by removing terms in red. Integrals with hats are dressed integrals, i.e. they are obtained by dressing the integrals with the singles amplitudes, e.g., $\hat v_{kl}^{id} = v_{kl}^{id} + v_{kl}^{cd} T^i_c$.
Lagrange multiplier equations for coupled cluster singles/doubles methods:
\[\begin{aligned} \frac{\partial\mathcal{L}}{\partial T^m_e}&= \left(2 v_{qm}^{pe} - v_{qm}^{ep}\right) \hat D_p^q + 2f_m^e - 2 Λ_{ij}^{eb} \hat v_{mb}^{ij} + 2 K_{mj}^{rs} \delta_r^e \left(\delta_s^j + \delta_s^b T^j_b \right) \\ &+2 D_{mj}^{kl} \hat v_{kl}^{ej} - 2 Λ_{ij}^{eb} \left(\hat v_{mb}^{cd} T^{ij}_{cd}\right) - D_d^e \hat f_m^d + D_m^k \hat f_k^e - 2 D_{id}^{el} \hat v_{ml}^{id} + 2 D_{md}^{al} \hat v_{al}^{ed}\\ &+ 2\bar D_{ic}^{ek} \hat v_{km}^{ic} - 2\bar D_{mc}^{ak} \hat v_{ka}^{ec} - Λ_{i}^{e} \hat f_{m}^{i} + Λ_{m}^{a} \hat f_{a}^{e} - Λ_i^e x_m^i - Λ_m^a x_a^e. \end{aligned}\]
\[\begin{aligned} \frac{\partial\mathcal{L}}{\partial T^{mn}_{ef}}&= \tilde v_{mn}^{ef} + Λ_{ij}^{ef} \left(\hat v_{mn}^{ij} \red{+ v_{mn}^{cd} T^{ij}_{cd}}\right) \red{+ D_{mn}^{kl} v_{kl}^{ef} } + K_{mn}^{rs} \delta_r^e \delta_s^f\\ &+ \mathcal{P}(em;fn)\left\{ Λ_{mn}^{af} \left(\hat f_a^e - \red{2\times}\frac{1}{2} x_a^e\right) - Λ_{in}^{ef} \left(\hat f_m^i + \red{2\times}\frac{1}{2} x_m^i\right) \right. \\ &+ \mathcal{T}(mn) \left[\red{2\times}\frac{1}{4} v_{kn}^{ef} D_m^k - \red{2\times}\frac{1}{4} v_{mn}^{cf} D_c^e + Λ_{in}^{af}\left(\hat v_{am}^{ie} + v_{km}^{ce}\tilde T^{ik}_{ac}\right)\right.\\ &\left.+ \frac{1}{2} \left( Λ_m^e \hat f_n^f + Λ_n^a \hat v_{am}^{fe} - Λ_i^f \hat v_{nm}^{ie} \right) \right] \\ &\left.- Λ_{in}^{af} \hat v_{ma}^{ie} - Λ_{in}^{eb} \hat v_{mb}^{if} \red{-D_{nc}^{fl} v_{ml}^{ce} +\bar D_{nd}^{ek}v_{km}^{fd}} \right\},\\ \end{aligned}\]
with
\[\begin{aligned} &K_{mn}^{rs} = \hat \Lambda_{mn}^{pq} v_{pq}^{rs} \\ &\hat \Lambda_{mn}^{pq} = Λ_{mn}^{ab}\delta_a^p\delta_b^q - Λ_{mn}^{ab} T^i_a \delta_i^p \delta_b^q - Λ_{mn}^{ab} \delta_a^p T^j_b \delta_j^q + Λ_{mn}^{ab} T^i_a T^j_b \delta_i^p \delta_j^q\\ &x_m^i = \tilde T^{il}_{cd} v_{ml}^{cd} \qquad\qquad x_a^e = \tilde T^{kl}_{ac} v_{kl}^{ec}\\ &\mathcal{T}(mn) X_{mn}^{ef} = 2X_{mn}^{ef} - X_{nm}^{ef}\\ &D_{ij}^{kl} = \Lambda_{ij}^{cd} T^{kl}_{cd} \\ &D_{ib}^{aj} = \Lambda_{ik}^{ac} \tilde T^{kj}_{cb} \\ &\bar D_{ib}^{aj} = \Lambda_{ik}^{ac} T^{kj}_{cb} + \Lambda_{ik}^{ca} T^{kj}_{bc} \\ \end{aligned}\]
Exported functions
ElemCo.CoupledCluster.calc_1RDM — Methodcalc_1RDM(EC::ECInfo, U1, U2, T1, T2)Calculate the 1RDM for the closed-shell CCSD or DCSD equations.
Return D1[p,q]=$D_p^q$, the 1RDM without T1 singles terms, and dD1[p,q]=$\hat D_p^q$, the 1RDM with all T1 terms included.
ElemCo.CoupledCluster.calc_1RDM — Methodcalc_1RDM(EC::ECInfo, U1, U1os, U2, U2ab, T1, T2, T2ab, spin)Calculate the spin-1RDM for the unrestricted CCSD or DCSD equations.
U1, U2, T1, T2 are the Lagrange multipliers and amplitudes for spin∈{:α,:β}, U1os are the singles Lagrange multipliers for opposite spin, and U2ab, T2ab are the αβ Lagrange multipliers and amplitudes.
Return D1[p,q]=$D_p^q$, the 1RDM without T1 singles terms, and dD1[p,q]=$\hat D_p^q$, the 1RDM with all T1 terms included.
ElemCo.CoupledCluster.calc_MP2 — Functioncalc_MP2(EC::ECInfo, addsingles=true)Calculate closed-shell MP2 energy and amplitudes. The amplitudes are stored in T_vvoo file. If addsingles: singles are also calculated and stored in T_vo file. Return EMp2 OutDict with keys (E, ESS, EOS, EO).
ElemCo.CoupledCluster.calc_UMP2 — Functioncalc_UMP2(EC::ECInfo, addsingles=true)Calculate unrestricted MP2 energy and amplitudes. The amplitudes are stored in T_vvoo, T_VVOO, and T_vVoO files. If addsingles: singles are also calculated and stored in T_vo and T_VO files. Return EMp2 OutDict with keys (E, ESS, EOS, EO).
ElemCo.CoupledCluster.calc_UMP2_energy — Functioncalc_UMP2_energy(EC::ECInfo, addsingles=true)Calculate open-shell MP2 energy from precalculated amplitudes. If addsingles: singles energy is also calculated. Return EMp2 OutDict with keys (E, ESS, EOS, EO).
ElemCo.CoupledCluster.calc_cc — Methodcalc_cc(EC::ECInfo, method::ECMethod)Calculate coupled cluster amplitudes.
Exact specification of the method is given by method. Returns energies ::OutDict with the following keys:
"E"- correlation energy"ESS"- same-spin component"EOS"- opposite-spin component"EO"- open-shell component (defined as $E_{αα} - E_{ββ}$)"EIAS"- internal-active singles (for 2D methods)"EW"- singlet/triplet energy contribution (for 2D methods)
ElemCo.CoupledCluster.calc_lm_cc — Methodcalc_lm_cc(EC::ECInfo, method::ECMethod)Calculate coupled cluster Lagrange multipliers.
Exact specification of the method is given by method.
ElemCo.CoupledCluster.calc_pertT — Methodcalc_pertT(EC::ECInfo, method::ECMethod; save_t3=false)Calculate (T) correction for [Λ][U]CCSD(T)
Return ( "ET3"=(T)-energy, "ET3b"=[T]-energy)) OutDict. If save_t3 is true, the T3 amplitudes are saved in T_vvvooo file (only for closed-shell).
Internal functions
ElemCo.CoupledCluster.SVD_triples_to_singles_and_doubles_residuals — MethodSVD_triples_to_singles_and_doubles_residuals(EC)Calculate contributions from triples to singles and doubles residuals.
ElemCo.CoupledCluster.calc_3ext_times_T2 — Functioncalc_3ext_times_T2(EC::ECInfo, T2::AbstractArray, o1::Char='o', v1::Char='v', o2::Char='o', v2::Char='v')Calculate $\hat v_{mb}^{cd} T^{ij}_{cd}$ intermediate required in calc_ccsd_vector_times_Jacobian and store as vT_ovoo[m,b,i,j].
ElemCo.CoupledCluster.calc_3ext_times_T2 — Methodcalc_3ext_times_T2(EC::ECInfo, T2a::AbstractArray, T2b::AbstractArray, T2ab::AbstractArray)Calculate $\hat v_{mb}^{cd} T^{ij}_{cd}$ intermediates required in calc_ccsd_vector_times_Jacobian for αα, ββ, and αβ amplitudes and store as vT_ovoo[m,b,i,j], vT_OVOO[M,B,I,J], vT_oVoO[m,B,i,J] and vT_OvOo[M,b,I,j].
ElemCo.CoupledCluster.calc_4idx_T3T3_XY — Methodcalc_4idx_T3T3_XY(EC::ECInfo, T2, UvoX, ϵX)Calculate $D^{ij}_{ab} = T^i_{aXY} T^j_{bXY}$ using half-decomposed imaginary-shifted perturbative triple amplitudes $T^i_{aXY}$ from T2 (and UvoX)
ElemCo.CoupledCluster.calc_D2 — Functioncalc_D2(EC::ECInfo, T1, T2, scalepp=false)Calculate $D^{ij}_{pq} = T^{ij}_{cd} + T^i_c T^j_d +δ_{ik} T^j_d + T^i_c δ_{jl} + δ_{ik} δ_{jl}$. Return as D[pqij]
If scalepp: D[ppij] elements are scaled by 0.5 (for triangular summation).
ElemCo.CoupledCluster.calc_D2 — Methodcalc_D2(EC::ECInfo, T1, T2, spin::Symbol)Calculate $^{σσ}D^{ij}_{pq} = T^{ij}_{cd} + P_{ij}(T^i_c T^j_d +δ_{ik} T^j_d + T^i_c δ_{jl} + δ_{ik} δ_{jl})$ with $P_{ij} X_{ij} = X_{ij} - X_{ji}$. Return as D[pqij]
ElemCo.CoupledCluster.calc_D2ab — Functioncalc_D2ab(EC::ECInfo, T1a, T1b, T2ab, scalepp=false)Calculate $^{αβ}D^{ij}_{pq} = T^{ij}_{cd} + T^i_c T^j_d +δ_{ik} T^j_d + T^i_c δ_{jl} + δ_{ik} δ_{jl}$ Return as D[pqij]
If scalepp: D[ppij] elements are scaled by 0.5 (for triangular summation)
ElemCo.CoupledCluster.calc_E_Coe — Functioncalc_E_Coe(eigenvalue_vector, q)Calculate the coefficient matrix in QV-CCD/DCD residual calculation.
ElemCo.CoupledCluster.calc_R_from_U_F — Methodcalc_R_from_U_F(e, X, F, q)Calculate intermediate R with F and eigenvalue e, eigenvectors X of corresponding U in QV-CCD/DCD.
ElemCo.CoupledCluster.calc_cc_resid — Methodcalc_cc_resid(EC::ECInfo, T1, T2, T3; dc=false, tworef=false, fixref=false)Calculate CCSDT or DC-CCSDT residual.
ElemCo.CoupledCluster.calc_cc_resid — Methodcalc_cc_resid(EC::ECInfo, T1, T2; dc=false, tworef=false, fixref=false, linearized=false)Calculate CCSD or DCSD closed-shell residual.
ElemCo.CoupledCluster.calc_cc_resid — Methodcalc_cc_resid(EC::ECInfo, T1a, T1b, T2a, T2b, T2ab; dc=false, tworef=false, fixref=false)Calculate UCCSD or UDCSD residual.
ElemCo.CoupledCluster.calc_cc_resid — Methodcalc_cc_resid(EC::ECInfo, T1a, T1b, T2a, T2b, T2ab, T3aaa, T3bbb, T3abb, T3aab; dc=false)Calculate UCCSDT or UDC-CCSDT residual.
ElemCo.CoupledCluster.calc_ccsd_vector_times_Jacobian — Methodcalc_ccsd_vector_times_Jacobian(EC::ECInfo, U1, U2; dc=false)Calculate the vector times the Jacobian for the closed-shell CCSD or DCSD equations.
ElemCo.CoupledCluster.calc_ccsd_vector_times_Jacobian — Methodcalc_ccsd_vector_times_Jacobian(EC::ECInfo, U1a, U1b, U2a, U2b, U2ab; dc=false)Calculate the vector times the Jacobian for the unresticted CCSD or DCSD equations.
Return R1a, R1b, R2a, R2b, R2ab
ElemCo.CoupledCluster.calc_ccsd_vector_times_Jacobian4ab — Methodcalc_ccsd_vector_times_Jacobian4ab(EC::ECInfo, U1a, U1b, U2a, U2b, U2ab, D1a, D1b; dc=false)Calculate the left vector times the CCSD/DCSD Jacobian for αβ component. Additionally, remaining contributions to the singles residual are calculated.
Return ΔR1a, ΔR1b, R2ab
ElemCo.CoupledCluster.calc_ccsd_vector_times_Jacobian4spin — Methodcalc_ccsd_vector_times_Jacobian4spin(EC::ECInfo, U1a, U1b, U2a, U2b, U2ab, D1, dD1, dD1os, spin; dc=false)Calculate the vector times the CCSD/DCSD Jacobian for the given spin (same-spin residual for doubles). The singles residual is missing some terms which are added in calc_ccsd_vector_times_Jacobian4ab.
Return R1 and R2
ElemCo.CoupledCluster.calc_ccsdt — Functioncalc_ccsdt(EC::ECInfo, useT3=false, cc3=false)Calculate decomposed closed-shell DC-CCSDT amplitudes.
If useT3: (T) amplitudes from a preceding calculations will be used as starting guess. If cc3: calculate CC3 amplitudes.
ElemCo.CoupledCluster.calc_correlation_norm — Methodcalc_correlation_norm(EC::ECInfo, U1, U2)Calculate the norm of the correlation part of the CCSD or DCSD equations using Lagrange multipliers and amplitudes.
Return $⟨Λ|Ψ⟩ = ⟨Λ_1|T_1⟩ + ⟨Λ_2|T_2+\frac{1}{2}T_1 T_1⟩$.
ElemCo.CoupledCluster.calc_correlation_norm — Methodcalc_correlation_norm(EC::ECInfo, U1a, U1b, U2a, U2b, U2ab)Calculate the norm of the correlation part of the UCCSD or UDCSD equations using Lagrange multipliers and amplitudes.
Return $⟨Λ|Ψ⟩ = ⟨Λ_1|T_1⟩ + ⟨Λ_2|T_2+\frac{1}{2}T_1 T_1⟩$.
ElemCo.CoupledCluster.calc_dU2 — Functioncalc_dU2(EC::ECInfo, T1, T12, U2, o1='o', v1='v', o2='o', v2='v')Calculate the "dressed" $Λ_2$ for CCSD/DCSD.
T12 is the T1 amplitude for the second electron of U2 (=T1 for closed-shell and same-spin U2). Return dU2[p,q,m,n]=$Λ_{mn}^{ab}δ_a^p δ_b^q - Λ_{mn}^{ab}T^i_a δ_i^p δ_b^q - Λ_{mn}^{ab}δ_a^p T^j_b δ_j^q + Λ_{mn}^{ab}T^i_a T^j_b δ_i^p δ_j^q$.
ElemCo.CoupledCluster.calc_doubles_energy — Methodcalc_doubles_energy(EC::ECInfo, T2a, T2b, T2ab)Calculate energy for αα (T2a), ββ (T2b) and αβ (T2ab) doubles amplitudes. Returns total energy, SS, OS and Openshell contributions as OutDict with keys (E,ESS,EOS,EO).
ElemCo.CoupledCluster.calc_doubles_energy — Methodcalc_doubles_energy(EC::ECInfo, T2)Calculate coupled-cluster closed-shell doubles energy. Returns total energy, SS, OS and Openshell (0.0) contributions as OutDict with keys (E,ESS,EOS,EO).
ElemCo.CoupledCluster.calc_dressed_ints — Methodcalc_dressed_ints(EC::ECInfo, T1, T12, o1::Char, v1::Char, o2::Char, v2::Char;
calc_d_vvvv=EC.options.cc.calc_d_vvvv, calc_d_vvvo=EC.options.cc.calc_d_vvvo,
calc_d_vovv=EC.options.cc.calc_d_vovv, calc_d_vvoo=EC.options.cc.calc_d_vvoo)Dress integrals with singles amplitudes.
The singles and orbspaces for first and second electron are T1, o1, v1 and T12, o2, v2, respectively. The integrals from EC.fd are used and dressed integrals are stored as d_????. $\hat v_{ab}^{cd}$, $\hat v_{ab}^{ci}$, $\hat v_{ak}^{cd}$ and $\hat v_{ab}^{ij}$ are only calculated if requested in EC.options.cc or using keyword-arguments.
ElemCo.CoupledCluster.calc_dressed_ints — Methodcalc_dressed_ints(EC::ECInfo, T1;
calc_d_vvvv=EC.options.cc.calc_d_vvvv, calc_d_vvvo=EC.options.cc.calc_d_vvvo,
calc_d_vovv=EC.options.cc.calc_d_vovv, calc_d_vvoo=EC.options.cc.calc_d_vvoo)Dress integrals with singles.
$\hat v_{ab}^{cd}$, $\hat v_{ab}^{ci}$, $\hat v_{ak}^{cd}$ and $\hat v_{ab}^{ij}$ are only calculated if requested in EC.options.cc or using keyword-arguments.
ElemCo.CoupledCluster.calc_focklike_vT2 — Methodcalc_focklike_vT2(EC::ECInfo, T2a::AbstractArray, T2b::AbstractArray, T2ab::AbstractArray)Calculate the fock-like intermediates $v_{kl}^{cd} T^{il}_{cd}$ and v_{kl}^{cd} T^{kl}_{ad} required in calc_ccsd_vector_times_Jacobian for αα/ββ, and αβ amplitudes. Store as vT_oo[ki], vT_vv[ac], vT_OO[ki] and vT_VV[ac].
ElemCo.CoupledCluster.calc_hylleraas — Methodcalc_hylleraas(EC::ECInfo, T1a, T1b, T2a, T2b, T2ab, R1a, R1b, R2a, R2b, R2ab)Calculate singles and doubles Hylleraas energy. Returns total energy, SS, OS and Openshell contributions as OutDict with keys (pE,pESS,pEOS,pEO,E,ESS,EOS,EO) where pE are projected energies.
ElemCo.CoupledCluster.calc_hylleraas — Methodcalc_hylleraas(EC::ECInfo, T1, T2, R1, R2)Calculate closed-shell singles and doubles Hylleraas energy. Returns total energy, SS, OS and Openshell (0.0) contributions as OutDict with keys (pE,pESS,pEOS,pEO,E,ESS,EOS,EO) where pE are projected energies.
ElemCo.CoupledCluster.calc_hylleraas4spincase — Methodcalc_hylleraas4spincase(EC::ECInfo, o1, v1, o2, v2, T1, T1OS, T2, R1, R2, fov)Calculate singles and doubles Hylleraas energy for one spin case.
Returns OutDict with keys (pE2,pE1,pE1_2,E2,E1,E1_2) where pE are projected energies and E are Hylleraas energies, and 2, 1, 1_2 are doubles, singles and quadratic singles contributions.
ElemCo.CoupledCluster.calc_intermediates4triples — Methodcalc_intermediates4triples(EC::ECInfo)Calculate intermediates for decomposed triples independent of the amplitudes.
ElemCo.CoupledCluster.calc_pertT_closed_shell — Methodcalc_pertT_closed_shell(EC::ECInfo; save_t3=false)Calculate (T) correction for closed-shell CCSD.
Return ( "ET3"=(T)-energy, "ET3b"=[T]-energy)) OutDict.
ElemCo.CoupledCluster.calc_pertT_mixedspin — Methodcalc_pertT_mixedspin(EC::ECInfo, T1, T2, T1os, T2mix, spin::Symbol)Calculate mixed-spin (T) correction for UCCSD(T) (i.e., ααβ or ββα).
spin ∈ (:α,:β) T1 and T2 are same-spin amplitudes, T1os are opposite-spin amplitudes, and T2mix are mixed-spin amplitudes with the second electron being spin, i.e., Tβα for spin == :α and Tαβ for spin == :β. Return ( "ET3"=(T)-energy, "ET3b"=[T]-energy)) OutDict.
ElemCo.CoupledCluster.calc_pertT_samespin — Methodcalc_pertT_samespin(EC::ECInfo, T1, T2, spin::Symbol)Calculate same-spin (T) correction for UCCSD(T) (i.e., ααα or βββ). spin ∈ (:α,:β)
Return ( "ET3"=(T)-energy, "ET3b"=[T]-energy)) OutDict.
ElemCo.CoupledCluster.calc_pertT_unrestricted — Methodcalc_pertT_unrestricted(EC::ECInfo)Calculate (T) correction for UCCSD.
Return ( "ET3"=(T)-energy, "ET3b"=[T]-energy)) OutDict.
ElemCo.CoupledCluster.calc_qvcc_resid — Methodcalc_qvcc_resid(EC::ECInfo, T1, T2; dc=false)Calculate QV-CCD or QV-DCD closed-shell residual.
ElemCo.CoupledCluster.calc_rings_vT2 — Methodcalc_rings_vT2(EC::ECInfo, T2a::AbstractArray, T2b::AbstractArray, T2ab::AbstractArray; dc=false)Calculate the ring intermediates required in calc_ccsd_vector_times_Jacobian $\hat y_{am}^{ie} = \hat v_{am}^{ie} - \hat v_{am}^{ei} + 2x_{am}^{ie} + v_{mL}^{eD} T^{iL}_{aD}$ and $\hat y_{Bn}^{Jf} = \hat v_{nB}^{fJ} + 2x_{Bn}^{Jf} + v_{nL}^{fD} T^{LJ}_{DB}$ and the spin-flip version of them, with $2x_{am}^{ie} = T^{il}_{ad} (v_{lm}^{de} \red{- v_{ml}^{de}})$ and $2x_{Am}^{Ie} = T^{Il}_{Ad} (v_{lm}^{de} \red{- v_{ml}^{de}})$
The intermediates are stored as vT_voov[amie], vT_VOOV[AMIE], vT_VoOv[BnJf], vT_vOoV[bNjF],
ElemCo.CoupledCluster.calc_singles_energy — Methodcalc_singles_energy(EC::ECInfo, T1a, T1b; fock_only=false)Calculate energy for α (T1a) and β (T1b) singles amplitudes. Returns total energy, SS, OS and Openshell contributions as OutDict with keys (E,ESS,EOS,EO).
ElemCo.CoupledCluster.calc_singles_energy — Methodcalc_singles_energy(EC::ECInfo, T1; fock_only=false)Calculate coupled-cluster closed-shell singles energy. Returns total energy, SS, OS and Openshell (0.0) contributions as OutDict with keys (E,ESS,EOS,EO).
ElemCo.CoupledCluster.calc_space4project_voXL — Methodcalc_space4project_voXL(EC::ECInfo, T2)Calculate space for project_voXL=true approximation.
It is a combination of spaces for triples and contravariant doubles.
ElemCo.CoupledCluster.calc_triples_decomposition — Methodcalc_triples_decomposition(EC::ECInfo)Decompose $T^{ijk}_{abc}$ as $U^{iX}_a U^{jY}_b U^{kZ}_c T_{XYZ}$.
ElemCo.CoupledCluster.calc_triples_decomposition_without_triples — Methodcalc_triples_decomposition_without_triples(EC::ECInfo, T2)Decompose $T^{ijk}_{abc}$ as $U^{iX}_a U^{jY}_b U^{kZ}_c T_{XYZ}$ without explicit calculation of $T^{ijk}_{abc}$.
Compute perturbative $T^i_{aXY}$ and decompose $D^{ij}_{ab} = (T^i_{aXY} T^j_{bXY})$ to get $U^{iX}_a$.
ElemCo.CoupledCluster.calc_triples_residuals! — Methodcalc_triples_residuals!(EC::ECInfo, R1, R2, T2)Calculate decomposed triples DC-CCSDT residuals.
ElemCo.CoupledCluster.calc_vT2_intermediates — Methodcalc_vT2_intermediates(EC::ECInfo, T2a, T2b, T2ab; dc=false)Calculate intermediates required in unrestricted calc_ccsd_vector_times_Jacobian
ElemCo.CoupledCluster.calc_vT2_intermediates — Methodcalc_vT2_intermediates(EC::ECInfo, T2; dc=false)Calculate intermediates required in closed-shell calc_ccsd_vector_times_Jacobian
ElemCo.CoupledCluster.calc_ΛpertT_closed_shell — Methodcalc_ΛpertT_closed_shell(EC::ECInfo)Calculate (T) correction for closed-shell ΛCCSD(T).
The amplitudes are stored in T_vvoo file, and the Lagrangian multipliers are stored in U_vvoo file. Return ( "ET3"=(T) energy, "ET3b"=[T] energy) OutDict.
ElemCo.CoupledCluster.calc_ΛpertT_mixedspin — Methodcalc_ΛpertT_mixedspin(EC::ECInfo, T2, T2mix, U1, U2, U1os, U2mix, spin::Symbol)Calculate mixed-spin (T) correction for ΛUCCSD(T) (i.e., ααβ or ββα).
spin ∈ (:α,:β) U1 and U2/T2 are same-spin Lagrange multipliers/amplitudes, U1os are opposite-spin Lagrange multipliers, and U2mix/T2mix are mixed-spin Lagrange multipliers/amplitudes with the second electron being spin, i.e., Tβα for spin == :α and Tαβ for spin == :β. Return ( "ET3"=(T)-energy, "ET3b"=[T]-energy)) OutDict.
ElemCo.CoupledCluster.calc_ΛpertT_samespin — Methodcalc_ΛpertT_samespin(EC::ECInfo, T2, U1, U2, spin::Symbol)Calculate same-spin (T) correction for ΛUCCSD(T) (i.e., ααα or βββ). spin ∈ (:α,:β)
Return ( "ET3"=(T)-energy, "ET3b"=[T]-energy)) OutDict.
ElemCo.CoupledCluster.calc_ΛpertT_unrestricted — Methodcalc_ΛpertT_unrestricted(EC::ECInfo)Calculate (T) correction for ΛUCCSD(T).
Return ( "ET3"=(T)-energy, "ET3b"=[T]-energy)) OutDict.
ElemCo.CoupledCluster.dress_fock_closedshell — Methoddress_fock_closedshell(EC::ECInfo, T1)Dress the fock matrix (closed-shell). The dressed fock matrix is stored as df_mm.
ElemCo.CoupledCluster.dress_fock_oppositespin — Methoddress_fock_oppositespin(EC::ECInfo)Add the dressed opposite-spin part to the dressed Fock matrix.
ElemCo.CoupledCluster.dress_fock_samespin — Methoddress_fock_samespin(EC::ECInfo, T1, o1::Char, v1::Char)Dress the fock matrix (same-spin part).
ElemCo.CoupledCluster.oss_active_orbitals — Methodoss_active_orbitals(EC::ECInfo)Return the four active orbitals of an (2e,2o) open-shell singlet problem based on a single determinant reference.
ElemCo.CoupledCluster.pseudo_dressed_ints — Functionpseudo_dressed_ints(EC::ECInfo, unrestricted=false;
calc_d_vvvv=EC.options.cc.calc_d_vvvv, calc_d_vvvo=EC.options.cc.calc_d_vvvo,
calc_d_vovv=EC.options.cc.calc_d_vovv, calc_d_vvoo=EC.options.cc.calc_d_vvoo)Save non-dressed integrals in files instead of dressed integrals.
ElemCo.CoupledCluster.test_UaiX — Methodtest_UaiX(EC, UaiX)Test UaiX
ElemCo.CoupledCluster.test_add_to_singles_and_doubles_residuals — Methodtest_add_to_singles_and_doubles_residuals(R1, R2, T1, T2)Test R1(T3) and R2(T3)
ElemCo.CoupledCluster.test_calc_pertT_from_T3 — Methodtest_calc_pertT_from_T3(EC, T3)Test [T]
ElemCo.CoupledCluster.test_dressed_ints — Methodtest_dressed_ints(EC, T1)Compare 3-idx dressed integrals to 4-idx dressed integrals.
- Kats2013D. Kats, and F.R. Manby, Sparse tensor framework for implementation of general local correlation methods, J. Chem. Phys. 138 (2013) 144101. doi:10.1063/1.4798940.
- Hampel1992C. Hampel, K.A. Peterson, and H.-J. Werner, A comparison of the efficiency and accuracy of the quadratic configuration interaction (QCISD), coupled cluster (CCSD), and Brueckner coupled cluster (BCCD) methods, Chem. Phys. Lett. 190 (1992) 1. doi:10.1016/0009-2614(92)86093-W.