2#include "IO/InputBlock.hpp"
3#include "Operators/include.hpp"
4#include "TensorOperator.hpp"
5#include "Wavefunction/Wavefunction.hpp"
13static const std::vector<
14 std::tuple<std::string,
15 std::unique_ptr<DiracOperator::TensorOperator> (*)(
19 {
"E1", &generate_E1,
"Electric dipole (moment), length form: -|e|r"},
20 {
"E1v", &generate_E1v,
"Electric dipole, v-form"},
21 {
"E2", &generate_E2,
"Electric quadrupole moment operator"},
22 {
"Ek", &generate_Ek,
"Electric multipole moment operator, in low qr limit"},
23 {
"ialpha", &generate_ialpha,
"i*alpha (propto E1v)"},
24 {
"M1", &generate_M1,
"Magnetic dipole (relativistic formula)"},
25 {
"M1nr", &generate_M1nr,
"Non-relativistic M1"},
26 {
"Multipole", &generate_Multipole,
27 "Multipole transition operators (Vector,Axial,Scalar,Pseudoscalar)"},
28 {
"hfs", &generate_hfs,
"Hyperfine structure k-pole operators"},
29 {
"fieldshift", &generate_fieldshift,
"Field-shift F(r) operator"},
30 {
"r", &generate_r,
"radial (scalar) |r|"},
31 {
"sigma_r", &generate_sigma_r,
"scalar sigma.r operator"},
32 {
"pnc", &generate_pnc,
"NSI PNC operator"},
33 {
"Vrad", &generate_Vrad,
"QED Radiative potential"},
34 {
"MLVP", &generate_MLVP,
35 "Magnetic-Loop vacuum polarisation vertex correction to HFS"},
36 {
"dr", &generate_dr,
"Radial scalar derivative"},
37 {
"p", &generate_p,
"Momentum operator"},
38 {
"l", &generate_l,
"Orbital L"},
39 {
"s", &generate_s,
"Spin S (not sigma)"}};
45std::unique_ptr<DiracOperator::TensorOperator>
Stores Wavefunction (set of valence orbitals, grid, HF etc.)
Definition Wavefunction.hpp:37
Dirac Operators: General + derived.
Definition GenerateOperator.cpp:3
std::unique_ptr< DiracOperator::TensorOperator > generate(std::string_view operator_name, const IO::InputBlock &input, const Wavefunction &wf)
Returns a unique_ptr (polymorphic) to the requested operator, with given properties.
Definition GenerateOperator.cpp:7
void list_operators()
List available operators.
Definition GenerateOperator.cpp:40