2#include "CorePolarisation.hpp"
3#include "Coulomb/meTable.hpp"
4#include "MBPT/StructureRad.hpp"
5#include "qip/String.hpp"
35 static std::string title(
bool rpaQ =
true) {
37 return " a b w_ab t_ab RPA_ab";
39 return " a b w_ab t_ab";
41 static std::string title_noRPA() {
return " a b w_ab t_ab"; }
43 friend std::ostream &operator<<(std::ostream &os,
const MEdata &m) {
44 os <<
qip::fstring(
" %4s %4s %8.5f %13.6e", m.a.c_str(), m.b.c_str(),
92 const std::vector<DiracSpinor> &a_orbs,
95 bool each_freq =
false,
bool diagonal =
true,
96 bool off_diagonal =
true,
bool calculate_both =
false);
104inline std::vector<MEdata>
108 bool each_freq =
false,
bool diagonal =
true,
109 bool off_diagonal =
true,
bool calculate_both =
false) {
111 off_diagonal, calculate_both);
140 const std::vector<DiracSpinor> &b_orbs,
142 const CorePolarisation *dV =
nullptr,
144 std::optional<double> omega = {});
153 const std::vector<DiracSpinor> &a_orbs,
156 return me_table(a_orbs, a_orbs, h, dV, srn, omega);
186std::unique_ptr<CorePolarisation>
189 const std::vector<DiracSpinor> &basis = {},
190 const std::string &identity =
"");
General tensor operator (virtual base class); all single-particle (one-body) tenosor operators derive...
Definition TensorOperator.hpp:198
Stores radial Dirac spinor: F_nk = (f, g)
Definition DiracSpinor.hpp:42
Virtual base class for core-polarisation (RPA); computes dV corrections.
Definition CorePolarisation.hpp:140
Solves relativistic Hartree-Fock equations for core and valence. Optionally includes Breit and QED ef...
Definition HartreeFock.hpp:72
Calculates Structure Radiation + Normalisation of states, using diagram method.
Definition StructureRad.hpp:65
Dirac operators: TensorOperator base class and derived implementations for single-particle (one-body)...
Definition GenerateOperator.cpp:6
Core-polarisation (RPA) corrections to matrix elements of an external field.
Definition calcMatrixElements.cpp:14
std::vector< MEdata > calcMatrixElements(const std::vector< DiracSpinor > &b_orbs, const std::vector< DiracSpinor > &a_orbs, DiracOperator::TensorOperator *const h, CorePolarisation *const dV, double omega, bool each_freq, bool diagonal, bool off_diagonal, bool calculate_both)
Calculates reduced matrix elements <a||h||b> for lists of orbitals.
Definition calcMatrixElements.cpp:16
std::unique_ptr< CorePolarisation > make_rpa(const std::string &method, const DiracOperator::TensorOperator *h, const HF::HartreeFock *vhf, bool print, const std::vector< DiracSpinor > &basis, const std::string &identity)
Factory function to construct a core-polarisation (RPA) object.
Definition calcMatrixElements.cpp:165
Coulomb::meTable< double > me_table(const std::vector< DiracSpinor > &a_orbs, const std::vector< DiracSpinor > &b_orbs, const DiracOperator::TensorOperator *h, const CorePolarisation *dV, const MBPT::StructureRad *srn, std::optional< double > omega)
Builds a lookup table of reduced matrix elements <a||h||b>.
Definition calcMatrixElements.cpp:111
Functions and classes for Hartree-Fock.
Definition CI_Integrals.hpp:13
std::string fstring(const std::string format,...)
Returns a formatted string using printf-style format specifiers.
Definition String.hpp:23
Small struct to store a single calculated reduced matrix element with RPA correction.
Definition calcMatrixElements.hpp:29