ampsci
High-precision calculations for one- and two-valence atomic systems
Nuclear Namespace Reference

Data and useful functions for nuclear properties and potentials. Radii all in Fermi (fm, e-15m) from Nuclear Data Service: https://www-nds.iaea.org/. More...

Classes

struct  Isotope
 Isotope data: Z, A, r_rms/fm, I, pi, mu, Q. More...
 
class  Nucleus
 Stores set of nuclear parameters (all radii in fm) More...
 

Enumerations

enum class  ChargeDistro {
  Fermi , spherical , point , Gaussian ,
  custom , Error
}
 Nuclear charge distribution options. More...
 

Functions

Isotope findIsotopeData (int z, int a)
 Looks up + returns an isotope from the list. If not in list, partially blank.
 
std::vector< IsotopefindIsotopeList (int z)
 Returns all known isotopes of given atom.
 
double find_rrms (int z, int a)
 Looks up default value of r_rms for given isotope. Returns 0 if not found.
 
double find_mu (int z, int a)
 As above, for dipole moment.
 
int find_parity (int z, int a)
 As above, for parity.
 
double find_spin (int z, int a)
 As above, for nuclear spin. Returns -1 if not found.
 
double approximate_r_rms (int a, int z)
 Approximate rms radius from a for to Angeli data.
 
double c_hdr_formula_rrms_t (double rrms, double t=default_t)
 Calculates c from rrms and t.
 
double rrms_formula_c_t (double c, double t=default_t)
 Calculates rrms from c and t.
 
double deformation_effective_t (double c, double t, double beta)
 Calculates effective skin thickness due to quadrupole deformation [See Eq. 8 of https://doi.org/10.1103/PhysRevA.100.032511.].
 
double approximate_t_skin (int a)
 just returns 2.3
 
ChargeDistro parseType (const std::string &str_type)
 
std::string parseType (ChargeDistro type)
 
std::ostream & operator<< (std::ostream &ostr, const Nucleus &n)
 
Nucleus form_nucleus (int Z, std::optional< int > tA, IO::InputBlock input)
 
std::vector< double > sphericalNuclearPotential (double Z, double rnuc, const std::vector< double > &rgrid)
 Nuclear potentials: spherical charge distribution.
 
std::vector< double > GaussianNuclearPotential (double Z, double r_rms, const std::vector< double > &rgrid)
 Nuclear potentials: Gaussian charge distribution.
 
std::vector< double > fermiNuclearPotential (double Z, double t, double c, const std::vector< double > &rgrid)
 Nuclear potentials: Fermi charge distribution [c is half-density radius, not rms].
 
std::vector< double > fermiNuclearDensity_tcN (double t, double c, double Z_norm, const Grid &grid)
 Fermi charge distribution, rho(r) - normalised to Z_norm.
 
std::vector< double > formPotential (const Nucleus &nucleus, const std::vector< double > &r)
 Calls one of the above, depending on params. Fills V(r), given r.
 

Variables

constexpr double default_t = 2.30
 
constexpr auto FourLn3 = 4.0 * 1.098612289
 
constexpr auto Pi2 = M_PI * M_PI
 

Detailed Description

Data and useful functions for nuclear properties and potentials. Radii all in Fermi (fm, e-15m) from Nuclear Data Service: https://www-nds.iaea.org/.


Class Documentation

◆ Nuclear::Isotope

struct Nuclear::Isotope

Isotope data: Z, A, r_rms/fm, I, pi, mu, Q.

Class Members
int Z Atomic charge.
int A Atomic mass number (A = Z + N)
optional< double > r_rms {} root-mean-square charge radius, in Fermi (fm, e-15m)
optional< double > I_N {} Nuclear spin (in hbar)
optional< int > parity {}
optional< double > mu {} Magnetic dipole moment, in nuclear magnetons.
optional< double > q {} Magnetic quadrupole moment, in barns.

Enumeration Type Documentation

◆ ChargeDistro

enum class Nuclear::ChargeDistro
strong

Nuclear charge distribution options.

Function Documentation

◆ findIsotopeData()

Isotope Nuclear::findIsotopeData ( int  z,
int  a 
)

Looks up + returns an isotope from the list. If not in list, partially blank.

◆ findIsotopeList()

std::vector< Isotope > Nuclear::findIsotopeList ( int  z)

Returns all known isotopes of given atom.

◆ find_rrms()

double Nuclear::find_rrms ( int  z,
int  a 
)

Looks up default value of r_rms for given isotope. Returns 0 if not found.

◆ find_mu()

double Nuclear::find_mu ( int  z,
int  a 
)

As above, for dipole moment.

◆ find_parity()

int Nuclear::find_parity ( int  z,
int  a 
)

As above, for parity.

◆ find_spin()

double Nuclear::find_spin ( int  z,
int  a 
)

As above, for nuclear spin. Returns -1 if not found.

◆ approximate_r_rms()

double Nuclear::approximate_r_rms ( int  A,
int  Z 
)

Approximate rms radius from a for to Angeli data.

◆ c_hdr_formula_rrms_t()

double Nuclear::c_hdr_formula_rrms_t ( double  rrms,
double  t 
)

Calculates c from rrms and t.

◆ rrms_formula_c_t()

double Nuclear::rrms_formula_c_t ( double  c,
double  t 
)

Calculates rrms from c and t.

◆ deformation_effective_t()

double Nuclear::deformation_effective_t ( double  c,
double  t,
double  beta 
)

Calculates effective skin thickness due to quadrupole deformation [See Eq. 8 of https://doi.org/10.1103/PhysRevA.100.032511.].

◆ approximate_t_skin()

double Nuclear::approximate_t_skin ( int  )

just returns 2.3

◆ sphericalNuclearPotential()

std::vector< double > Nuclear::sphericalNuclearPotential ( double  Z,
double  rnuc,
const std::vector< double > &  rgrid 
)

Nuclear potentials: spherical charge distribution.

◆ GaussianNuclearPotential()

std::vector< double > Nuclear::GaussianNuclearPotential ( double  Z,
double  r_rms,
const std::vector< double > &  rgrid 
)

Nuclear potentials: Gaussian charge distribution.

◆ fermiNuclearPotential()

std::vector< double > Nuclear::fermiNuclearPotential ( double  z,
double  t,
double  c,
const std::vector< double > &  rgrid 
)

Nuclear potentials: Fermi charge distribution [c is half-density radius, not rms].

◆ fermiNuclearDensity_tcN()

std::vector< double > Nuclear::fermiNuclearDensity_tcN ( double  t,
double  c,
double  Z_norm,
const Grid grid 
)

Fermi charge distribution, rho(r) - normalised to Z_norm.

◆ formPotential()

std::vector< double > Nuclear::formPotential ( const Nucleus nuc,
const std::vector< double > &  r 
)

Calls one of the above, depending on params. Fills V(r), given r.