nuclear_mass Class Reference

#include <nuclear_mass.h>

Inheritance diagram for nuclear_mass:

ame_mass mnmsk_mass nuclear_mass_fit mnmsk_mass_exp semi_empirical_mass

Detailed Description

Nuclear mass formula base.

This base class provides some default functionality for the nuclear mass formulas. For typical usage, use ame_mass, mnmsk_mass, mnmsk_mass_exp, or semi_empirical_mass.

Elements 112-118 are named "Uub", "Uut", "Uuq", "Uup", "Uuh", "Uus", and "Uuo", respectively.

The binding energy is defined by

\[ \mathrm{BE}=Z m_{H} + N m_{n} - m_{\mathrm{nuclide}} \]

where $m_{\mathrm{nuclide}}$ is the mass of the nucleus including the mass of the electrons. The mass excess is defined by

\[ m_{\mathrm{excess}} = m_{\mathrm{nuclide}} - A m_{u} \]

For example, for $ \mathrm{U}^{238} $, the binding energy is 1801.695 MeV, the mass excess is 47.30366 MeV, and $m_{\mathrm{nuclide}}$ is 221742.9 MeV. This is consistent with the above, as $m_H$ is 938.7830 MeV, $m_n$ is 939.5650 MeV, and $m_u$ is 931.494 MeV.

Some mass formulas are undefined for sufficiently exotic nuclei. You can use the function is_included() to find if a particular nucleus is included or not.

This class is designed so that a child only needs to reimplement either mass_excess() (if form_type==disc_type) or mass_excess_d() (if form_type==cont_type), and the remaining functions should work then automatically.

Warning:
The spin degeneracy is not handled particularly intelligently. The get_nucleus() function simply assumes 0 spin for even A and spin 1/2 for odd A.

The treatment of the electron binding energy contribution is not necessarily consistent at present.

Some common reaction Q-values and separation energies:
$\mathrm{Q}(\beta^{-})=\mathrm{M(A,Z)}-\mathrm{M(A,Z+1)}$: Beta-decay energy
$\mathrm{Q}(2\beta^{-})=\mathrm{M(A,Z)}-\mathrm{M(A,Z+2)}$: Double beta-decay energy
$\mathrm{Q}(4\beta^{-})=\mathrm{M(A,Z)}-\mathrm{M(A,Z+4)}$: Four beta-decay energy
$\mathrm{Q}(\alpha)=\mathrm{M(A,Z)}-\mathrm{M(A-4,Z-2)}- \mathrm{M(He^{4})}$: Alpha-decay energy
$\mathrm{Q}(\beta-n)=\mathrm{M(A,Z)}-\mathrm{M(A-1,Z+1)} -\mathrm{M(n)}$: Beta-delayed neutron emission decay energy
$\mathrm{Q}(d,\alpha)=\mathrm{M(A,Z)}-\mathrm{M(A-2,Z-1)} -\mathrm{M(He^{4})}-\mathrm{M(H^{2})}$: $(d,\alpha)$ reaction energy
$\mathrm{Q}(\mathrm{EC})=\mathrm{M(A,Z)}-\mathrm{M(A,Z-1)}$: Electron capture decay energy
$\mathrm{Q}(\mathrm{ECp})=\mathrm{M(A,Z)}-\mathrm{M(A-1,Z-2)}$: Electron capture with delayed proton emission decay energy
$\mathrm{Q}(n,\alpha)=\mathrm{M(A,Z)}-\mathrm{M(A-3,Z-2)} -\mathrm{M(He^{4})}+\mathrm{M(n)}$: $(n,\alpha)$ reaction energy
$\mathrm{Q}(p,\alpha)=\mathrm{M(A,Z)}-\mathrm{M(A-3,Z-1)} -\mathrm{M(He^{4})}+\mathrm{M(p)}$: $(p,\alpha)$ reaction energy
$\mathrm{S}(n) = \mathrm{-M(A,Z)}+\mathrm{M(A-1,Z)}+ \mathrm{M(n)}$: Neutron separation energy
$\mathrm{S}(p) = \mathrm{-M(A,Z)}+\mathrm{M(A-1,Z-1)}+ \mathrm{H^{1}}$: Proton separation energy
$\mathrm{S}(2n) = \mathrm{-M(A,Z)}+\mathrm{M(A-2,Z)}+ \mathrm{2M(n)}$: Two neutron separation energy
$\mathrm{S}(2p) = \mathrm{-M(A,Z)}+\mathrm{M(A-2,Z-2)}+ \mathrm{2 M(H^{1)}}$: Two proton separation energy

