2#include "DiracOperator/TensorOperator.hpp"
3#include "IO/InputBlock.hpp"
4#include "Wavefunction/Wavefunction.hpp"
33 PNCnsi(
double c,
double t,
const Grid &rgrid,
double factor = 1.0,
34 const std::string &in_units =
"iQw*e-11")
37 {0, -1, +1, 0}, Realness::imaginary),
39 std::string
name() const override final {
return "pnc-nsi"; }
40 std::string
units() const override final {
return m_unit; }
43 const std::string m_unit{
"iQw*e-11"};
56 const std::string &in_units =
"iQw*e-11")
58 (3.0 / (4.0 * M_PI * Rnuc_au * Rnuc_au * Rnuc_au)) *
60 {}, {0, -1, +1, 0}, Realness::imaginary),
62 std::string
name() const override final {
return "pnc_const"; }
63 std::string
units() const override final {
return m_unit; }
66 const std::string m_unit{
"iQw*e-11"};
70inline std::unique_ptr<DiracOperator::TensorOperator>
75 "Half-density radius for Fermi rho(r). [defaut: from wavefunction]"},
76 {
"t",
"skin thickness [2.3]"},
77 {
"N",
"Neutron number, for units [default: from wavefunction]"},
78 {
"print",
"Write details to screen [true]"}}});
84 const auto t = input.
get(
"t", Nuclear::default_t);
85 const auto N = input.
get(
"N", wf.
Anuc() - wf.
Znuc());
87 N == 1 ?
"i(-Qw)e-11" :
"i(-Qw/" + std::to_string(N) +
")e-11";
88 if (input.
get(
"print",
true))
89 std::cout <<
"pnc: with c=" <<
c <<
", t=" << t <<
" [" << units <<
"]\n";
90 return std::make_unique<PNCnsi>(c, t, wf.
grid(), -1.0 * N,
"units");
PNC nuclear-spin-independent operator with uniform (constant) nuclear density.
Definition PNC.hpp:53
std::string units() const override final
Returns units of operator as a string (usually au, may be MHz, etc.)
Definition PNC.hpp:63
std::string name() const override final
Returns "name" of operator (e.g., 'E1')
Definition PNC.hpp:62
Nuclear-spin independent PNC operator (Qw)
Definition PNC.hpp:31
std::string name() const override final
Returns "name" of operator (e.g., 'E1')
Definition PNC.hpp:39
std::string units() const override final
Returns units of operator as a string (usually au, may be MHz, etc.)
Definition PNC.hpp:40
Rank-0 (scalar) tensor operator; derives from TensorOperator with k=0.
Definition TensorOperator.hpp:560
Holds grid, including type + Jacobian (dr/du)
Definition Grid.hpp:31
Stores Wavefunction (set of valence orbitals, grid, HF etc.)
Definition Wavefunction.hpp:37
const Grid & grid() const
Returns a const reference to the radial grid.
Definition Wavefunction.hpp:82
int Znuc() const
Nuclear charge, Z.
Definition Wavefunction.hpp:99
int Anuc() const
Nuclear mass number, A.
Definition Wavefunction.hpp:101
double get_rrms() const
Nuclear rms charge radii, in fm (femptometres)
Definition Wavefunction.hpp:103
Dirac operators: TensorOperator base class and derived implementations for single-particle (one-body)...
Definition GenerateOperator.cpp:3
double c_hdr_formula_rrms_t(double rrms, double t)
Calculates c from rrms and t.
Definition NuclearData.cpp:73
std::vector< double > fermiNuclearDensity_tcN(double t, double c, double Z_norm, const Grid &grid)
Fermi charge distribution, rho(r) - normalised to Z_norm.
Definition NuclearPotentials.cpp:321
constexpr double GFe11
Fermi weak constant * 10^11, in atomic units.
Definition PhysConst_constants.hpp:119
constexpr double c
speed of light in a.u. (=1/alpha)
Definition PhysConst_constants.hpp:63