MCSCF program

Exported functions

ElemCo.DFMCSCF.dfmcscfMethod
dfmcscf(EC::ECInfo; direct=false)

Main body of Density-Fitted Multi-Configurational Self-Consistent-Field method

source

Internal functions

ElemCo.DFMCSCF.G_risj_calcMethod
G_risj_calc(typer::Integer, types::Integer, num_MO, index_MO, fock_MO::Matrix, DFint_MO)

Calculate the Grisj tensor for the given type of indices r and s. Typer and types are the type of indices r and s, respectively: 1 for doubly occupied orbitals, 2 for singly occupied orbitals, 3 for virtual orbitals. indexMO is the index of the given type of orbitals. DFintMO is the density fitting integrals in molecular orbital basis. Return Grisj tensor.

source
ElemCo.DFMCSCF.G_rtsj_calcMethod
function G_rtsj_calc(typer::Integer,types::Integer, num_MO, DFint_MO, D1::Matrix)

Calculate the Grtsj tensor for the given type of indices r and s. Return Grtsj tensor.

source
ElemCo.DFMCSCF.G_rtsu_calcMethod
G_rtsu_calc(typer::Integer,types::Integer, num_MO, index_MO, DFint_MO, D1::Matrix, D2, fockClosed_MO::Matrix)

Calculate the Grtsu tensor for the given type of indices r and s. Return Grtsu tensor.

source
ElemCo.DFMCSCF.H_multiplyMethod
H_multiply(EC::ECInfo, fock_MO::Matrix, cMO::Matrix, D1::Matrix, v::Vector, num_MO, g::Vector, λ::Number, h_block::NTuple{10, Matrix{Float64}}, HessianType::Symbol)

Do the H * x calculation Depending on the Hessian type, do the calculation from unsimplified and simplified parts of blocks seperatly Calculate the first element of Hv vector, and the part of Hv from the multiplying of first element of v and g vector(first column of Hessian Matrix) Assembly the matrix the Hessian Matrix is | 0 g21'*λ g31'λ g_22'λ g32'*λ | | g21λ h2121 h2131 h2122 h2132 | | g_31λ h3121 h3131 h3122 h3132 | | g22*λ h2221 h2231 h2222 h2232 | | g32*λ h3221 h3231 h3222 h3232 | Return vector σ in the order of [σ[1];σ21;σ31;σ22;σ32]

source
ElemCo.DFMCSCF.Hx_SCIMethod
Hx_SCI(EC::ECInfo, fock_MO::Matrix, cMO::Matrix, x::Vector, num_MO, D1::Matrix)

Calculate the SCI part of σ which are from 3 blocks which are zero from the Hessian caclulation funcion. SOSCI, SOSCI_original, SCI Hessians need this function Return vector σ in the order of [σ21;σ31;σ22;σ32]

source
ElemCo.DFMCSCF.Hx_SOMethod
Hx_SO(h_3131, h_3231, h_3121, x, num_MO)

Calculate the SO part of σ which are from the 3 non-zero blocks of SO Hessian. Return vector σ in the order of [σ21;σ31;σ22;σ32]

source
ElemCo.DFMCSCF.Hx_commonMethod
Hx_common(h_2121, h_2221, h_3221, h_2231, h_2222, h_3222, h_3232, x)

Calculate the common part of the σ which are from the 7 non-zero blocks for both SO and other simplified Hessian. Return vector σ in the order of [σ21;σ31;σ22;σ32]

source
ElemCo.DFMCSCF.calc_UMethod
calc_U(EC::ECInfo, N_MO::Integer, x::Vector)

calculate orbital-rotational matrix U (approximately unitary because of the anti-hermitian property of the R which is constructed from x).

source
ElemCo.DFMCSCF.calc_gMethod
calc_g(EC::ECInfo, A::Matrix)

Calculate the orbital gradient g by antisymmetrizing the matrix A and rearranging the elements. The order of the elements in vector gblockwise is vectorized g21, g31, g22, g32, among which g21 = g[occ1o,occ2], g31 = g[occv,occ2], g22 = g[occ1o,occ1o], g32 = g[occv,occ1o] return vector gblockwise

source
ElemCo.DFMCSCF.calc_h_SCIFunction
calc_h_SCI(EC::ECInfo, μjL, μuL, cMO::Matrix, D1::Matrix, D2, fock_MO::Matrix, fockClosed_MO::Matrix, A::Matrix, HessianType::Symbol=:SCI)

Calculate the SCI Hessian and modified SOSCI Hessian. Modified SOSCI method includes fixed part 4 blocks, the SO part 2 blocks, the SCI version of the rest 4 blocks(including h3232), among which 3(except h3232) are caculated in Hmultiply SCI Hessian includes fixed part 4 blocks, SCI special part 6 blocks, among which 3 blocks are caculated in this function, and 3 are caculated in Hmultiply Return h2121, h3121, h3131, h2221, h2231, h2222, h3221, h3231, h3222, h3232

