2#include "IO/InputBlock.hpp"
3#include "Physics/NuclearData.hpp"
22enum class ChargeDistro { Fermi, spherical, point, Gaussian, custom, Error };
51 std::string m_custom_pot_file_name;
53 std::vector<double> m_params;
76 Nucleus(
int in_z = 1,
int in_a = 0,
const std::string &str_type =
"Fermi",
77 double in_rrms = -1.0,
double in_t = -1.0,
double in_beta = 0.0,
78 const std::vector<double> &in_params = {},
79 const std::string &custom_pot_file_name =
"");
82 Nucleus(
const std::string &z_str,
int in_a,
83 const std::string &str_type =
"Fermi",
double in_rrms = -1.0,
84 double in_t = Nuclear::default_t,
double in_beta = 0.0,
85 const std::vector<double> &in_params = {},
86 const std::string &custom_pot_file_name =
"");
93 int &
z() {
return m_iso.
Z; };
94 int z()
const {
return m_iso.
Z; };
96 int &
a() {
return m_iso.
A; };
97 int a()
const {
return m_iso.
A; };
100 const std::vector<double> &
params()
const {
return m_params; };
101 std::vector<double> &
params() {
return m_params; };
109 double &
t() {
return m_t; };
110 double t()
const {
return m_t; };
113 double &
beta() {
return m_beta; };
114 double beta()
const {
return m_beta; };
118 std::string
custom_pot_file()
const {
return m_custom_pot_file_name; };
143Nucleus
form_nucleus(
int Z, std::optional<int> A = std::nullopt,
167[[nodiscard]] std::vector<double>
169 const std::vector<double> &rgrid);
185[[nodiscard]] std::vector<double>
187 const std::vector<double> &rgrid);
208[[nodiscard]] std::vector<double>
210 const std::vector<double> &rgrid);
227[[nodiscard]] std::vector<double>
248[[nodiscard]] std::vector<double>
formPotential(
const Nucleus &nucleus,
249 const std::vector<double> &r);
Non-uniform radial grid with Jacobian, suitable for atomic structure calculations.
Definition Grid.hpp:85
Stores set of nuclear parameters (all radii in fm)
Definition NuclearPotentials.hpp:41
int & z()
Nuclear charge, Z.
Definition NuclearPotentials.hpp:93
void set_rrms(double rrms)
Sets root-mean-square charge radius (fm)
Definition NuclearPotentials.hpp:104
double r_rms() const
Root-mean-square charge radius (fm); 0 if not set.
Definition NuclearPotentials.hpp:106
friend std::ostream & operator<<(std::ostream &ostr, const Nucleus &n)
Prints summary of nuclear parameters.
Definition NuclearPotentials.cpp:105
ChargeDistro & type()
Charge distribution type.
Definition NuclearPotentials.hpp:90
double & t()
Skin thickness, t (fm); Fermi only.
Definition NuclearPotentials.hpp:109
const std::vector< double > & params() const
Extra parameters (not currently used)
Definition NuclearPotentials.hpp:100
std::string & custom_pot_file()
File name for custom nuclear potential.
Definition NuclearPotentials.hpp:117
double c() const
Half-density radius, c (fm), from r_rms and t.
Definition NuclearPotentials.hpp:121
double & beta()
Quadrupole deformation parameter, beta; Fermi only.
Definition NuclearPotentials.hpp:113
int & a()
Mass number, A.
Definition NuclearPotentials.hpp:96
Data and useful functions for nuclear properties and potentials. Radii all in Fermi (fm,...
Definition nuclear_data_table.hpp:5
double c_hdr_formula_rrms_t(double rrms, double t)
Calculates c from rrms and t.
Definition NuclearData.cpp:73
std::optional< double > r_rms
root-mean-square charge radius, in Fermi (fm, e-15m)
Definition NuclearData.hpp:24
std::vector< double > sphericalNuclearPotential(double Z, double rnuc, const std::vector< double > &rgrid)
Nuclear potential: uniformly charged sphere (ball) of radius rnuc.
Definition NuclearPotentials.cpp:231
int A
Atomic mass number (A = Z + N)
Definition NuclearData.hpp:22
int Z
Atomic charge.
Definition NuclearData.hpp:20
ChargeDistro parseType(const std::string &str_type)
Converts string to ChargeDistro (case-insensitive).
Definition NuclearPotentials.cpp:20
std::vector< double > formPotential(const Nucleus &nuc, const std::vector< double > &r)
Nuclear potential V(r) for given nucleus, at radial points r.
Definition NuclearPotentials.cpp:356
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
Nucleus form_nucleus(int Z, std::optional< int > tA, IO::InputBlock input)
Forms nucleus from Z, A, and the nuclear options in input.
Definition NuclearPotentials.cpp:151
std::vector< double > fermiNuclearPotential(double z, double t, double c, const std::vector< double > &rgrid)
Nuclear potential: Fermi charge distribution.
Definition NuclearPotentials.cpp:272
std::vector< double > GaussianNuclearPotential(double Z, double r_rms, const std::vector< double > &rgrid)
Nuclear potential: Gaussian charge distribution.
Definition NuclearPotentials.cpp:254
ChargeDistro
Nuclear charge distribution options.
Definition NuclearPotentials.hpp:22
Isotope data: Z, A, r_rms/fm, I, pi, mu, Q.
Definition NuclearData.hpp:18