nucmass_frdm.h
Go to the documentation of this file.
1 /*
2  -------------------------------------------------------------------
3 
4  Copyright (C) 2006-2017, Andrew W. Steiner
5 
6  This file is part of O2scl.
7 
8  O2scl is free software; you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation; either version 3 of the License, or
11  (at your option) any later version.
12 
13  O2scl is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with O2scl. If not, see <http://www.gnu.org/licenses/>.
20 
21  -------------------------------------------------------------------
22 */
23 #ifndef NUCMASS_FRDM_H
24 #define NUCMASS_FRDM_H
25 
26 /** \file nucmass_frdm.h
27  \brief File defining \ref o2scl::nucmass_frdm
28 */
29 
30 #include <cmath>
31 
32 #include <o2scl/nucleus.h>
33 #include <o2scl/nucmass.h>
34 #include <o2scl/constants.h>
35 
36 #ifndef DOXYGEN_NO_O2NS
37 namespace o2scl {
38 #endif
39 
40  /** \brief FRDM semi-empirical mass formula (macroscopic part only
41  with no deformation)
42 
43  The spherically-symmetric, macroscopic part of the finite-range
44  droplet model from \ref Moller95 .
45 
46  Using the relations
47  \f[
48  \bar{\delta} = (n_n - n_p)/n
49  \f]
50  and
51  \f[
52  \bar{\epsilon} = - (n-n_0)/3/n_0
53  \f]
54  we get
55  \f[
56  n_n = \frac{1}{2} (1+\bar{\delta}) (1-3 \bar{\epsilon}) n_0
57  \f]
58  and
59  \f[
60  n_p = \frac{1}{2} (1-\bar{\delta}) (1-3 \bar{\epsilon}) n_0
61  \f]
62  Assuming that
63  \f[
64  \frac{4 \pi}{3} R_n^3 n_n = N
65  \f]
66  and
67  \f[
68  \frac{4 \pi}{3} R_p^3 n_p = Z
69  \f]
70  we get
71  \f[
72  R_n^3 = 3 N / \alpha_n
73  \f]
74  \f[
75  R_p^3 = 3 Z / \alpha_p
76  \f]
77  where \f$ \alpha \f$'s are
78  \f[
79  \alpha_n = 2 \pi (1+ \bar{\delta})(1 - 3 \bar{\epsilon}) n_0
80  \f]
81  \f[
82  \alpha_p = 2 \pi (1- \bar{\delta})(1 - 3 \bar{\epsilon}) n_0
83  \f]
84  Note that the above relations are somehow self-consistent
85  because they imply
86  \f[
87  R^3 n = R_n^3 n_n + R_p^3 n_p
88  \f]
89 
90  Since we're using (is there a better way?)
91  \f[
92  R = r_0 A^{1/3}
93  \f]
94  with \f$ r_0 = 1.16 \f$ fm, then
95  \f$ n_0 = 0.152946 \mathrm{fm}^{-3} \f$.
96 
97  \todo Fix pairing energy and double vs. int
98  \todo Document drip_binding_energy(), etc.
99  \todo Decide on number of fit parameters (10 or 12?) or
100  let the user decide
101  \todo Document the protected variables
102  \todo Set the neutron and proton masses and hbarc to Moller et al.'s
103  values
104 
105  \future Add microscopic part.
106  */
108 
109  public:
110 
111  nucmass_frdm();
112 
113  /// Volume-energy constant in MeV (default 16.247)
114  double a1;
115  /// Symmetry-energy constant in MeV (default 32.73)
116  double J;
117  /// Nuclear compressibility constant in MeV (default 240)
118  double K;
119  /// Surface-energy constant in MeV (default 22.92)
120  double a2;
121  /// Effective surface-stiffness constant in MeV (default 29.21)
122  double Q;
123  /// Curvature-energy constant in MeV (default 0)
124  double a3;
125  /// Charge-asymmetry constant in MeV (default 0.436)
126  double ca;
127  /// Wigner constant in MeV (default 30)
128  double W;
129  /** \brief electronic-binding constant in MeV
130  (default \f$ 1.433 \times 10^{-5} \f$ ).
131  */
132  double ael;
133  /// Proton root-mean-square radius in fm (default 0.80)
134  double rp;
135  /// Nuclear-radius constant in fm (default 1.16)
136  double r0;
137  /// Hydrogen atom mass excess, 7.289034 MeV
138  double MH;
139  /// Neutron mass excess, 8.071431 MeV
140  double Mn;
141  /// Electronic charge squared, 1.4399764 MeV fm
142  double e2;
143  /// Range of Yukawa-plus-exponential potential, 0.68 fm
144  double a;
145  /** \brief Range of Yukawa function used to generate nuclear
146  charge distribution, 0.70 fm
147  */
148  double aden;
149  /// Average pairing-gap constant, 4.80 MeV
150  double rmac;
151  /// Neutron-proton interaction constant, 6.6 MeV
152  double h;
153  /// Density-symmetry constant, 0 MeV
154  double L;
155  /// Pre-exponential compressibility-term constant, 60 MeV
156  double C;
157  /// Exponential compressibility-term range constant, 0.831
158  double gamma;
159  /// Atomic mass unit, 931.5014 MeV
160  double amu;
161 
162  /// Internal average neutron density
163  double nn;
164 
165  /// Internal average proton density
166  double np;
167 
168  /// Neutron radius
169  double Rn;
170 
171  /// Proton radius
172  double Rp;
173 
174  /// Given \c Z and \c N, return the mass excess in MeV
175  virtual double mass_excess_d(double Z, double N);
176 
177  /// Given \c Z and \c N, return the mass excess in MeV
178  virtual double mass_excess(int Z, int N) {
179  return mass_excess_d(Z,N);
180  }
181 
182  /// Fix parameters from an array for fitting
183  virtual int fit_fun(size_t nv, const ubvector &x);
184 
185  /// Fill array with guess from present values for fitting
186  virtual int guess_fun(size_t nv, ubvector &x);
187 
188  /** \brief Return the binding energy in MeV
189  */
190  virtual double drip_binding_energy_d(double Z, double N,
191  double npout, double nnout,
192  double chi);
193 
194  /** \brief Given \c Z and \c N, return the mass excess in MeV
195  in a many-body environment
196 
197  This is an experimental version of mass_excess_d which removes
198  pairing, computes nn, np, Rn, and Rp, and attempts to correct
199  the surface. This function probably doesn't work at the
200  moment. It's not currently used by \ref
201  drip_binding_energy_d().
202  */
203  virtual double drip_mass_excess_d(double Z, double N,
204  double np_out, double nn_out,
205  double chi);
206 
207  protected:
208 
209  /// Conversion from kg to inverse fm
210  double kg_to_invfm;
211 
212  /// Proton pairing coefficient
213  double Deltap;
214  /// Neutron pairing coefficient
215  double Deltan;
216  /// Isubvector pairing coefficient
217  double deltanp;
218 
219  /// Average bulk nuclear asymmetry
220  double deltabar;
221  /// Average relative deviation of bulk density
222  double epsbar;
223 
224  /// Desc
225  double Bs;
226  /// Desc
227  double Bk;
228  /// Desc
229  double Br;
230  /// Desc
231  double Bw;
232  /// Desc
233  double Bv;
234 
235  /// Coulomb energy coefficient
236  double c1;
237  /// Volume redistribution energy coefficient
238  double c2;
239  /// Coulomb exchange correction coefficient
240  double c4;
241  /// Surface redistribution energy coefficient
242  double c5;
243 
244  /** \brief Coefficient for the proton form-factor correction to the
245  Coulomb energy
246  */
247  double f0;
248 
249  /// Desc
250  double a0;
251 
252  /// Desc
253  double B1;
254  /// Desc
255  double B2;
256  /// Desc
257  double B3;
258  /// Desc
259  double B4;
260 
261  };
262 
263  /** \brief Mass formula from Moller, Nix, Myers, Swiatecki and Kratz
264 
265  This is based on the tables given in \ref Moller95 and \ref
266  Moller97. To load data from the \o2 HDF5 data files, use
267  <tt>o2scl_hdf::mnmsk_load()</tt>.
268 
269  The data containing an object of type \ref entry for 8979
270  nuclei is automatically loaded by the constructor. If the file
271  (nucmass/mnmsk.o2) is not found, then is_loaded() will return
272  <tt>false</tt> and all calls to get_ZN() will return an object
273  with \c N=Z=0.
274 
275  There are several entries in the original table which are
276  blank because they are in some way not known, measured, or
277  computable. To distinguish these values from zero, blank entries
278  have been replaced by the number \c 1.0e99. For convenience,
279  this value is returned by \ref blank().
280 
281  \note This class requires data stored in an HDF file and
282  thus requires HDF support for normal usage.
283  */
284  class nucmass_mnmsk : public nucmass_table {
285 
286  public:
287 
288  nucmass_mnmsk();
289 
290  virtual ~nucmass_mnmsk();
291 
292  /** \brief Entry structure for Moller, et al. masses
293  */
294  struct entry {
295 
296  /// Neutron number
297  int N;
298 
299  /// Proton number
300  int Z;
301 
302  /// Atomic number
303  int A;
304 
305  /** \name Ground state deformations (perturbed-spheroid parameterization)
306  */
307  //@{
308  /// Quadrupole
309  double eps2;
310  /// Octupole
311  double eps3;
312  /// Hexadecapole
313  double eps4;
314  /// Hexacontatetrapole
315  double eps6;
316  /// Hexacontatetrapole without mass asymmetry
317  double eps6sym;
318  //@}
319 
320  /** \name Ground state deformations in the spherical-harmonics expansion
321  */
322  //@{
323  /// Quadrupole
324  double beta2;
325  /// Octupole
326  double beta3;
327  /// Hexadecapole
328  double beta4;
329  /// Hexacontatetrapole
330  double beta6;
331  //@}
332 
333  /// The ground-state microscopic energy
334  double Emic;
335 
336  /// The theoretical mass excess (in MeV)
337  double Mth;
338 
339  /// The experimental mass excess (in MeV)
340  double Mexp;
341 
342  /// Experimental mass excess error
343  double sigmaexp;
344 
345  /// The ground-state microscopic energy in the FRLDM
346  double EmicFL;
347 
348  /// The theoretical mass excess in the FRLDM
349  double MthFL;
350 
351  /// Spin and pairity of odd proton
352  char spinp[6];
353 
354  /// Spin and pairity of odd neutron
355  char spinn[6];
356 
357  /// Lipkin-Nogami proton gap
358  double gapp;
359 
360  /// Lipkin-Nogami neutron gap
361  double gapn;
362 
363  /// Total binding energy
364  double be;
365 
366  /// One neutron separation energy
367  double S1n;
368 
369  /// Two neutron separation energy
370  double S2n;
371 
372  /** \brief Percentage of daughters generated in beta decay after
373  beta-delayed neutron emission
374  */
375  double PA;
376 
377  /// Desc
378  double PAm1;
379 
380  /// Desc
381  double PAm2;
382 
383  /// Energy released in beta-decay
384  double Qbeta;
385 
386  /// Half-life w.r.t. GT beta-decay
387  double Tbeta;
388 
389  /// One proton separation energy
390  double S1p;
391 
392  /// Two proton separation energy
393  double S2p;
394 
395  /// Energy released in alpha-decay
396  double Qalpha;
397 
398  /// Half-life w.r.t. alpha-decay
399  double Talpha;
400 
401  };
402 
403  /** \brief Return false if the mass formula does not include
404  specified nucleus
405  */
406  virtual bool is_included(int Z, int N);
407 
408  /// Given \c Z and \c N, return the mass excess in MeV
409  virtual double mass_excess(int Z, int N);
410 
411  /** \brief Get the entry for the specified proton and neutron number
412 
413  This method searches the table using a cached binary search
414  algorithm. It is assumed that the table is sorted first by
415  proton number and then by neutron number.
416  */
417  nucmass_mnmsk::entry get_ZN(int l_Z, int l_N);
418 
419  /// The value which corresponds to a blank entry
420  double blank() { return 1.0e99; };
421 
422  /// Neither beta+ or beta- is possible
423  double neither() { return 1.0e98; };
424 
425  /// The value which corresponds to a blank entry
426  double beta_stable() { return 1.0e97; };
427 
428  /// Both beta+ and beta- are possible
429  double beta_plus_and_minus() { return 1.0e96; };
430 
431  /// The value is greater than 100
432  double greater_100() { return 1.0e95; };
433 
434  /// The value is greater than \f$ 10^{20} \f$
435  double very_large() { return 1.0e94; };
436 
437  /// Return the type, \c "nucmass_mnmsk".
438  virtual const char *type() { return "nucmass_mnmsk"; }
439 
440  /** \brief Set data
441 
442  This function is used by the HDF I/O routines.
443  */
444  int set_data(int n_mass, nucmass_mnmsk::entry *m, std::string ref);
445 
446 #ifndef DOXYGEN_INTERNAL
447 
448  protected:
449 
450  /// The number of entries (about 3000).
451  int n;
452 
453  /// The reference for the original data
454  std::string reference;
455 
456  /// The array containing the mass data of length ame::n
458 
459  /// The last table index for caching
460  int last;
461 
462 #endif
463 
464  };
465 
466  /** \brief The experimental values from Moller, Nix, Myers and Swiatecki
467 
468  This mass formula only includes the experimental mass
469  excesses tabulated in \ref Moller95 and \ref Moller97 .
470 
471  \note This class requires data stored in an HDF file and
472  thus requires HDF support for normal usage.
473  */
475 
476  public:
477 
478  /** \brief Return false if the mass formula does not include
479  specified nucleus
480  */
481  virtual bool is_included(int Z, int N);
482 
483  /// Given \c Z and \c N, return the mass excess in MeV
484  virtual double mass_excess(int Z, int N);
485 
486  };
487 
488 #ifndef DOXYGEN_NO_O2NS
489 }
490 #endif
491 
492 #endif
493 
nucmass_mnmsk::entry * mass
The array containing the mass data of length ame::n.
Definition: nucmass_frdm.h:457
double a2
Surface-energy constant in MeV (default 22.92)
Definition: nucmass_frdm.h:120
FRDM semi-empirical mass formula (macroscopic part only with no deformation)
Definition: nucmass_frdm.h:107
double r0
Nuclear-radius constant in fm (default 1.16)
Definition: nucmass_frdm.h:136
virtual int fit_fun(size_t nv, const ubvector &x)
Fix parameters from an array for fitting.
double MH
Hydrogen atom mass excess, 7.289034 MeV.
Definition: nucmass_frdm.h:138
double a
Range of Yukawa-plus-exponential potential, 0.68 fm.
Definition: nucmass_frdm.h:144
double deltabar
Average bulk nuclear asymmetry.
Definition: nucmass_frdm.h:220
double be
Total binding energy.
Definition: nucmass_frdm.h:364
double gapp
Lipkin-Nogami proton gap.
Definition: nucmass_frdm.h:358
double sigmaexp
Experimental mass excess error.
Definition: nucmass_frdm.h:343
double Qbeta
Energy released in beta-decay.
Definition: nucmass_frdm.h:384
double greater_100()
The value is greater than 100.
Definition: nucmass_frdm.h:432
double Talpha
Half-life w.r.t. alpha-decay.
Definition: nucmass_frdm.h:399
double beta2
Quadrupole.
Definition: nucmass_frdm.h:324
double gamma
Exponential compressibility-term range constant, 0.831.
Definition: nucmass_frdm.h:158
double C
Pre-exponential compressibility-term constant, 60 MeV.
Definition: nucmass_frdm.h:156
double ael
electronic-binding constant in MeV (default ).
Definition: nucmass_frdm.h:132
virtual double drip_mass_excess_d(double Z, double N, double np_out, double nn_out, double chi)
Given Z and N, return the mass excess in MeV in a many-body environment.
int Z
Proton number.
Definition: nucmass_frdm.h:300
double S2n
Two neutron separation energy.
Definition: nucmass_frdm.h:370
double eps6sym
Hexacontatetrapole without mass asymmetry.
Definition: nucmass_frdm.h:317
double Tbeta
Half-life w.r.t. GT beta-decay.
Definition: nucmass_frdm.h:387
double gapn
Lipkin-Nogami neutron gap.
Definition: nucmass_frdm.h:361
double L
Density-symmetry constant, 0 MeV.
Definition: nucmass_frdm.h:154
Mass formula from Moller, Nix, Myers, Swiatecki and Kratz.
Definition: nucmass_frdm.h:284
double beta6
Hexacontatetrapole.
Definition: nucmass_frdm.h:330
double K
Nuclear compressibility constant in MeV (default 240)
Definition: nucmass_frdm.h:118
int A
Atomic number.
Definition: nucmass_frdm.h:303
std::string reference
The reference for the original data.
Definition: nucmass_frdm.h:454
double c5
Surface redistribution energy coefficient.
Definition: nucmass_frdm.h:242
double eps4
Hexadecapole.
Definition: nucmass_frdm.h:313
The experimental values from Moller, Nix, Myers and Swiatecki.
Definition: nucmass_frdm.h:474
double a1
Volume-energy constant in MeV (default 16.247)
Definition: nucmass_frdm.h:114
virtual const char * type()
Return the type, "nucmass_mnmsk".
Definition: nucmass_frdm.h:438
double aden
Range of Yukawa function used to generate nuclear charge distribution, 0.70 fm.
Definition: nucmass_frdm.h:148
double kg_to_invfm
Conversion from kg to inverse fm.
Definition: nucmass_frdm.h:210
double Emic
The ground-state microscopic energy.
Definition: nucmass_frdm.h:334
double rmac
Average pairing-gap constant, 4.80 MeV.
Definition: nucmass_frdm.h:150
virtual double drip_binding_energy_d(double Z, double N, double npout, double nnout, double chi)
Return the binding energy in MeV.
double Deltan
Neutron pairing coefficient.
Definition: nucmass_frdm.h:215
double S1n
One neutron separation energy.
Definition: nucmass_frdm.h:367
virtual double mass_excess_d(double Z, double N)
Given Z and N, return the mass excess in MeV.
double ca
Charge-asymmetry constant in MeV (default 0.436)
Definition: nucmass_frdm.h:126
double eps2
Quadrupole.
Definition: nucmass_frdm.h:309
double h
Neutron-proton interaction constant, 6.6 MeV.
Definition: nucmass_frdm.h:152
int N
Neutron number.
Definition: nucmass_frdm.h:297
double MthFL
The theoretical mass excess in the FRLDM.
Definition: nucmass_frdm.h:349
double c1
Coulomb energy coefficient.
Definition: nucmass_frdm.h:236
double S2p
Two proton separation energy.
Definition: nucmass_frdm.h:393
double amu
Atomic mass unit, 931.5014 MeV.
Definition: nucmass_frdm.h:160
double very_large()
The value is greater than .
Definition: nucmass_frdm.h:435
double Deltap
Proton pairing coefficient.
Definition: nucmass_frdm.h:213
double Mn
Neutron mass excess, 8.071431 MeV.
Definition: nucmass_frdm.h:140
double a3
Curvature-energy constant in MeV (default 0)
Definition: nucmass_frdm.h:124
double epsbar
Average relative deviation of bulk density.
Definition: nucmass_frdm.h:222
double beta4
Hexadecapole.
Definition: nucmass_frdm.h:328
Entry structure for Moller, et al. masses.
Definition: nucmass_frdm.h:294
Tabulated nuclear masses [abstract base].
Definition: nucmass.h:325
double W
Wigner constant in MeV (default 30)
Definition: nucmass_frdm.h:128
double rp
Proton root-mean-square radius in fm (default 0.80)
Definition: nucmass_frdm.h:134
double EmicFL
The ground-state microscopic energy in the FRLDM.
Definition: nucmass_frdm.h:346
double nn
Internal average neutron density.
Definition: nucmass_frdm.h:163
double c2
Volume redistribution energy coefficient.
Definition: nucmass_frdm.h:238
double eps6
Hexacontatetrapole.
Definition: nucmass_frdm.h:315
double Mexp
The experimental mass excess (in MeV)
Definition: nucmass_frdm.h:340
int n
The number of entries (about 3000).
Definition: nucmass_frdm.h:451
double np
Internal average proton density.
Definition: nucmass_frdm.h:166
virtual double mass_excess(int Z, int N)
Given Z and N, return the mass excess in MeV.
Definition: nucmass_frdm.h:178
double J
Symmetry-energy constant in MeV (default 32.73)
Definition: nucmass_frdm.h:116
double S1p
One proton separation energy.
Definition: nucmass_frdm.h:390
double blank()
The value which corresponds to a blank entry.
Definition: nucmass_frdm.h:420
double neither()
Neither beta+ or beta- is possible.
Definition: nucmass_frdm.h:423
double beta_stable()
The value which corresponds to a blank entry.
Definition: nucmass_frdm.h:426
double e2
Electronic charge squared, 1.4399764 MeV fm.
Definition: nucmass_frdm.h:142
double c4
Coulomb exchange correction coefficient.
Definition: nucmass_frdm.h:240
double Q
Effective surface-stiffness constant in MeV (default 29.21)
Definition: nucmass_frdm.h:122
double deltanp
Isubvector pairing coefficient.
Definition: nucmass_frdm.h:217
int last
The last table index for caching.
Definition: nucmass_frdm.h:460
virtual bool is_included(int Z, int N)
Return false if the mass formula does not include specified nucleus.
Definition: nucmass.h:215
double f0
Coefficient for the proton form-factor correction to the Coulomb energy.
Definition: nucmass_frdm.h:247
double PA
Percentage of daughters generated in beta decay after beta-delayed neutron emission.
Definition: nucmass_frdm.h:375
double Rp
Proton radius.
Definition: nucmass_frdm.h:172
virtual int guess_fun(size_t nv, ubvector &x)
Fill array with guess from present values for fitting.
double Qalpha
Energy released in alpha-decay.
Definition: nucmass_frdm.h:396
double Mth
The theoretical mass excess (in MeV)
Definition: nucmass_frdm.h:337
Fittable mass formula [abstract base].
Definition: nucmass.h:347
double beta_plus_and_minus()
Both beta+ and beta- are possible.
Definition: nucmass_frdm.h:429
double Rn
Neutron radius.
Definition: nucmass_frdm.h:169

Documentation generated with Doxygen. Provided under the GNU Free Documentation License (see License Information).