2#include "Angular/Wigner369j.hpp"
3#include "DiracOperator/TensorOperator.hpp"
4#include "IO/InputBlock.hpp"
5#include "Wavefunction/Wavefunction.hpp"
15 double angularF(
const int ka,
const int kb)
const override final {
19 return std::sqrt(tj * (tj + 2) * (tj + 1)) / 2;
21 std::string
name()
const override {
return std::string(
"j"); }
22 std::string
units()
const override {
return "au"; }
23 std::unique_ptr<TensorOperator>
clone() const override final {
24 return std::make_unique<j>(*
this);
34 double angularF(
const int ka,
const int kb)
const override final {
43 std::sqrt(
double((tja + 1) * (tjb + 1) * (2 * la + 1) * la * (la + 1)));
45 return sign * fact * sjs;
47 std::string
name()
const override {
return std::string(
"l"); }
48 std::string
units()
const override {
return "au"; }
49 std::unique_ptr<TensorOperator>
clone() const override final {
50 return std::make_unique<l>(*
this);
52 static std::unique_ptr<TensorOperator> generate(
const IO::InputBlock &input,
54 input.
check({{
"no options",
""}});
57 return std::make_unique<l>();
67 double angularF(
const int ka,
const int kb)
const override final {
75 const auto fact = std::sqrt((tja + 1) * (tjb + 1) * 1.5);
77 return sign * fact * sjs;
79 std::string
name()
const override {
return std::string(
"s"); }
80 std::string
units()
const override {
return "au"; }
81 std::unique_ptr<TensorOperator>
clone() const override final {
82 return std::make_unique<s>(*
this);
84 static std::unique_ptr<TensorOperator> generate(
const IO::InputBlock &input,
86 input.
check({{
"no options",
""}});
89 return std::make_unique<s>();
General tensor operator (virtual base class); all single-particle (one-body) tenosor operators derive...
Definition TensorOperator.hpp:198
j (total angular momentum) operator
Definition jls.hpp:11
std::string units() const override
Returns units of operator as a string (usually au, may be MHz, etc.)
Definition jls.hpp:22
std::unique_ptr< TensorOperator > clone() const override final
Creates a polymorphic copy of the operator at its current state, or nullptr if cloning is not support...
Definition jls.hpp:23
std::string name() const override
Returns "name" of operator (e.g., 'E1')
Definition jls.hpp:21
double angularF(const int ka, const int kb) const override final
Angular factor A_ab linking the radial integral to the RME.
Definition jls.hpp:15
l (orbital angular momentum) operator
Definition jls.hpp:30
std::string units() const override
Returns units of operator as a string (usually au, may be MHz, etc.)
Definition jls.hpp:48
std::string name() const override
Returns "name" of operator (e.g., 'E1')
Definition jls.hpp:47
double angularF(const int ka, const int kb) const override final
Angular factor A_ab linking the radial integral to the RME.
Definition jls.hpp:34
std::unique_ptr< TensorOperator > clone() const override final
Creates a polymorphic copy of the operator at its current state, or nullptr if cloning is not support...
Definition jls.hpp:49
s (spin) operator
Definition jls.hpp:63
std::string units() const override
Returns units of operator as a string (usually au, may be MHz, etc.)
Definition jls.hpp:80
std::string name() const override
Returns "name" of operator (e.g., 'E1')
Definition jls.hpp:79
std::unique_ptr< TensorOperator > clone() const override final
Creates a polymorphic copy of the operator at its current state, or nullptr if cloning is not support...
Definition jls.hpp:81
double angularF(const int ka, const int kb) const override final
Angular factor A_ab linking the radial integral to the RME.
Definition jls.hpp:67
Stores Wavefunction (set of valence orbitals, grid, HF etc.)
Definition Wavefunction.hpp:37
double sixj_2(int two_j1, int two_j2, int two_j3, int two_j4, int two_j5, int two_j6)
Wigner 6j symbol {j1 j2 j3 | j4 j5 j6}. Inputs are 2*j as integers.
Definition Wigner369j.hpp:431
constexpr int l_k(int ka)
returns l given kappa
Definition Wigner369j.hpp:44
constexpr int neg1pow_2(int two_a)
Evaluates (-1)^{two_a/2} (for integer a; two_a is even)
Definition Wigner369j.hpp:239
constexpr int twoj_k(int ka)
returns 2j given kappa
Definition Wigner369j.hpp:46
Dirac operators: TensorOperator base class and derived implementations for single-particle (one-body)...
Definition GenerateOperator.cpp:6