Go to the documentation of this file.
23 #ifndef O2SCL_NUCLEAR_MASS_H
24 #define O2SCL_NUCLEAR_MASS_H
34 #include <boost/numeric/ublas/vector.hpp>
36 #include <o2scl/nucleus.h>
37 #include <o2scl/constants.h>
38 #include <o2scl/table.h>
39 #include <o2scl/inte_qagiu_gsl.h>
40 #include <o2scl/root_cern.h>
41 #include <o2scl/root_brent_gsl.h>
43 #ifndef DOXYGEN_NO_O2NS
94 int eltoZ(std::string el);
102 std::string
Ztoel(
size_t Z);
115 std::string
tostring(
size_t Z,
size_t N);
117 #ifndef DOXYGEN_INTERNAL
133 typedef std::map<std::string,int,
215 virtual const char *
type() {
return "nucmass"; }
244 return (14.4381*pow(Z,2.39)+1.55468e-6*pow(Z,5.35))*1.0e-6;
347 virtual const char *
type() {
return "nucmass_table"; }
382 virtual const char *
type() {
return "nucmass_fit_base"; }
449 virtual const char *
type() {
return "nucmass_semi_empirical"; }
462 virtual int fit_fun(
size_t nv,
const ubvector &x);
465 virtual int guess_fun(
size_t nv, ubvector &x);
539 virtual const char *
type() {
return "nucmass_dvi"; }
552 virtual int fit_fun(
size_t nv,
const ubvector &x);
555 virtual int guess_fun(
size_t nv, ubvector &x);
602 double iand(
double r);
605 double iand2(
double r);
608 double solve(
double x);
623 double &Rcd,
double &Rfermi,
double &Rrms);
634 double &rho0,
double &Rcd,
double &Rrms);
638 double density(
double r,
double Rfermi,
double d,
double rho0);
642 double iand2_new(
double r,
double Rfermi,
double d,
double rho0);
647 void eval_N_err(
double Rfermi,
double d,
double rho0,
648 double &N,
double &N_err);
652 double eval_N(
double Rfermi,
double d,
double rho0);
656 #ifndef DOXYGEN_NO_O2NS
size_t n
The number of entries.
virtual double atomic_mass(int Z, int N)
Return the atomic mass of the nucleus in MeV (includes electrons and their binding energy)
virtual double total_mass(int Z, int N)
Return the total mass of the nucleus (without the electrons) in MeV.
double eval_N(double Rfermi, double d, double rho0)
Compute the total number of particles.
virtual bool is_included(int Z, int N)
Return false if the mass formula does not include specified nucleus.
virtual double mass_excess_d(double Z, double N)
Given Z and N, return the mass excess in MeV.
virtual int get_nucleus(int Z, int N, nucleus &n)
Fill n with the information from nucleus with the given neutron and proton number.
virtual double shell_energy(int Z, int N)
Compute the shell energy for nucleus Z and N.
virtual double electron_binding(double Z)
Return the approximate electron binding energy in MeV.
An approximation of shell effects in nuclei based on the interacting boson model.
Nuclear mass formula from Dieperink and van Isacker (2009)
virtual double binding_energy(int Z, int N)
Return the binding energy in MeV.
virtual int guess_fun(size_t nv, ubvector &x)
Fill array with guess from present values for fitting.
double solve(double x)
The function to fix the total number of particles.
Nuclear mass information.
double ap
Pairing energy coefficient.
virtual double total_mass_d(double Z, double N)
Return the total mass of the nucleus (without the electrons) in MeV.
double ac
Coulomb energy coefficient.
double Ss
Surface energy (in MeV, default 18)
double iand(double r)
The function .
std::string Ztoname(size_t Z)
Return the element name given Z.
int shells[nshells]
Magic numbers.
virtual int fit_fun(size_t nv, const ubvector &x)
Fix parameters from an array for fitting.
double sv
Symmetry energy coefficient.
double m_elec
Electron mass in (defaults to o2scl_mks::mass_electron converted into MeV)
std::string element_list[nelements]
The list of elements organized by proton number.
virtual int guess_fun(size_t nv, ubvector &x)
Fill array with guess from present values for fitting.
virtual double binding_energy_d(double Z, double N)
Return the binding energy in MeV.
virtual double atomic_mass_d(double Z, double N)
Return the atomic mass of the nucleus in MeV (includes electrons and their binding energy)
virtual double mass_excess_d(double Z, double N)
Given Z and N, return the mass excess in MeV.
virtual const char * type()
Return the type, "nucmass_table".
virtual int fit_fun(size_t nv, const ubvector &x)=0
Fix parameters from an array for fitting [abstract].
Compute the RMS radius of a Fermi-Dirac density distribution with fixed diffusiveness.
int parse_elstring(std::string ela, int &Z, int &N, int &A)
Parse a string representing an element.
virtual const char * type()
Return the type, "nucmass_semi_empirical".
virtual double shell_energy_interp(double Z, double N)
Compute the shell energy for specified values of Z and N using bilinear interpolation.
virtual double mass_excess(int Z, int N)
Given Z and N, return the mass excess in MeV.
void eval_rms_rsq(double Rfermi, double N, double d, double &rho0, double &Rcd, double &Rrms)
Compute the RMS radius from the Fermi distribution radius.
double density(double r, double Rfermi, double d, double rho0)
The radial density distribution.
std::map< std::string, int, std::greater< std::string > > element_table
A map containing the proton numbers organized by element abbreviation.
Fittable mass formula [abstract base].
void eval_rms_rho(double rho0, double N, double d, double &Rcd, double &Rfermi, double &Rrms)
Compute the RMS radius from the central density.
static const size_t nshells
Number of magic numbers.
virtual int guess_fun(size_t nv, ubvector &x)=0
Fill array with guess from present values for fitting [abstract].
double Epair
Pairing energy (MeV, default 13.0)
double iand2_new(double r, double Rfermi, double d, double rho0)
The radial density distribution times radius squared.
double ud
The diffusiveness.
std::map< std::string, int, std::greater< std::string > >::iterator table_it
A convenient typedef for an iterator for element_table.
double m_prot
Proton mass in (defaults to o2scl_mks::mass_proton converted into MeV)
double urho0
The central denstiy.
double as
Surface energy coefficient.
double Ec
Coulomb energy (in MeV, default 0.7)
virtual const char * type()
Return the type, "nucmass".
virtual bool is_loaded()
Returns true if data has been loaded.
virtual const char * type()
Return the type, "nucmass_fit_base".
double av
Volume energy coefficient.
virtual size_t get_nentries()
Output the number of masses in the table.
double m_neut
Neutron mass in (defaults to o2scl_mks::mass_neutron converted into MeV)
double m_amu
Atomic mass unit in (defaults to o2scl_mks::unified_atomic_mass converted into MeV)
Nuclear mass formula base [abstract base].
virtual double mass_excess(int Z, int N)
Given Z and N, return the mass excess in MeV.
virtual double mass_excess(int Z, int N)=0
Given Z and N, return the mass excess in MeV [abstract].
inte_qagiu_gsl it
The integrator.
double y
Surface symmetry energy coefficient.
std::string reference
The reference for the original data.
double uN
The total number of particles.
virtual double mass_excess_d(double Z, double N)=0
Given Z and N, return the mass excess in MeV [abstract].
std::string tostring(size_t Z, size_t N)
Return a string of the form "Pb208" for a given Z and N.
Tabulated nuclear masses [abstract base].
double Sv
Symmetry energy (in MeV, default 23.7)
double shell
Most recently computed shell energy.
virtual const char * type()
Return the type, "nucmass_dvi".
double B
Binding energy (negative and in MeV, default -16)
std::vector< std::string > name_list
Element names.
std::string Ztoel(size_t Z)
Return the element name abbreviation given Z.
int eltoZ(std::string el)
Return Z given the element name abbreviation.
double uRfermi
Store the user-specified value of the radius in the Fermi distribution.
Semi-empirical mass formula.
virtual int fit_fun(size_t nv, const ubvector &x)
Fix parameters from an array for fitting.
virtual double mass_excess_d(double Z, double N)
Given Z and N, return the mass excess in MeV.
static const int nelements
The number of elements (proton number)
size_t nfit
Number of fitting parameters.
double iand2(double r)
The function .
void eval_N_err(double Rfermi, double d, double rho0, double &N, double &N_err)
Compute the total number of particles with numerical uncertainty.
Documentation generated with Doxygen. Provided under the
GNU Free Documentation License (see License Information).