2#include "DiracOperator/TensorOperator.hpp"
3#include "IO/InputBlock.hpp"
4#include "Wavefunction/Wavefunction.hpp"
5#include "qip/Vector.hpp"
11class p final :
public TensorOperator {
13 p() : TensorOperator(1, Parity::odd, 1.0, {}, 0, Realness::imaginary) {}
14 std::string name() const override final {
return "p"; }
15 std::string units() const override final {
return "i au"; }
17 double angularF(
const int ka,
const int kb)
const override final {
21 double angularCff(
int,
int)
const override final {
return 1.0; }
22 double angularCgg(
int,
int)
const override final {
return 1.0; }
23 double angularCfg(
int,
int)
const override final {
return 0.0; }
24 double angularCgf(
int,
int)
const override final {
return 0.0; }
29 const auto kappa_b = Fb.
kappa();
36 const auto lb = Fb.l();
39 const double eta = (la == lb - 1) ? lb : -lb - 1;
40 const double xi = (lta == ltb - 1) ? ltb : -ltb - 1;
42 const auto &gr = Fb.grid();
43 const auto df = NumCalc::derivative(Fb.f(), gr.drdu(), gr.du(), 1);
44 const auto dg = NumCalc::derivative(Fb.g(), gr.drdu(), gr.du(), 1);
47 dF.f() = df + eta * (Fb.f() / gr.r());
48 dF.g() = dg + xi * (Fb.g() / gr.r());
49 dF.max_pt() = Fb.max_pt();
53 virtual double radialIntegral(
const DiracSpinor &Fa,
56 return Fa * radial_rhs(Fa.kappa(), Fb);
61inline std::unique_ptr<DiracOperator::TensorOperator>
63 input.
check({{
"",
"no input"}});
67 return std::make_unique<DiracOperator::p>();
Stores radial Dirac spinor: F_nk = (f, g)
Definition DiracSpinor.hpp:41
int kappa() const
Dirac quantum number, kappa.
Definition DiracSpinor.hpp:84
Stores Wavefunction (set of valence orbitals, grid, HF etc.)
Definition Wavefunction.hpp:36
constexpr int l_k(int ka)
returns l given kappa
Definition Wigner369j.hpp:43
double Ck_kk(int k, int ka, int kb)
Reduced (relativistic) angular ME: <ka||C^k||kb> [takes k and kappa].
Definition Wigner369j.hpp:298
Dirac Operators: General + derived.
Definition GenerateOperator.cpp:12
namespace qip::overloads provides operator overloads for std::vector
Definition Vector.hpp:450