2#include "Angular/CkTable.hpp"
3#include "Angular/SixJTable.hpp"
4#include "Wavefunction/DiracSpinor.hpp"
5#include <unordered_map>
34 std::vector<std::unordered_map<uint32_t, std::vector<double>>> m_Y{};
39 YkTable(
const std::vector<DiracSpinor> &a_orbs,
40 const std::vector<DiracSpinor> &b_orbs) {
51 void calculate(
const std::vector<DiracSpinor> &as,
52 const std::vector<DiracSpinor> &bs);
72 [[nodiscard]]
double R(
const int k,
const DiracSpinor &Fa,
78 [[nodiscard]]
double Q(
const int k,
const DiracSpinor &Fa,
84 [[nodiscard]]
double P(
const int k,
const DiracSpinor &Fa,
88 [[nodiscard]]
double P2(
const int k,
const DiracSpinor &Fa,
91 const std::vector<double> &fk = {})
const;
95 [[nodiscard]]
double W(
const int k,
const DiracSpinor &Fa,
111 const DiracSpinor &Fd,
const std::vector<double> &f2k = {})
const;
114 bool empty()
const {
return m_Y.empty(); }
120 void allocate_space(
const std::vector<DiracSpinor> &a_orbs,
121 const std::vector<DiracSpinor> &b_orbs);
128 std::vector<double> &get_or_insert(std::size_t k, uint32_t key);
131 std::vector<double> &get_ref(
const int k,
const DiracSpinor &Fa,
Lookup table for Ck_ab reduced matrix elements and the special 3j symbol (j_a, j_b,...
Definition CkTable.hpp:62
Lookup table for Wigner 6j symbols.
Definition SixJTable.hpp:68
Calculates + stores Hartree Y functions + Angular (w/ look-up), taking advantage of symmetry.
Definition YkTable.hpp:31
DiracSpinor Pkv_bcd(const int k, int kappa, const DiracSpinor &Fb, const DiracSpinor &Fc, const DiracSpinor &Fd, const std::vector< double > &f2k={}) const
Calculates P^K(v)_bcd using existing yk integrals, including (optional) screening factors....
Definition YkTable.cpp:229
DiracSpinor Qkv_bcd(const int k, int kappa, const DiracSpinor &Fb, const DiracSpinor &Fc, const DiracSpinor &Fd) const
Calculates Q^K(v)_bcd using existing yk integrals. Note: Ck tables must include all required values,...
Definition YkTable.cpp:207
const Angular::CkTable & Ck() const
Returns a (const ref) to Ck table [see Angular::CkTable].
Definition YkTable.hpp:61
double Q(const int k, const DiracSpinor &Fa, const DiracSpinor &Fb, const DiracSpinor &Fc, const DiracSpinor &Fd) const
Calculates Qk using the existing yk integrals. Note: Ck tables must include all required values,...
Definition YkTable.cpp:129
const Angular::SixJTable & SixJ() const
Returns a (const ref) to SixJ table [see Angular::SixJTable].
Definition YkTable.hpp:63
void calculate(const std::vector< DiracSpinor > &as, const std::vector< DiracSpinor > &bs)
Re-calculates all y_ab functions (will over-ride existing ones); NOTE: only calculates for a in as,...
Definition YkTable.cpp:14
const std::vector< double > * get(const int k, const DiracSpinor &Fa, const DiracSpinor &Fb) const
Returns a pointer to constant vector y^k_ab. If that integral is not stored, returns nullptr.
Definition YkTable.cpp:70
double W(const int k, const DiracSpinor &Fa, const DiracSpinor &Fb, const DiracSpinor &Fc, const DiracSpinor &Fd) const
Calculates Wk=Qk+Pk using the existing yk integrals. Note: Ck tables must include all required values...
Definition YkTable.cpp:201
double R(const int k, const DiracSpinor &Fa, const DiracSpinor &Fb, const DiracSpinor &Fc, const DiracSpinor &Fd) const
Calculates Rk using the existing yk integrals. Note: Ck tables must include all required values,...
Definition YkTable.cpp:118
double P(const int k, const DiracSpinor &Fa, const DiracSpinor &Fb, const DiracSpinor &Fc, const DiracSpinor &Fd) const
Calculates Pk using the existing yk integrals. Note: Ck tables must include all required values,...
Definition YkTable.cpp:147
void extend_angular(int new_max_2j)
Extends the Ck and 6J tables up to new maximum 2*j.
Definition YkTable.cpp:46
void calculate(const std::vector< DiracSpinor > &as)
Re-calculates all y_ij functions (will over-ride existing ones) [i and j in as].
Definition YkTable.hpp:55
bool empty() const
Checks if table is empty.
Definition YkTable.hpp:114
Stores radial Dirac spinor: F_nk = (f, g)
Definition DiracSpinor.hpp:42
Functions (+classes) for computing Coulomb integrals.
Definition CoulombBreit.cpp:13