2#include "DiracOperator/TensorOperator.hpp"
3#include "IO/InputBlock.hpp"
4#include "Wavefunction/Wavefunction.hpp"
31 PNCnsi(
double c,
double t,
const Grid &rgrid,
double factor = 1.0,
32 const std::string &in_units =
"iQw*e-11")
35 {0, -1, +1, 0}, Realness::imaginary),
38 std::string
name() const override final {
return "pnc-nsi"; }
39 std::string
units() const override final {
return m_unit; }
41 static std::unique_ptr<TensorOperator> generate(
const IO::InputBlock &input,
45 "Half-density radius for Fermi rho(r). [defaut: from wavefunction]"},
46 {
"t",
"skin thickness [2.3]"},
47 {
"N",
"Neutron number, for units [default: from wavefunction]"},
48 {
"print",
"Write details to screen [true]"}}});
53 const auto t = input.
get(
"t", Nuclear::default_t);
54 const auto N = input.
get(
"N", wf.
Anuc() - wf.
Znuc());
56 N == 1 ?
"i(-Qw)e-11" :
"i(-Qw/" + std::to_string(N) +
")e-11";
57 if (input.
get(
"print",
true))
58 std::cout <<
"pnc: with c=" <<
c <<
", t=" << t <<
" [" <<
units <<
"]\n";
59 return std::make_unique<PNCnsi>(c, t, wf.
grid(), -1.0 * N,
"units");
63 const std::string m_unit{
"iQw*e-11"};
Nuclear-spin independent PNC operator (Qw)
Definition PNC.hpp:29
std::string name() const override final
Returns "name" of operator (e.g., 'E1')
Definition PNC.hpp:38
std::string units() const override final
Returns units of operator as a string (usually au, may be MHz, etc.)
Definition PNC.hpp:39
Rank-0 (scalar) tensor operator; derives from TensorOperator with k=0.
Definition TensorOperator.hpp:561
Non-uniform radial grid with Jacobian, suitable for atomic structure calculations.
Definition Grid.hpp:85
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:6
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:319
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