2#include "Angular/SixJTable.hpp"
3#include "Coulomb/QkTable.hpp"
4#include "Wavefunction/DiracSpinor.hpp"
5#include "qip/String.hpp"
101 double ei_bar,
double ei,
double es,
double E0);
169 const std::vector<DiracSpinor> &excited,
172 const std::vector<double> &fk = {},
double E0 = 0.0);
197std::pair<int, int>
k_minmax_S(
int twoj_v,
int twoj_w,
int twoj_x,
int twoj_y);
223template <
class CoulombIntegral>
225 const CoulombIntegral &qk,
const std::vector<DiracSpinor> &core,
226 const std::vector<DiracSpinor> &excited,
227 int max_l_internal = 99,
228 std::optional<double> ev = std::nullopt);
241template <
class CoulombIntegral>
244 const std::vector<DiracSpinor> &core,
const std::vector<DiracSpinor> &excited,
245 int max_l_internal = 99, std::optional<double> ev = std::nullopt);
264template <
class CoulombIntegral>
266 const CoulombIntegral &qk,
267 const std::vector<DiracSpinor> &core,
268 const std::vector<DiracSpinor> &excited,
double ev,
269 int max_l_internal = 99,
double delta = 0.01);
289double e_bar(
int kappa_v,
const std::vector<DiracSpinor> &excited);
329 const std::string &filename,
const std::vector<DiracSpinor> &external,
330 const std::vector<DiracSpinor> &core,
const std::vector<DiracSpinor> &excited,
332 Denominators denominators,
bool no_new_integrals =
false,
333 const std::vector<double> &fk = {},
double E0 = 0.0);
354 const std::vector<DiracSpinor> &external,
393 const std::vector<DiracSpinor> &core,
394 const std::vector<DiracSpinor> &excited,
396 const std::vector<double> &fk = {},
double E0 = 0.0);
420 const std::vector<DiracSpinor> &core,
421 const std::vector<DiracSpinor> &excited,
423 const std::vector<double> &fk = {},
double E0 = 0.0);
447 const std::vector<DiracSpinor> &core,
448 const std::vector<DiracSpinor> &excited,
450 const std::vector<double> &fk = {},
double E0 = 0.0);
488 const std::vector<DiracSpinor> &core,
489 const std::vector<DiracSpinor> &excited,
491 const std::vector<double> &fk = {},
double E0 = 0.0);
Lookup table for Wigner 6j symbols.
Definition SixJTable.hpp:82
Base class template to store Coulomb integrals, and similar. 3 specific cases (by template instantiat...
Definition QkTable.hpp:118
Stores radial Dirac spinor: F_nk = (f, g)
Definition DiracSpinor.hpp:55
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, const std::vector< double > &fk={}, double E0=0.0)
Diagrams a+b contribution to the reduced two-body Sigma.
Definition Sigma2.cpp:129
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, const std::vector< double > &fk={}, double E0=0.0)
Diagram c2 contribution to the reduced two-body Sigma.
Definition Sigma2.cpp:288
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, const std::vector< double > &fk={}, double E0=0.0)
Diagram c1 contribution to the reduced two-body Sigma.
Definition Sigma2.cpp:214
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, const std::vector< double > &fk={}, double E0=0.0)
Diagram d contribution to the reduced two-body Sigma.
Definition Sigma2.cpp:362
Many-body perturbation theory.
Definition MatrixElements.hpp:12
std::string parse_Denominators(Denominators d)
Returns string representation of Denominators enum.
Definition Sigma2.cpp:12
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, const std::vector< double > &fk, double E0)
Reduced two-body Sigma (2nd-order correlation) operator matrix element.
Definition Sigma2.cpp:105
double e_bar(int kappa_v, const std::vector< DiracSpinor > &excited)
Returns energy of first excited state matching a given kappa.
Definition Sigma2.cpp:67
bool Sk_vwxy_SR(int k, const DiracSpinor &v, const DiracSpinor &w, const DiracSpinor &x, const DiracSpinor &y)
Selection rule for Sk_vwxy.
Definition Sigma2.cpp:80
std::pair< int, int > k_minmax_S(const DiracSpinor &v, const DiracSpinor &w, const DiracSpinor &x, const DiracSpinor &y)
Minimum and maximum k allowed by selection rules for Sk_vwxy.
Definition Sigma2.cpp:87
double leg_de(Denominators denominators, double et_bar, double et, double ei_bar, double ei, double es, double E0)
External-leg part of a Sigma_2 energy denominator.
Definition Sigma2.cpp:48
Denominators
Type of energy denominators: DFK, BW, RS, Fermi, Fermi0.
Definition Sigma2.hpp:51
double dSigma_dE_vw(const DiracSpinor &v, const DiracSpinor &w, const CoulombIntegral &qk, const std::vector< DiracSpinor > &core, const std::vector< DiracSpinor > &excited, double ev, int max_l_internal=99, double delta=0.01)
Energy derivative of the one-body correlation correction.
Definition Sigma2.ipp:104
std::vector< double > average_hk(const Coulomb::LkTable &Sk, const Coulomb::QkTable &qk, const std::vector< DiracSpinor > &external, int max_k)
Average Sigma_2 correction ratios, h_k, for each multipole k.
Definition Sigma2.cpp:504
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:93
std::pair< double, double > Sigma_vw_direct_exchange(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)
Direct and exchange parts of Sigma_vw(), returned separately.
Definition Sigma2.ipp:12
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, const std::vector< double > &fk, double E0)
Calculates (or reads in) a table of two-body Sigma_2 matrix elements.
Definition Sigma2.cpp:454