Note:
All descendants ought to set form_type to indicate whether the mass formula is discrete or continuous
Todo:
Make the treatment of the electron binding energy contribution more consistent.
Idea for future:
It might be useful to consider a fudge factor to ensure no problems with finite precision arithmetic when converting double to int.

Definition at line 127 of file nuclear_mass.h.


Indicate whether or not the mass formula is

discrete or continuous

static const int cont_type = 1
static const int disc_type = 2
int form_type

Public Member Functions

virtual bool is_included (int Z, int N)
 Return false if the mass formula does not include specified nucleus.
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 mass_excess (int Z, int N)
 Given Z and N, return the mass excess in MeV.
virtual double mass_excess_d (double Z, double N)
 Given Z and N, return the mass excess in MeV.
virtual double binding_energy (int Z, int N)
 Return the binding energy in MeV.
virtual double binding_energy_d (double Z, double N)
 Return the binding energy in MeV.
virtual double total_mass (int Z, int N)
 Return the total mass of the nucleus (without the electrons) in MeV.
virtual double total_mass_d (double Z, double N)
 Return the total mass of the nucleus (without the electrons) in MeV.
int eltoZ (std::string el)
 Return Z given the element name.
std::string Ztoel (size_t Z)
 Return the element name given Z.
int parse_elstring (std::string ela, int &Z, int &N, int &A)
 Parse a string of the form "Pb208".

Protected Types

typedef std::map< std::string,
int, string_less_than >
::iterator 
table_it
 A convenient typedef for an iterator for element_table.

Protected Attributes

std::map< std::string, int,
string_less_than
element_table
 A map containing the proton numbers organized by element name.
std::string element_list [nelements]
 The list of elements organized by proton number.

Static Protected Attributes

static const int nelements = 119
 The number of elements (proton number).

Data Structures

struct  string_less_than
 String comparison operator for element_table. More...

Member Function Documentation

int get_nucleus ( int  Z,
int  N,
nucleus n 
) [inline]

Fill n with the information from nucleus with the given neutron and proton number.

All masses are given in $\mathrm{fm}^{-1}$. The total mass (withouth the electrons) is put in part::m and part::ms, the binding energy is placed in nucleus::be, the mass excess in nucleus::mex and the degeneracy (part::g) is arbitrarily set to 1 for even A nuclei and 2 for odd A nuclei.

Definition at line 151 of file nuclear_mass.h.

virtual double binding_energy ( int  Z,
int  N 
) [inline, virtual]

Return the binding energy in MeV.

The binding energy is defined to be negative for bound nuclei, thus the binding energy per baryon of Pb-208 is about -8*208 = -1664 MeV.

Definition at line 198 of file nuclear_mass.h.

virtual double binding_energy_d ( double  Z,
double  N 
) [inline, virtual]

Return the binding energy in MeV.

The binding energy is defined to be negative for bound nuclei, thus the binding energy per baryon of Pb-208 is about -8*208 = -1664 MeV.

Definition at line 212 of file nuclear_mass.h.

int eltoZ ( std::string  el  )  [inline]

Return Z given the element name.

Properly handle errors

Definition at line 242 of file nuclear_mass.h.

std::string Ztoel ( size_t  Z  )  [inline]

Return the element name given Z.

Note that Ztoel(0) returns "n" indicating the neutron and if the argument Z is greater than 118, an empty string is returned.

Definition at line 253 of file nuclear_mass.h.

int parse_elstring ( std::string  ela,
int &  Z,
int &  N,
int &  A 
) [inline]

Parse a string of the form "Pb208".

Note that this does not correctly interpret dashes, e.g. "Pb-208". will not work.

Idea for future:
Properly ignore dashes and other non-alphanumeric characters.

Definition at line 270 of file nuclear_mass.h.


The documentation for this class was generated from the following file:

Documentation generated with Doxygen and provided under the GNU Free Documentation License. See License Information for details.

Project hosting provided by SourceForge.net Logo, O2scl Sourceforge Project Page