2#include "Angular/include.hpp"
3#include "Coulomb/include.hpp"
4#include "MBPT/SpinorMatrix.hpp"
5#include "Wavefunction/DiracSpinor.hpp"
40 const std::vector<DiracSpinor> &excited,
bool include_L4,
43 const std::vector<double> &fk = {});
74 const std::vector<double> &fk = {});
102 const std::vector<double> &fk = {});
112 const std::vector<DiracSpinor> &core,
113 const std::vector<DiracSpinor> &excited,
116 const std::vector<double> &fk = {}) {
117 return L2(k, n, m, j, i, qk, core, excited, SJ, Lk, fk);
143 const std::vector<double> &fk = {});
163 const std::vector<DiracSpinor> &excited,
164 const std::vector<DiracSpinor> &core,
165 const std::vector<DiracSpinor> &i_orbs,
bool include_L4,
167 const std::vector<double> &fk = {});
193 const std::vector<DiracSpinor> &excited,
194 const std::vector<DiracSpinor> &core,
195 const std::vector<DiracSpinor> &i_orbs,
bool include_L4,
198 bool print,
const std::vector<double> &fk);
221template <
typename Q
integrals,
typename QorL
integrals>
223 const QorLintegrals &lk,
const std::vector<DiracSpinor> &core,
224 const std::vector<DiracSpinor> &excited,
225 const std::vector<double> &fk = {},
226 const std::vector<double> &etak = {});
241template <
typename Q
integrals,
typename QorL
integrals>
242double de_core(
const Qintegrals &qk,
const QorLintegrals &lk,
243 const std::vector<DiracSpinor> &core,
244 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
Many-body perturbation theory.
Definition CI_Integrals.hpp:10
double L3(int k, const DiracSpinor &m, const DiracSpinor &n, const DiracSpinor &i, const DiracSpinor &j, const Coulomb::QkTable &qk, const std::vector< DiracSpinor > &core, const std::vector< DiracSpinor > &excited, const Angular::SixJTable &SJ, const Coulomb::LkTable *const Lk=nullptr, const std::vector< double > &fk={})
Exchange partner of L2; equals L2 with m,n and i,j swapped.
Definition Ladder.hpp:109
void fill_Lk_mnib(Coulomb::LkTable *lk, const Coulomb::QkTable &qk, const std::vector< DiracSpinor > &excited, const std::vector< DiracSpinor > &core, const std::vector< DiracSpinor > &i_orbs, bool include_L4, const Angular::SixJTable &sjt, bool print, const std::vector< double > &fk)
Fills the ladder integral table for all required index combinations.
Definition Ladder.cpp:257
double L2(int k, const DiracSpinor &m, const DiracSpinor &n, const DiracSpinor &i, const DiracSpinor &j, const Coulomb::QkTable &qk, const std::vector< DiracSpinor > &core, const std::vector< DiracSpinor > &excited, const Angular::SixJTable &SJ, const Coulomb::LkTable *const Lk, const std::vector< double > &fk)
Particle–hole ladder diagram L2.
Definition Ladder.cpp:183
double L4(int k, const DiracSpinor &m, const DiracSpinor &n, const DiracSpinor &i, const DiracSpinor &j, const Coulomb::QkTable &qk, const std::vector< DiracSpinor > &core, const Angular::SixJTable &SJ, const Coulomb::LkTable *const Lk, const std::vector< double > &fk)
Core–core (hole–hole) ladder diagram L4.
Definition Ladder.cpp:110
double de_core(const Qintegrals &qk, const QorLintegrals &lk, const std::vector< DiracSpinor > &core, const std::vector< DiracSpinor > &excited)
Second-order (or ladder) correction to the core energy.
double Lkmnij(int k, const DiracSpinor &m, const DiracSpinor &n, const DiracSpinor &i, const DiracSpinor &j, const Coulomb::QkTable &qk, const std::vector< DiracSpinor > &core, const std::vector< DiracSpinor > &excited, bool include_L4, const Angular::SixJTable &SJ, const Coulomb::LkTable *const Lk, const std::vector< double > &fk)
Full ladder integral summed over all diagrams.
Definition Ladder.cpp:12
double de_valence(const DiracSpinor &v, const Qintegrals &qk, const QorLintegrals &lk, const std::vector< DiracSpinor > &core, const std::vector< DiracSpinor > &excited, const std::vector< double > &fk={}, const std::vector< double > &etak={})
Second-order (or ladder) correction to the valence energy.
double L1(int k, const DiracSpinor &m, const DiracSpinor &n, const DiracSpinor &i, const DiracSpinor &j, const Coulomb::QkTable &qk, const std::vector< DiracSpinor > &excited, const Angular::SixJTable &SJ, const Coulomb::LkTable *const Lk, const std::vector< double > &fk)
Particle–particle ladder diagram L1.
Definition Ladder.cpp:31
void update_Lk_mnib(Coulomb::LkTable *lk, const Coulomb::QkTable &qk, const std::vector< DiracSpinor > &excited, const std::vector< DiracSpinor > &core, const std::vector< DiracSpinor > &i_orbs, bool include_L4, const Angular::SixJTable &sjt, const Coulomb::LkTable *const lk_prev, double a_damp, bool print, const std::vector< double > &fk)
Updates the ladder integral table with L(Q,Q) -> L(Q,Q+L)
Definition Ladder.cpp:314