2#include "DiracOperator/TensorOperator.hpp"
70 const std::vector<double> &vec,
Realness RorI,
bool freq_dep,
71 const Grid *grid,
char type,
char comp,
bool low_q,
86 std::string
name()
const override {
87 const bool axial = (m_type ==
'A');
88 const std::string g5 = axial ?
"5" :
"";
90 if (m_type ==
'V' || m_type ==
'A') {
93 base = std::string(
"T^E") + g5;
96 base = std::string(
"T^M") + g5;
99 base = std::string(
"T^L") + g5;
102 base = std::string(
"t") + g5;
108 }
else if (m_type ==
'S') {
110 }
else if (m_type ==
'P') {
119 return base +
"_" + std::to_string(m_rank);
135 double angularF(
const int ka,
const int kb)
const override {
136 const bool flip = (m_type ==
'V' && m_comp ==
'M') ||
137 (m_type ==
'A' && m_comp !=
'M') || (m_type ==
'P');
155 const bool flip = (m_type ==
'V' && m_comp ==
'M') ||
156 (m_type ==
'A' && m_comp !=
'M') || (m_type ==
'P');
157 m_parity = (
Angular::evenQ(new_K) != flip) ? Parity::even : Parity::odd;
170 std::unique_ptr<TensorOperator>
clone()
const override;
173 const Grid *m_grid{
nullptr};
184 EM_multipole &operator=(
const EM_multipole &) =
default;
Intermediate abstract base class for all EM relativistic multipole operators.
Definition EM_multipole_base.hpp:50
const SphericalBessel::JL_table * jl() const
Returns the precomputed Bessel table pointer (may be nullptr).
Definition EM_multipole_base.hpp:83
void updateRank(int new_K) override
Updates the tensor rank and adjusts parity accordingly.
Definition EM_multipole_base.hpp:153
std::string name() const override
Returns a human-readable label, e.g. "T^E_1", "T^M5_2", "t_1", "P_1".
Definition EM_multipole_base.hpp:86
double angularF(const int ka, const int kb) const override
Angular factor linking the radial integral to the reduced matrix element: .
Definition EM_multipole_base.hpp:135
double m_omega
Current frequency; cached by each derived updateFrequency().
Definition EM_multipole_base.hpp:174
EM_multipole(int rank_k, Parity pi, double constant, const std::vector< double > &vec, Realness RorI, bool freq_dep, const Grid *grid, char type, char comp, bool low_q, const SphericalBessel::JL_table *jl=nullptr, char form='V')
Initialise the EM_multipole base layer.
Definition EM_multipole_base.hpp:69
std::unique_ptr< TensorOperator > clone() const override
Creates a fully independent copy of this operator at its current (rank, frequency) state via the Mult...
Definition EM_multipole.cpp:619
General operator (virtual base class); operators derive from this.
Definition TensorOperator.hpp:66
Holds grid, including type + Jacobian (dr/du)
Definition Grid.hpp:31
Spherical Bessel Lookup table; in the form j_L(qr) = J[L][q][r].
Definition SphericalBessel.hpp:120
constexpr bool evenQ(int a)
Returns true if a is even - for integer values.
Definition Wigner369j.hpp:220
double Ck_kk(int k, int ka, int kb)
Reduced (relativistic) angular ME: <ka||C^k||kb> [takes k and kappa].
Definition Wigner369j.hpp:372
Dirac Operators: General + derived.
Definition GenerateOperator.cpp:3
Parity
Parity of operator.
Definition TensorOperator.hpp:19
Realness
Realness of matrix element; impacts symmetry only.
Definition TensorOperator.hpp:22