2#include "Angular/SixJTable.hpp"
3#include "Coulomb/QkTable.hpp"
4#include "Wavefunction/DiracSpinor.hpp"
5#include "qip/String.hpp"
45std::pair<std::vector<DiracSpinor>, std::vector<DiracSpinor>>
46split_basis(
const std::vector<DiracSpinor> &basis,
double E_Fermi,
47 int min_n_core = 1,
int max_n_excited = 999);
103 const std::vector<DiracSpinor> &excited,
128std::pair<int, int>
k_minmax_S(
int twoj_v,
int twoj_w,
int twoj_x,
int twoj_y);
153template <
class CoulombIntegral>
155 const CoulombIntegral &qk,
const std::vector<DiracSpinor> &core,
156 const std::vector<DiracSpinor> &excited,
157 int max_l_internal = 99,
158 std::optional<double> ev = std::nullopt);
175double e_bar(
int kappa_v,
const std::vector<DiracSpinor> &excited);
203 const std::string &filename,
const std::vector<DiracSpinor> &external,
204 const std::vector<DiracSpinor> &core,
const std::vector<DiracSpinor> &excited,
206 Denominators denominators,
bool no_new_integrals =
false);
233 const std::vector<DiracSpinor> &core,
234 const std::vector<DiracSpinor> &excited,
255 const std::vector<DiracSpinor> &core,
256 const std::vector<DiracSpinor> &excited,
277 const std::vector<DiracSpinor> &core,
278 const std::vector<DiracSpinor> &excited,
299 const std::vector<DiracSpinor> &core,
300 const std::vector<DiracSpinor> &excited,
Lookup table for Wigner 6j symbols.
Definition SixJTable.hpp:68
Base class template to store Coulomb integrals, and similar. 3 specific cases (by template instantiat...
Definition QkTable.hpp:102
Stores radial Dirac spinor: F_nk = (f, g)
Definition DiracSpinor.hpp:42
double S_Sigma2_c1(int k, const DiracSpinor &v, const DiracSpinor &w, const DiracSpinor &x, const DiracSpinor &y, const Coulomb::QkTable &qk, const std::vector< DiracSpinor > &core, const std::vector< DiracSpinor > &excited, const Angular::SixJTable &SixJ, Denominators denominators)
Diagram c1 contribution to the reduced two-body Sigma.
Definition Sigma2.cpp:162
double S_Sigma2_d(int k, const DiracSpinor &v, const DiracSpinor &w, const DiracSpinor &x, const DiracSpinor &y, const Coulomb::QkTable &qk, const std::vector< DiracSpinor > &core, const std::vector< DiracSpinor > &excited, const Angular::SixJTable &SixJ, Denominators denominators)
Diagram d contribution to the reduced two-body Sigma.
Definition Sigma2.cpp:286
double S_Sigma2_c2(int k, const DiracSpinor &v, const DiracSpinor &w, const DiracSpinor &x, const DiracSpinor &y, const Coulomb::QkTable &qk, const std::vector< DiracSpinor > &core, const std::vector< DiracSpinor > &excited, const Angular::SixJTable &SixJ, Denominators denominators)
Diagram c2 contribution to the reduced two-body Sigma.
Definition Sigma2.cpp:224
double S_Sigma2_ab(int k, const DiracSpinor &v, const DiracSpinor &w, const DiracSpinor &x, const DiracSpinor &y, const Coulomb::QkTable &qk, const std::vector< DiracSpinor > &core, const std::vector< DiracSpinor > &excited, const Angular::SixJTable &SixJ, Denominators denominators)
Diagrams a+b contribution to the reduced two-body Sigma.
Definition Sigma2.cpp:106
Many-body perturbation theory.
Definition CI_Integrals.hpp:10
std::string parse_Denominators(Denominators d)
Returns string representation of Denominators enum.
Definition Sigma2.cpp:10
double e_bar(int kappa_v, const std::vector< DiracSpinor > &excited)
Returns energy of first excited state matching a given .
Definition Sigma2.cpp:45
Coulomb::LkTable calculate_Sk(const std::string &filename, const std::vector< DiracSpinor > &external, const std::vector< DiracSpinor > &core, const std::vector< DiracSpinor > &excited, const Coulomb::QkTable &qk, int max_k, bool exclude_wrong_parity_box, Denominators denominators, bool no_new_integrals)
Calculates (or reads in) a table of two-body Sigma_2 matrix elements.
Definition Sigma2.cpp:352
bool Sk_vwxy_SR(int k, const DiracSpinor &v, const DiracSpinor &w, const DiracSpinor &x, const DiracSpinor &y)
Selection rule for .
Definition Sigma2.cpp:56
std::pair< int, int > k_minmax_S(const DiracSpinor &v, const DiracSpinor &w, const DiracSpinor &x, const DiracSpinor &y)
Minimum and maximum allowed by selection rules for .
Definition Sigma2.cpp:63
Denominators
Type of energy demoninators: RS, Fermi, Fermi0.
Definition Sigma2.hpp:19
std::pair< std::vector< DiracSpinor >, std::vector< DiracSpinor > > split_basis(const std::vector< DiracSpinor > &basis, double E_Fermi, int min_n_core, int max_n_excited)
Splits the basis into the core (holes) and excited states.
Definition Sigma2.cpp:29
double Sk_vwxy(int k, const DiracSpinor &v, const DiracSpinor &w, const DiracSpinor &x, const DiracSpinor &y, const Coulomb::QkTable &qk, const std::vector< DiracSpinor > &core, const std::vector< DiracSpinor > &excited, const Angular::SixJTable &SixJ, Denominators denominators)
Reduced two-body Sigma (2nd-order correlation) operator matrix element.
Definition Sigma2.cpp:87
double Sigma_vw(const DiracSpinor &v, const DiracSpinor &w, const CoulombIntegral &qk, const std::vector< DiracSpinor > &core, const std::vector< DiracSpinor > &excited, int max_l_internal=99, std::optional< double > ev=std::nullopt)
Matrix element of the 1-body Sigma (2nd-order correlation) operator.
Definition Sigma2.ipp:11