source
ElemCo.DFMCSCF.calc_h_SOMethod
calc_h_SO(EC::ECInfo, μjL, μuL, abL, cMO::Matrix, D1::Matrix, D2, fock_MO::Matrix, fockClosed_MO::Matrix, A::Matrix)

Calculate the Second Order Hessian. Second Order Hessian includes fixed part 4 blocks, 2 SO part blocks, the rest 4 blocks (including H3232) are calculated as SO special part, which are implemented in this function. Return h2121, h3121, h3131, h2221, h2231, h2222, h3221, h3231, h3222, h_3232

source
ElemCo.DFMCSCF.calc_h_SO_SCI_originalMethod
calc_h_SO_SCI_original(EC::ECInfo, μjL, μuL, abL, cMO::Matrix, D1::Matrix, D2, fock_MO::Matrix, fockClosed_MO::Matrix, A::Matrix)

Calculate the original SOSCI Hessian. Original SOSCI Hessian includes fixed part 4 blocks, the SO part 3 blocks (including h3232), and the 3 SCI blocks. These 3 SCI blocks are returned as [1,1] zero matrix in this function, the calculation is done in the Hmultiply function. Return h2121, h3121, h3131, h2221, h2231, h2222, h3221, h3231, h3222, h3232

source
ElemCo.DFMCSCF.calc_realEMethod
calc_realE(EC::ECInfo, μuL, fockClosed_MO::Matrix, D1::Matrix, D2, cMO::Matrix)

Calculate the energy with the given density matrices and (updated) cMO, $E = (h_i^i + ^cf_i^i) + ^1D^t_u ^cf_t^u + 0.5 ^2D^{tv}_{uw} v_{tv}^{uw}$.

source
ElemCo.DFMCSCF.checkE_modifyTrustMethod
checkE_modifyTrust(E::Number, E_former::Number, E_2o::Number, trust::Number)

Check if the energy E is lower than the former energy E_former, if not, reject the update of coefficients and modify the trust region. Return reject::Bool and trust.

source
ElemCo.DFMCSCF.denMatCreateMethod
denMatCreate(EC::ECInfo)

Calculate the one particle density matrix and two particle density matrix of active electrons for high-spin determinant. D1[t,u] = $^1D^t_u = ⟨Ψ|\hat{E}^t_u|Ψ⟩ = ⟨ Ψ |∑_σ \hat{a}^†_{tσ} \hat{a}_{uσ}|Ψ⟩$, D2[t,u,v,w] = $=^2D^{tv}_{uw}=0.5 ⟨Ψ|\hat{E}^{tv}_{uw}+\hat{E}^{uv}_{tw}|Ψ⟩$, in which $\hat{E}_{tu,vw} = \hat{E}^t_u \hat{E}^v_w - δ_{uv} \hat{E}^t_w = ∑_{στ}\hat{a}^†_{tσ} \hat{a}^†_{vτ} \hat{a}_{wτ} \hat{a}_{uσ}$. Return D1 and D2.

source
ElemCo.DFMCSCF.dfACASMethod
dfACAS(EC::ECInfo, μuL, cMO::Matrix, D1::Matrix, D2, fock_MO::Matrix, fockClosed_MO::Matrix)

Calculate the A-intermediate matrix in molecular orbital basis. return matrix A[p,q]

source
ElemCo.DFMCSCF.dffockCASMethod
dffockCAS(EC::ECInfo, μνL, μjL, μuL, cMO::Matrix, D1::Matrix)

Calculate fock matrices in molecular orbital basis. fockClosed[μ,ν] = $^cf_μ^ν = h_μ^ν + 2v_{μi}^{νi} - v_{μi}^{iν}$, fock[μ,ν] = $f_μ^ν = ^cf_μ^ν + D^t_u (v_{μt}^{νu} - 0.5 v_{μt}^{uν})$. fockMO and fockClosedMO are fock and fockClosed transformed into MO basis with coefficients cMO. Return matrix fockMO and fockClosedMO.

source
ElemCo.DFMCSCF.h_calc_SOpartMethod
h_calc_SOpart(num_MO, index_MO, DFint_MO, D1::Matrix, D2, fock_MO::Matrix, fockClosed_MO::Matrix, A::Matrix)

Calculate the SO version of the h tensor, including h3221, h2121. This function is used in SO, SOSCIorigin, SOSCI Hessian calculation. Return h3221, h_2121.

source
ElemCo.DFMCSCF.h_calc_fixedMethod
h_calc_fixed(num_MO, index_MO, D1::Matrix, D2, fockClosed_MO::Matrix, A::Matrix, DFint_MO)

Calculate the fixed part of the h tensor, including h2221, h2231, h2222, h3222. This function is used in all the Hessian calculation. Return h2221, h2231, h2222, h3222.

source
ElemCo.DFMCSCF.λTuningMethod
λTuning(EC::ECInfo, trust::Number, maxit4λ::Integer, λmax::Number, λ::Number, h::Matrix, g::Vector)

Find the rotation parameters as the vector x in trust region, tuning λ with the norm of x in the iterations. Return λ and x.

source