18 std::shared_ptr<const Grid> m_grid;
20 using Basis = std::vector<DiracSpinor>;
21 std::pair<Basis, Basis> m_basis;
25 std::size_t m_i0, m_stride, m_subgrid_points;
30 std::optional<HF::Breit> m_Br{};
33 Goldstone(
const std::vector<DiracSpinor> &basis,
34 const std::vector<DiracSpinor> &core, std::size_t i0,
35 std::size_t stride, std::size_t size,
int n_min_core = 1,
36 bool include_G =
false,
const HF::Breit *Br =
nullptr);
40 const std::vector<double> &fk = {},
41 const std::vector<double> &etak = {},
42 int n_max_core = 99)
const;
49 const std::vector<double> &fk = {},
50 bool fk_both_lines =
false)
const;
53 GMatrix Sigma_both(
int kappa_v,
double en_v,
54 const std::vector<double> &fk = {},
55 const std::vector<double> &etak = {},
int n_max_core = 99,
56 bool fk_both_lines =
false)
const;
59 GMatrix dSigma_Breit2(
int kappa_v,
double en_v,
60 const std::vector<double> &fk = {},
61 const std::vector<double> &etak = {},
62 int n_max_core = 99,
int m_max_n_breit = -1)
const;
64 const std::pair<Basis, Basis> &basis()
const {
return m_basis; }
67 std::size_t stride()
const {
return m_stride; }
68 int n_min()
const {
return m_n_min_core; }
72 inline double get_k(
int k,
const std::vector<double> &f)
const {
73 const auto sk = std::size_t(k);
74 return sk < f.size() ? f[sk] : 1.0;
static int max_l(const std::vector< DiracSpinor > &orbs)
Returns maximum l found in {orbs}.
Definition DiracSpinor.cpp:279
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