|
occ
|
Coupled-perturbed SCF (CPHF / CPKS). More...
Classes | |
| struct | SpinChannel |
| The occupied and virtual orbitals of one spin channel. More... | |
| struct | Settings |
| struct | Result |
| Vectors in the virtual-occupied space (U, B, residuals) are single matrices: nvirt x nocc for a restricted reference; for unrestricted the alpha (nvirt_a x n_alpha) and beta blocks one after the other, column-major, as one column. More... | |
| class | Solver |
Typedefs | |
| using | ResponseFunction |
| The response for a batch of perturbed occupied coefficients Cx (in the layout of occupied_orbitals): per channel G^s[D1] C_o^s with D1^s = Cx^s C_o^s^T + C_o^s Cx^s^T, the first-order per-spin density (restricted, G = 2J[D1] - K[D1]) or spin density (unrestricted, G^s = J[D1^a + D1^b] - K[D1^s]). | |
Functions | |
| std::vector< SpinChannel > | spin_channels (const MolecularOrbitals &mo) |
| The spin channels of an SCF reference: one for restricted (two electrons per orbital), alpha then beta for unrestricted. | |
| Mat | occupied_orbitals (const MolecularOrbitals &mo) |
| The occupied coefficients of every channel side by side, nbf x (n_alpha [+ n_beta]): the layout of perturbed occupied coefficients Cx and of the responses G[D1] C_o. | |
| Mat | contract_occupied (const Mat &F, const MolecularOrbitals &mo) |
| F^s C_o^s for every channel, side by side in that layout. | |
Coupled-perturbed SCF (CPHF / CPKS).
The solver is method-agnostic: a procedure supplies one operation, the response Fock matrices G[D1] for a batch of symmetric first-order AO densities D1, and everything else here is linear algebra in the virtual-occupied space. For Hartree-Fock G = 2J[D1] - K[D1] (occ's restricted D is the per-spin density); a hybrid scales K and adds the XC kernel; solvent adds the reaction-field response.
Real, static perturbations, restricted or unrestricted: per spin channel s
(e_a - e_i) U^s_ai + [C_v^s^T G^s[D(U)] C_o^s]_ai = B^s_ai
with D^s(U) = C_v^s U^s C_o^s^T + C_o^s U^s^T C_v^s^T, i.e. the orbital Hessian (A + B) applied to U. The channels couple only through G (the Coulomb and, for DFT, the XC kernel). All right-hand sides share each batched G evaluation; converged ones drop out of the batch.
The response for a batch of perturbed occupied coefficients Cx (in the layout of occupied_orbitals): per channel G^s[D1] C_o^s with D1^s = Cx^s C_o^s^T + C_o^s Cx^s^T, the first-order per-spin density (restricted, G = 2J[D1] - K[D1]) or spin density (unrestricted, G^s = J[D1^a + D1^b] - K[D1^s]).
A CPHF rotation U gives Cx^s = C_v^s U^s; an occupied-occupied perturbation M gives Cx^s = C_o^s M^s / 2. The response contracted with C_o is all CPHF and the Hessian ever use (its vo and oo blocks), and lets a method avoid nbf x nbf matrices.
| Mat occ::qm::cphf::contract_occupied | ( | const Mat & | F, |
| const MolecularOrbitals & | mo ) |
F^s C_o^s for every channel, side by side in that layout.
F is nbf x nbf (one operator for both spins) or, unrestricted, alpha rows over beta rows.
| Mat occ::qm::cphf::occupied_orbitals | ( | const MolecularOrbitals & | mo | ) |
The occupied coefficients of every channel side by side, nbf x (n_alpha [+ n_beta]): the layout of perturbed occupied coefficients Cx and of the responses G[D1] C_o.
| std::vector< SpinChannel > occ::qm::cphf::spin_channels | ( | const MolecularOrbitals & | mo | ) |
The spin channels of an SCF reference: one for restricted (two electrons per orbital), alpha then beta for unrestricted.