3#include "Coulomb/QkTable.hpp"
4#include "Coulomb/meTable.hpp"
5#include "LinAlg/Matrix.hpp"
6#include "MBPT/Sigma2.hpp"
11class CorrelationPotential;
44 DiracSpinor::Index w, DiracSpinor::Index x,
45 DiracSpinor::Index y,
int twoJ);
62 DiracSpinor::Index w, DiracSpinor::Index x,
63 DiracSpinor::Index y,
int twoJ);
79 DiracSpinor::Index w, DiracSpinor::Index x,
80 DiracSpinor::Index y,
int twoJ);
155 const std::vector<DiracSpinor> &s1_basis_core,
156 const std::vector<DiracSpinor> &s1_basis_excited,
175 const MBPT::CorrelationPotential &Sigma,
176 bool include_Sigma1);
196 const std::vector<DiracSpinor> &ci_basis,
int max_k,
197 bool no_new_integralsQ =
false);
211[[nodiscard]] std::vector<DiracSpinor>
213 const std::string &subset_string,
214 const std::string &frozen_core_string =
"");
238 const std::vector<CI::CSF2> &CSFAs,
int twoJA,
240 const std::vector<CI::CSF2> &CSFBs,
int twoJB,
259 int K_rank,
int Parity) {
261 Bs.
twoJ(), h, K_rank, Parity);
290std::pair<int, int>
Term_S_L(
int l1,
int l2,
int twoJ,
double gJ_target);
293std::string
Term_Symbol(
int two_J,
int L,
int two_S,
int parity);
295std::string
Term_Symbol(
int L,
int two_S,
int parity);
Two-electron configuration state function (CSF).
Definition CSF.hpp:28
Container for CI solutions in a single (J, parity) sector.
Definition CSF.hpp:141
LinAlg::View< const double > coefs(std::size_t i) const
CI expansion coefficients for the ith solution (one per CSF)
Definition CSF.cpp:172
const std::vector< CSF2 > & CSFs() const
Full list of CSFs spanning this (J, parity) sector.
Definition CSF.cpp:160
int twoJ() const
Twice the total angular momentum 2J for this sector.
Definition CSF.cpp:187
Base class template to store Coulomb integrals, and similar. 3 specific cases (by template instantiat...
Definition QkTable.hpp:90
Breit (Hartree-Fock Breit) interaction potential.
Definition Breit.hpp:52
Matrix class; row-major.
Definition Matrix.hpp:39
Proved a "view" onto an array.
Definition Matrix.ipp:7
Functions and classes for Configuration Interaction calculations.
Definition CI_Integrals.cpp:11
double CSF2_Breit(const Coulomb::WkTable &Bk, DiracSpinor::Index v, DiracSpinor::Index w, DiracSpinor::Index x, DiracSpinor::Index y, int twoJ)
Antisymmetrised two-body Breit matrix element in the coupled CSF basis.
Definition CI_Integrals.cpp:131
Coulomb::meTable< double > calculate_h1_table(const std::vector< DiracSpinor > &ci_basis, const std::vector< DiracSpinor > &s1_basis_core, const std::vector< DiracSpinor > &s1_basis_excited, const Coulomb::QkTable &qk, bool include_Sigma1)
Builds the one-body Hamiltonian matrix element table for the CI basis.
Definition CI_Integrals.cpp:231
double Sigma2_AB(const CI::CSF2 &A, const CI::CSF2 &B, int twoJ, const Coulomb::LkTable &Sk)
Two-body correction to Hab().
Definition CI_Integrals.cpp:179
LinAlg::Matrix< double > construct_Hci(const PsiJPi &psi, const Coulomb::meTable< double > &h1, const Coulomb::QkTable &qk, const Coulomb::WkTable *Bk, const Coulomb::LkTable *Sk)
Constructs the full CI Hamiltonian matrix in the CSF basis.
Definition CI_Integrals.cpp:527
double Breit_AB(const CI::CSF2 &A, const CI::CSF2 &B, int twoJ, const Coulomb::WkTable &Bk)
Breit correction to Hab().
Definition CI_Integrals.cpp:187
double RME_CSF2(const CI::CSF2 &X, int twoJX, const CI::CSF2 &V, int twoJV, const Coulomb::meTable< double > &h, int K_rank)
Reduced matrix element between two two-electron CSFs.
Definition CI_Integrals.cpp:424
std::string Term_Symbol(int two_J, int L, int two_S, int parity)
Returns spectroscopic term symbol string, e.g. "3P_1".
Definition CI_Integrals.cpp:513
std::pair< int, int > Term_S_L(int l1, int l2, int twoJ, double gJ_target)
Determines the best-fit (S, L) term for a two-electron state by matching the g-factor.
Definition CI_Integrals.cpp:472
double Hab(const CI::CSF2 &X, const CI::CSF2 &V, int twoJ, const Coulomb::meTable< double > &h1, const Coulomb::QkTable &qk)
CI Hamiltonian matrix element between two two-electron CSFs.
Definition CI_Integrals.cpp:196
double ReducedME(const LinAlg::View< const double > &cA, const std::vector< CI::CSF2 > &CSFAs, int twoJA, const LinAlg::View< const double > &cB, const std::vector< CI::CSF2 > &CSFBs, int twoJB, const Coulomb::meTable< double > &h, int K_rank, int Parity)
Reduced matrix element between two CI states (low-level overload).
Definition CI_Integrals.cpp:385
Coulomb::WkTable calculate_Bk(const std::string &bk_filename, const HF::Breit *const pBr, const std::vector< DiracSpinor > &ci_basis, int max_k, bool no_new_integrals)
Builds or loads the two-body Breit integral table.
Definition CI_Integrals.cpp:302
std::vector< DiracSpinor > basis_subset(const std::vector< DiracSpinor > &basis, const std::string &subset_string, const std::string &frozen_core_string)
Returns the subset of basis matching subset_string, excluding states in frozen_core_string.
Definition CI_Integrals.cpp:346
double CSF2_Sigma2(const Coulomb::LkTable &Sk, DiracSpinor::Index v, DiracSpinor::Index w, DiracSpinor::Index x, DiracSpinor::Index y, int twoJ)
Two-body (MBPT) correction to CSF2_Coulomb().
Definition CI_Integrals.cpp:75
double CSF2_Coulomb(const Coulomb::QkTable &qk, DiracSpinor::Index v, DiracSpinor::Index w, DiracSpinor::Index x, DiracSpinor::Index y, int twoJ)
Antisymmetrised two-body Coulomb matrix element in the coupled CSF basis.
Definition CI_Integrals.cpp:16
Functions and classes for Hartree-Fock.
Definition CI_Integrals.hpp:13
Many-body perturbation theory.
Definition CI_Integrals.hpp:10