ampsci
c++ program for high-precision atomic structure calculations of single-valence systems
Classes | Enumerations | Functions | Variables
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.
 

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/.