12 const CoulombIntegral &qk,
const std::vector<DiracSpinor> &core,
13 const std::vector<DiracSpinor> &excited,
int max_l_internal,
14 std::optional<double> ev) {
16 static_assert(std::is_same_v<CoulombIntegral, Coulomb::QkTable> ||
17 std::is_same_v<CoulombIntegral, Coulomb::YkTable>);
21 const auto e_v = ev ? *ev : 0.5 * (v.
en() + w.
en());
30 if (max_l_internal < 0)
34#pragma omp parallel for reduction(+ : sum) collapse(2)
35 for (
auto ia = 0ul; ia < core.size(); ia++) {
36 for (
auto in = 0ul; in < excited.size(); in++) {
38 const auto &a = core[ia];
39 const auto &n = excited[in];
41 if (a.l() > max_l_internal || n.l() > max_l_internal)
44 const auto de_an = a.en() - n.en();
47 for (
const auto &m : excited) {
48 if (m.l() > max_l_internal)
51 const auto inv_de = 1.0 / (e_v + de_an - m.en());
54 for (
int k = k0; k <= k1; k += 2) {
55 const auto Qk_vamn = qk.Q(k, v, a, m, n);
56 const auto Qk_wamn = (v == w) ? Qk_vamn : qk.Q(k, w, a, m, n);
57 const auto Pk_wamn = qk.P(k, w, a, m, n);
58 sum += Qk_vamn * (Qk_wamn + Pk_wamn) * inv_de / (2.0 * k + 1.0);
63 for (
const auto &b : core) {
64 if (b.l() > max_l_internal)
67 const auto inv_de = 1.0 / (e_v - de_an - b.en());
70 for (
int k = k0; k <= k1; k += 2) {
71 const auto Qk_vnba = qk.Q(k, v, n, b, a);
72 const auto Qk_wnba = (v == w) ? Qk_vnba : qk.Q(k, w, n, b, a);
73 const auto Pk_wnba = qk.P(k, w, n, b, a);
74 sum += Qk_vnba * (Qk_wnba + Pk_wnba) * inv_de / (2.0 * k + 1.0);
81 return sum * (1.0 / v.
twojp1());
std::pair< int, int > k_minmax_Q(const DiracSpinor &a, const DiracSpinor &b, const DiracSpinor &c, const DiracSpinor &d)
Returns min and max k (multipolarity) allowed for Q^k_abcd. Parity rule is included,...
Definition CoulombIntegrals.cpp:556
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