2#include "Coulomb/meTable.hpp"
3#include "DiracOperator/TensorOperator.hpp"
90 DiracOperator::MatrixElementType::Reduced};
144 DiracOperator::MatrixElementType::Reduced,
185 const std::vector<DiracSpinor> &a_orbs,
188 const MEoptions &options, std::ostream &outstream = std::cout);
199 const MEoptions &options, std::ostream &outstream = std::cout) {
200 return matrix_elements(orbs, orbs, h, h_minus, dV, options, outstream);
226me_table(
const std::vector<DiracSpinor> &a_orbs,
227 const std::vector<DiracSpinor> &b_orbs,
241 return me_table(a_orbs, a_orbs, h, dV);
271me_table(
const std::vector<DiracSpinor> &a_orbs,
272 const std::vector<DiracSpinor> &b_orbs,
276 bool sr_norm =
true);
289 bool sr_norm =
true) {
290 return me_table(a_orbs, a_orbs, h, dV, srn, omega, sr_n_max, sr_norm);
308 std::string
a{}, b{};
356 DiracOperator::MatrixElementType::Reduced};
403 const SRNoptions &options, std::ostream &outstream = std::cout);
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:44
Virtual base class for core-polarisation (RPA); computes dV corrections.
Definition CorePolarisation.hpp:145
Calculates Structure Radiation + Normalisation of states, using diagram method.
Definition StructureRad.hpp:65
Physical amplitudes and observables (matrix elements, second-order amplitudes); testable functions,...
Definition MatrixElements.cpp:15
std::vector< MEdata > matrix_elements(const std::vector< DiracSpinor > &a_orbs, const std::vector< DiracSpinor > &b_orbs, DiracOperator::TensorOperator *h, DiracOperator::TensorOperator *h_minus, ExternalField::CorePolarisation *dV, const MEoptions &options, std::ostream &outstream)
Matrix elements of h for all allowed pairs from two lists of orbitals, with optional RPA; owns all fr...
Definition MatrixElements.cpp:51
Frequency
Which frequency the operator, or the RPA, is evaluated at.
Definition MatrixElements.hpp:67
std::vector< SRNdata > sr_matrix_elements(const std::vector< DiracSpinor > &orbs, DiracOperator::TensorOperator *h, MBPT::StructureRad *sr, ExternalField::CorePolarisation *dV, const SRNoptions &options, std::ostream &outstream)
Matrix elements with structure radiation, normalisation, and Brueckner orbital corrections,...
Definition MatrixElements.cpp:222
Coulomb::meTable< double > me_table(const std::vector< DiracSpinor > &a_orbs, const std::vector< DiracSpinor > &b_orbs, const DiracOperator::TensorOperator *h, const ExternalField::CorePolarisation *dV)
Builds a lookup table of reduced matrix elements <a||h||b>.
Definition MatrixElements.cpp:159
void set_operator_frequency(DiracOperator::TensorOperator *h, DiracOperator::TensorOperator *h_minus, double omega)
Sets the operator pair to the frequency w.
Definition MatrixElements.cpp:39
MEdata matrix_element(const DiracSpinor &a, const DiracSpinor &b, const DiracOperator::TensorOperator *h, const DiracOperator::TensorOperator *h_minus, const ExternalField::CorePolarisation *dV, DiracOperator::MatrixElementType type, double omega)
Single matrix element of h between states a and b, with optional RPA.
Definition MatrixElements.cpp:18
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.
Definition MatrixElements.hpp:30
double t0
Lowest-order reduced matrix element <a||h||b>
Definition MatrixElements.hpp:38
double value() const
Full value: factor * (t0 + dv)
Definition MatrixElements.hpp:45
std::string a
State labels (shortSymbol); a is the bra: <a||h||b>
Definition MatrixElements.hpp:32
double value0() const
Lowest-order value: factor * t0.
Definition MatrixElements.hpp:47
double dv
RPA correction <a||dV||b> (0 if no RPA)
Definition MatrixElements.hpp:40
double factor
Factor converting reduced ME to requested MatrixElementType (1 for Reduced)
Definition MatrixElements.hpp:36
double omega
Transition frequency, e_a - e_b (0 for diagonal)
Definition MatrixElements.hpp:34
bool has_rpa
True if an RPA correction was calculated (distinguishes from dv = 0)
Definition MatrixElements.hpp:42
Options for the matrix_elements() list driver.
Definition MatrixElements.hpp:77
bool diagonal
Calculate diagonal matrix elements (only for even-parity operators)
Definition MatrixElements.hpp:83
bool print
Print RPA solve progress.
Definition MatrixElements.hpp:94
int rpa_iterations
Maximum RPA iterations (1 corresponds to first-order RPA)
Definition MatrixElements.hpp:92
MEoptions(Frequency t_operator_omega, Frequency t_rpa_omega)
The frequency choices must be made explicitly; there is no default.
Definition MatrixElements.hpp:97
bool calculate_both
Calculate both <a||h||b> and <b||h||a>
Definition MatrixElements.hpp:87
bool off_diagonal
Calculate off-diagonal matrix elements.
Definition MatrixElements.hpp:85
Frequency operator_omega
Frequency of the operator itself; see Frequency.
Definition MatrixElements.hpp:79
DiracOperator::MatrixElementType type
Form of matrix element: Reduced, Stretched, or HFConstant.
Definition MatrixElements.hpp:89
Frequency rpa_omega
Frequency the RPA is solved at; see Frequency.
Definition MatrixElements.hpp:81
Result of a matrix element calculation with second-order MBPT corrections: structure radiation,...
Definition MatrixElements.hpp:306
double value0() const
Lowest-order + RPA: factor * (t0 + dv)
Definition MatrixElements.hpp:328
double t0
Lowest-order reduced matrix element <a||h||b>
Definition MatrixElements.hpp:314
double norm
Normalisation of states: (f_norm_a + f_norm_b) * (t0 + dv)
Definition MatrixElements.hpp:320
std::string a
State labels (shortSymbol); a is the bra: <a||h||b>
Definition MatrixElements.hpp:308
double sr
Structure radiation (top + bottom + centre diagrams)
Definition MatrixElements.hpp:318
double bo
Brueckner orbital correction (0 if legs are already Brueckner); includes the frequency-derivative ter...
Definition MatrixElements.hpp:323
double factor
Factor converting reduced ME to requested MatrixElementType.
Definition MatrixElements.hpp:312
double total() const
Full corrected value: factor * (t0 + dv + sr + norm + bo)
Definition MatrixElements.hpp:330
double dv
RPA correction (0 if no RPA)
Definition MatrixElements.hpp:316
bool has_rpa
True if an RPA correction was calculated.
Definition MatrixElements.hpp:325
double omega
Frequency the corrections were evaluated at.
Definition MatrixElements.hpp:310
Options for sr_matrix_elements()
Definition MatrixElements.hpp:341
DiracOperator::MatrixElementType type
Form of matrix element: Reduced, Stretched, or HFConstant.
Definition MatrixElements.hpp:355
bool calculate_both
Calculate both <a||h||b> and <b||h||a>
Definition MatrixElements.hpp:353
bool include_bo
Include the Brueckner orbital correction (set false when the external legs are already Brueckner orbi...
Definition MatrixElements.hpp:359
Frequency operator_omega
Frequency of the operator itself; see Frequency.
Definition MatrixElements.hpp:343
bool print
Print per-element progress (SR is slow)
Definition MatrixElements.hpp:361
SRNoptions(Frequency t_operator_omega, Frequency t_rpa_omega)
The frequency choices must be made explicitly; there is no default.
Definition MatrixElements.hpp:364
bool diagonal
Calculate diagonal matrix elements (only for even-parity operators)
Definition MatrixElements.hpp:349
bool off_diagonal
Calculate off-diagonal matrix elements.
Definition MatrixElements.hpp:351
Frequency rpa_omega
Frequency the RPA, and hence the structure radiation, is evaluated at. With transition,...
Definition MatrixElements.hpp:347