2#include "Coulomb/YkTable.hpp"
4#include "HF/HartreeFock.hpp"
5#include "MBPT/SpinorMatrix.hpp"
6#include "Maths/Grid.hpp"
7#include "Wavefunction/DiracSpinor.hpp"
31 std::shared_ptr<const Grid> m_grid;
33 using Basis = std::vector<DiracSpinor>;
34 std::pair<Basis, Basis> m_basis;
38 std::size_t m_i0, m_stride, m_subgrid_points;
43 std::optional<HF::Breit> m_Br{};
68 const std::vector<DiracSpinor> &core, std::size_t i0,
69 std::size_t
stride, std::size_t size,
int n_min_core = 1,
70 bool include_G =
false,
const HF::Breit *Br =
nullptr);
90 const std::vector<double> &fk = {},
91 const std::vector<double> &etak = {},
92 int n_max_core = 99)
const;
105 const std::vector<double> &fk = {},
106 bool fk_both_lines =
false)
const;
119 const std::vector<double> &fk = {},
120 const std::vector<double> &etak = {},
int n_max_core = 99,
121 bool fk_both_lines =
false)
const;
146 const std::vector<double> &fk = {},
147 const std::vector<double> &etak = {},
148 int n_max_core = 99,
int max_n_breit = -1)
const;
151 const std::pair<Basis, Basis> &
basis()
const {
return m_basis; }
156 std::size_t
stride()
const {
return m_stride; }
158 int n_min()
const {
return m_n_min_core; }
163 inline double get_k(
int k,
const std::vector<double> &f)
const {
164 const auto sk = std::size_t(k);
165 return sk < f.size() ? f[sk] : 1.0;
Calculates + stores Hartree Y functions + Angular (w/ look-up), taking advantage of symmetry.
Definition YkTable.hpp:46
static int max_l(const std::vector< DiracSpinor > &orbs)
Returns maximum l found in {orbs}.
Definition DiracSpinor.cpp:360
Breit potentials for one- (Hartree-Fock Breit) and two-body Breit integrals.
Definition Breit.hpp:88
Second-order correlation potential, Sigma, from Goldstone diagrams.
Definition Goldstone.hpp:28
GMatrix dSigma_Breit2(int kappa_v, double en_v, const std::vector< double > &fk={}, const std::vector< double > &etak={}, int n_max_core=99, int max_n_breit=-1) const
Calculates 2-body Breit correction to correlation potential.
Definition Goldstone.cpp:291
const Coulomb::YkTable & Yeh() const
Yk table for each excited-hole pair.
Definition Goldstone.hpp:153
int lmax() const
Maximum l of the internal excited states.
Definition Goldstone.hpp:160
GMatrix Sigma_both(int kappa_v, double en_v, const std::vector< double > &fk={}, const std::vector< double > &etak={}, int n_max_core=99, bool fk_both_lines=false) const
Calculate both parts (direct + exchange) of correlation potential.
Definition Goldstone.cpp:126
std::size_t stride() const
Sub-grid stride: every stride-th point of the full grid.
Definition Goldstone.hpp:156
const std::pair< Basis, Basis > & basis() const
Internal {holes, excited} states (holes: core states with n >= n_min)
Definition Goldstone.hpp:151
GMatrix Sigma_direct(int kappa_v, double en_v, const std::vector< double > &fk={}, const std::vector< double > &etak={}, int n_max_core=99) const
Calculate Direct part of correlation potential.
Definition Goldstone.cpp:37
GMatrix Sigma_exchange(int kappa_v, double en_v, const std::vector< double > &fk={}, bool fk_both_lines=false) const
Calculate Exchange part of correlation potential.
Definition Goldstone.cpp:210
int n_min() const
Minimum n of core states included as internal holes.
Definition Goldstone.hpp:158
Many-body perturbation theory.
Definition MatrixElements.hpp:12