2#include "Angular/include.hpp"
3#include "Coulomb/include.hpp"
4#include "Wavefunction/DiracSpinor.hpp"
18std::pair<std::vector<DiracSpinor>, std::vector<DiracSpinor>>
19split_basis(
const std::vector<DiracSpinor> &basis,
double E_Fermi,
20 int min_n_core = 1,
int max_n_excited = 999);
29 const std::vector<DiracSpinor> &excited,
41std::pair<int, int>
k_minmax_S(
int twoj_v,
int twoj_w,
int twoj_x,
int twoj_y);
52template <
class CoulombIntegral>
54 const CoulombIntegral &qk,
const std::vector<DiracSpinor> &core,
55 const std::vector<DiracSpinor> &excited,
57 int max_l_internal = 99,
58 std::optional<double> ev = std::nullopt);
61double e_bar(
int kappa_v,
const std::vector<DiracSpinor> &excited);
66namespace InternalSigma {
71 const std::vector<DiracSpinor> &core,
72 const std::vector<DiracSpinor> &excited,
79 const std::vector<DiracSpinor> &core,
80 const std::vector<DiracSpinor> &excited,
87 const std::vector<DiracSpinor> &core,
88 const std::vector<DiracSpinor> &excited,
95 const std::vector<DiracSpinor> &core,
96 const std::vector<DiracSpinor> &excited,
Lookup table for Wigner 6J symbols.
Definition SixJTable.hpp:47
Base (pure virtual) class to store Coulomb integrals, and similar. 3 derived classes,...
Definition QkTable.hpp:64
Stores radial Dirac spinor: F_nk = (f, g)
Definition DiracSpinor.hpp:42
Many-body perturbation theory.
Definition CI_Integrals.hpp:9
double e_bar(int kappa_v, const std::vector< DiracSpinor > &excited)
Returns energy of first state in excited that matches given kappa.
Definition Sigma2.cpp:26
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. Sum of 6 diagrams.
Definition Sigma2.cpp:66
bool Sk_vwxy_SR(int k, const DiracSpinor &v, const DiracSpinor &w, const DiracSpinor &x, const DiracSpinor &y)
Selection rule for Sk_vwxy (differs from Qk_vwxy due to parity)
Definition Sigma2.cpp:35
std::pair< int, int > k_minmax_S(const DiracSpinor &v, const DiracSpinor &w, const DiracSpinor &x, const DiracSpinor &y)
Minimum/maximum k allowed by selectrion rules for Sk_vwxy. Cannot +=2.
Definition Sigma2.cpp:42
Denominators
Type of energy demoninators: Rayleigh-Schrodinger (RS), Brillouin-Wigner (BW). (not exact)
Definition Sigma2.hpp:11
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:10
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 1-body Sigma (2nd-order correlation) operator; de_v = <v|Sigma|v>.
Definition Sigma2.ipp:11