2#include "Coulomb/meTable.hpp"
3#include "DiracOperator/TensorOperator.hpp"
105 DiracOperator::MatrixElementType::Reduced};
147 const MEoptions &options);
182 DiracOperator::MatrixElementType::Reduced,
183 double omega = 0.0,
double omega_sr = 0.0);
195 const MEoptions &options);
236[[nodiscard]] std::vector<std::pair<const DiracSpinor *, const DiracSpinor *>>
238 const std::vector<DiracSpinor> &b_orbs,
261[[nodiscard]] std::vector<MEdata>
263 const std::vector<DiracSpinor> &b_orbs,
266 const MEoptions &options, std::ostream &outstream = std::cout);
274[[nodiscard]]
inline std::vector<MEdata>
278 const MEoptions &options, std::ostream &outstream = std::cout) {
301me_table(
const std::vector<DiracSpinor> &a_orbs,
302 const std::vector<DiracSpinor> &b_orbs,
351me_table(
const std::vector<DiracSpinor> &a_orbs,
352 const std::vector<DiracSpinor> &b_orbs,
356 bool sr_norm =
true);
369 bool sr_norm =
true) {
370 return me_table(a_orbs, a_orbs, h, dV, srn, omega, sr_n_max, sr_norm);
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:55
Virtual base class for core-polarisation (RPA); computes dV corrections.
Definition CorePolarisation.hpp:147
Structure Radiation and Normalisation of states, using diagram method.
Definition StructureRad.hpp:66
Physical amplitudes and observables (matrix elements, second-order amplitudes); testable functions,...
Definition MatrixElements.cpp:15
MEdata matrix_element(const DiracSpinor &a, const DiracSpinor &b, const DiracOperator::TensorOperator *h, const ExternalField::CorePolarisation *dV, const MBPT::StructureRad *sr, DiracOperator::MatrixElementType type, double omega, double omega_sr)
Single matrix element of h between states a and b, with its RPA and structure radiation corrections.
Definition MatrixElements.cpp:55
std::vector< MEdata > matrix_elements(const std::vector< DiracSpinor > &a_orbs, const std::vector< DiracSpinor > &b_orbs, DiracOperator::TensorOperator *h, ExternalField::CorePolarisation *dV, MBPT::StructureRad *sr, const MEoptions &options, std::ostream &outstream)
Matrix elements of h for all allowed pairs from two lists of orbitals, with optional RPA and structur...
Definition MatrixElements.cpp:162
Frequency
Which frequency the operator, or the RPA, is evaluated at.
Definition MatrixElements.hpp:80
Coulomb::meTable< double > me_table(const std::vector< DiracSpinor > &a_orbs, const std::vector< DiracSpinor > &b_orbs, const DiracOperator::TensorOperator *h)
Builds a lookup table of reduced matrix elements <a||h||b>.
Definition MatrixElements.cpp:214
double frequency_derivative_term(const DiracSpinor &a, const DiracSpinor &b, DiracOperator::TensorOperator *h, const MBPT::StructureRad *sr, double omega)
Frequency-derivative term of <a||h||b> for a frequency-dependent operator: (dt/dw) dw2,...
Definition MatrixElements.cpp:89
void solve_at_frequency(DiracOperator::TensorOperator *h, ExternalField::CorePolarisation *dV, MBPT::StructureRad *sr, double omega, const MEoptions &options)
Sets the operator frequency, solves the RPA, and re-builds the structure radiation tables,...
Definition MatrixElements.cpp:18
double sr_frequency(const ExternalField::CorePolarisation *dV, double omega, const MEoptions &options)
The frequency for the structure radiation denominators of a transition at omega: the transition frequ...
Definition MatrixElements.cpp:82
std::vector< std::pair< const DiracSpinor *, const DiracSpinor * > > orbital_pairs(const std::vector< DiracSpinor > &a_orbs, const std::vector< DiracSpinor > &b_orbs, const DiracOperator::TensorOperator *h, const MEoptions &options)
The pairs of orbitals (a, b) of <a||h||b> that the drivers calculate, in order.
Definition MatrixElements.cpp:108
MatrixElementType
Type of matrix element returned.
Definition TensorOperator.hpp:82
Core-polarisation (RPA) corrections to matrix elements of an external field.
Definition MatrixElements.hpp:9
Many-body perturbation theory.
Definition MatrixElements.hpp:12
Result of a single matrix element calculation: the lowest-order value and each correction,...
Definition MatrixElements.hpp:34
double norm_factor
Normalisation of states factor, StructureRad::norm_factor (0 if no SR)
Definition MatrixElements.hpp:50
double sr
Structure radiation: top + bottom + centre diagrams (0 if no SR)
Definition MatrixElements.hpp:48
double norm
Normalisation of states: norm_factor * (t0 + dv) (0 if no SR)
Definition MatrixElements.hpp:52
double total() const
Full corrected value: factor * (t0 + dv + sr + norm)
Definition MatrixElements.hpp:59
double t0
Lowest-order reduced matrix element <a||h||b>
Definition MatrixElements.hpp:42
double value() const
Lowest-order + RPA: factor * (t0 + dv)
Definition MatrixElements.hpp:57
std::string a
State labels (shortSymbol); a is the bra: <a||h||b>
Definition MatrixElements.hpp:36
double value0() const
Lowest-order value: factor * t0.
Definition MatrixElements.hpp:55
double dv
RPA correction <a||dV||b> (0 if no RPA)
Definition MatrixElements.hpp:44
double factor
Factor converting reduced ME to requested MatrixElementType (1 for Reduced)
Definition MatrixElements.hpp:40
double omega
Transition frequency, e_a - e_b (0 for diagonal)
Definition MatrixElements.hpp:38
bool has_rpa
True if an RPA correction was calculated (distinguishes from dv = 0)
Definition MatrixElements.hpp:46
Options for the matrix element drivers.
Definition MatrixElements.hpp:90
bool diagonal
Calculate diagonal matrix elements (only for even-parity operators)
Definition MatrixElements.hpp:98
bool print
Print RPA solve progress.
Definition MatrixElements.hpp:109
int rpa_iterations
Maximum RPA iterations (1 corresponds to first-order RPA)
Definition MatrixElements.hpp:107
MEoptions(Frequency t_operator_omega, Frequency t_rpa_omega)
The frequency choices must be made explicitly; there is no default.
Definition MatrixElements.hpp:112
bool calculate_both
Calculate both <a||h||b> and <b||h||a>
Definition MatrixElements.hpp:102
bool off_diagonal
Calculate off-diagonal matrix elements.
Definition MatrixElements.hpp:100
Frequency operator_omega
Frequency of the operator itself; see Frequency.
Definition MatrixElements.hpp:92
DiracOperator::MatrixElementType type
Form of matrix element: Reduced, Stretched, or HFConstant.
Definition MatrixElements.hpp:104
Frequency rpa_omega
Frequency the RPA (and the structure radiation tables) are solved at; see Frequency....
Definition MatrixElements.hpp:96