All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
eos_had_base.h
Go to the documentation of this file.
1 /*
2  -------------------------------------------------------------------
3 
4  Copyright (C) 2006-2014, 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 /** \file eos_had_base.h
24  \brief File defining \ref o2scl::eos_had_base
25 */
26 #ifndef O2SCL_HADRONIC_EOS_H
27 #define O2SCL_HADRONIC_EOS_H
28 
29 #include <iostream>
30 #include <string>
31 
32 #include <boost/numeric/ublas/vector.hpp>
33 
34 #include <o2scl/deriv_gsl.h>
35 #include <o2scl/mroot.h>
36 #include <o2scl/mroot_hybrids.h>
37 #include <o2scl/mm_funct.h>
38 #include <o2scl/eos_base.h>
39 #include <o2scl/fermion_eff.h>
40 #include <o2scl/part.h>
41 #include <o2scl/lib_settings.h>
42 
43 #ifndef DOXYGEN_NO_O2NS
44 namespace o2scl {
45 #endif
46 
47  /** \brief Hadronic equation of state [abstract base]
48 
49  Denote the number density of neutrons as \f$ n_n \f$, the number
50  density of protons as \f$ n_p \f$, the total baryon density \f$
51  n_B = n_n + n_p \f$, the asymmetry \f$ \delta \equiv
52  (n_n-n_p)/n_B \f$, the nuclear saturation density as \f$ n_0
53  \approx 0.16~\mathrm{fm}^{-3} \f$, and the quantity \f$ \epsilon
54  \equiv (n_B-n_0)/3n_0 \f$. (Note that some authors define
55  \f$ \delta \f$ as \f$ n_n - n_p \f$, which is not the same as
56  the definition above.) Then the energy per baryon of nucleonic
57  matter can be written as an expansion around
58  \f$ \epsilon =\delta = 0 \f$
59  \f[
60  E(n_B,\delta) = -B + \frac{\tilde{K}}{2!} {\epsilon}^2 +
61  \frac{Q}{3!} {\epsilon}^3 + \delta^2 \left(S + L \epsilon +
62  \frac{K_{\mathrm{sym}}}{2!} {\epsilon}^2
63  + \frac{Q_{\mathrm{sym}}}{3!} \epsilon^3 \right) +
64  E_4(n_B,\delta) + {\cal O}(\delta^6)
65  \qquad \left(\mathrm{Eq.}~1\right)
66  \f]
67  where \f$ E_4 \f$ represents the quartic terms
68  \f[
69  E_4(n_B,\delta)
70  = \delta^4 \left(S_4 + L_4 \epsilon + \frac{K_4}{2!} {\epsilon}^2
71  + \frac{Q_4}{3!} \epsilon^3 \right) \qquad
72  \left(\mathrm{Eq.}~2\right)
73  \f]
74  (Adapted slightly from \ref Piekarewicz09). From this, one can
75  compute the energy density of nuclear matter \f$
76  \varepsilon(n_B,\delta) = n_B E(n_B,\delta) \f$, the chemical
77  potentials \f$ \mu_i \equiv (\partial \varepsilon) / (\partial
78  n_i ) \f$ and the pressure \f$ P = -\varepsilon + \mu_n n_n +
79  \mu_p n_p \f$. This expansion motivates the definition of
80  several separate terms. The binding energy \f$ B \f$ of
81  symmetric nuclear matter (\f$ \delta = 0 \f$) is around 16 MeV.
82 
83  The compression modulus is usually defined by \f$ \chi = -1/V
84  (dV/dP) = 1/n (dP/dn)^{-1} \f$ . In nuclear physics it has
85  become common to use the incompressibility (or bulk) modulus
86  with an extra factor of 9 (motivated by the 3 in the denominator
87  in the definition of \f$ \epsilon \f$), \f$ K=9/(n \chi) \f$ and
88  refer to \f$ K \f$ simply as the incompressibility. Here, we
89  define the function
90  \f[
91  K(n_B,\delta) \equiv 9 \left( \frac{\partial P}{\partial n_B}
92  \right) = 9 n_B \left(\frac{\partial^2 \varepsilon}
93  {\partial n_B^2}\right)
94  \f]
95  This quantity is computed by the function \ref fcomp() by
96  computing the first derivative of the pressure, which is more
97  numerically stable than the second derivative of the energy
98  density (since most \o2 EOSs compute the pressure exactly). This
99  function is typically evaluated at the point \f$
100  (n_B=n_0,\delta=0) \f$ and is stored in \ref comp by the
101  function \ref saturation(). This quantity is not always the same
102  as \f$ \tilde{K} \f$, defined here as
103  \f[
104  \tilde{K}(n_B,\delta) = 9 n_B^2 \left(\frac{\partial^2 E}{\partial
105  n_B^2}\right) = K(n_B,\delta) - \frac{1}{n_B} 18 P(n_B,\delta)
106  \f]
107  We denote \f$ K \equiv K(n_B=n_0,\delta=0) \f$ and similarly for
108  \f$ \tilde{K} \f$, the quantity in Eq. 1 above. In nuclear
109  matter at saturation, the pressure is zero and \f$ K = \tilde{K}
110  \f$. See \ref Chabanat97 for further discussion of the distinction
111  between \f$ K \f$ and \f$ \tilde{K} \f$.
112 
113  The symmetry energy, \f$ S(n_B,\delta), \f$ can be defined as
114  \f[
115  S(n_B,\delta) \equiv \frac{1}{2 n_B}\frac{\partial^2 \varepsilon}
116  {\partial \delta^2}
117  \f]
118  and the parameter \f$ S \f$ in Eq. 1 is just \f$ S(n_0,0) \f$.
119  Using
120  \f[
121  \left(\frac{\partial \varepsilon}{\partial \delta}\right)_{n_B} =
122  \frac{\partial \varepsilon}{\partial n_n}
123  \left(\frac{\partial n_n}{\partial \delta}\right)_{n_B} +
124  \frac{\partial \varepsilon}{\partial n_p}
125  \left(\frac{\partial n_p}{\partial \delta}\right)_{n_B}
126  = \frac{n_B}{2} \left(\mu_n - \mu_p \right)
127  \f]
128  this can be rewritten
129  \f[
130  S(n_B,\delta) = \frac{1}{4} \frac{\partial}{\partial \delta}
131  \left(\mu_n - \mu_p\right)
132  \f]
133  where the dependence of the chemical potentials on \f$ n_B \f$
134  and \f$ \delta \f$ is not written explicitly. This quantity is
135  computed by function \ref fesym(). Note that many of the
136  functions in this class are written in terms of the proton
137  fraction \f$ x_p = (1-\delta)/2 \f$ denoted as <tt>'pf'</tt>
138  instead of as functions of \f$ \delta \f$. Frequently, \f$
139  S(n_B,\delta) \f$ is evaluated at \f$ \delta=0 \f$ to give a
140  univariate function of the baryon density. It is sometimes also
141  evaluated at the point \f$ (n_B=n_0, \delta=0) \f$, and this
142  value is denoted by \f$ S \f$ above and is typically stored in
143  \ref esym.
144  Alternatively, one can define the symmetry energy by
145  \f[
146  \tilde{S}(n_B) = E(n_B,\delta=1)-E(n_B,\delta=0)
147  \f]
148  which is computed by function \ref fesym_diff() . The
149  functions \f$ S(n_B,\delta=0) \f$ and \f$ \tilde{S}(n_B) \f$
150  are equal when \f$ {\cal O}(\delta^4) \f$ terms are zero.
151  In this case, \f$ \mu_n - \mu_p \f$ is proportional to
152  \f$ \delta \f$ and so
153  \f[
154  S(n_B) = \tilde{S}(n_B) = \frac{1}{4}
155  \frac{(\mu_n-\mu_p)}{\delta} \, .
156  \f]
157 
158  These functions can also be generalized to finite temperature
159  \f[
160  S(n_B,\delta,T) = \frac{1}{4} \frac{\partial}{\partial \delta}
161  \left[\mu_n(n_B,\delta,T) - \mu_p(n_B,\delta,T)\right] \, ,
162  \f]
163  and
164  \f[
165  \tilde{S}(n_B,T) = F(n_B,\delta=1,T)-F(n_B,\delta=0,T) \, .
166  \f]
167 
168  The symmetry energy slope parameter \f$ L \f$, can be defined
169  by
170  \f[
171  L(n_B,\delta) \equiv 3 n_B \frac{\partial S(n_B,\delta)}
172  {\partial n_B} = 3 n_B \frac{\partial}{\partial n_B} \left[
173  \frac{1}{2 n_B} \frac{\partial^2 \varepsilon}{\partial \delta^2}
174  \right]
175  \f]
176  This can be rewritten as
177  \f[
178  L(n_B,\delta) = \frac{3 n_B}{4} \frac{\partial}{\partial n_B}
179  \frac{\partial}{\partial \delta} \left(\mu_n - \mu_p\right)
180  \f]
181  (where the derivatives can be evaluated in either order)
182  and this is the method used to compute this function
183  in \ref fesym_slope(). Alternatively, using
184  \f[
185  \left(\frac{\partial \varepsilon}{\partial n_B}\right)_{\delta} =
186  \frac{\partial \varepsilon}{\partial n_n}
187  \left(\frac{\partial n_n}{\partial n_B}\right)_{\delta} +
188  \frac{\partial \varepsilon}{\partial n_p}
189  \left(\frac{\partial n_p}{\partial n_B}\right)_{\delta}
190  = \frac{1}{2} \left(\mu_n + \mu_p \right)
191  \f]
192  \f$ L \f$ can be rewritten
193  \f{eqnarray*}
194  L(n_B,\delta) &=& 3 n_B \left[\frac{-1}{2 n_B^2}
195  \frac{\partial^2 \varepsilon}{\partial \delta^2} +
196  \frac{1}{4 n_B} \frac{\partial^2}{\partial \delta^2}
197  \left(\mu_n + \mu_p\right)\right] \\
198  &=& \frac{3}{4}\frac{\partial^2}{\partial \delta^2}
199  \left(\mu_n + \mu_p\right) - 3 S(n_B,\delta) \, .
200  \f}
201 
202  The third derivative with respect to the baryon density is
203  sometimes called the skewness. Here, we define
204  \f[
205  Q(n_B,\delta) = 27 n_B^3 \frac{\partial^3}{\partial n_B^3}
206  \left(\frac{\varepsilon}{n_B}\right) =
207  27 n_B^3 \frac{\partial^2}{\partial n_B^2}
208  \left(\frac{P}{n_B^2}\right)
209  \f]
210  and this function is computed in \ref fkprime() by computing
211  the second derivative of the pressure.
212 
213  The second derivative of the symmetry energy with respect
214  to the baryon density is
215  \f[
216  K_{\mathrm{sym}}(n_B,\delta) = 9 n_B^2
217  \frac{\partial^2}{\partial n_B^2} S(n_B,\delta)
218  \f]
219  and this function is computed in \ref fesym_curve().
220 
221  The third derivative of the symmetry energy with respect
222  to the baryon density is
223  \f[
224  Q_{\mathrm{sym}}(n_B,\delta) = 27 n_B^3
225  \frac{\partial^3}{\partial n_B^3} S(n_B,\delta)
226  \f]
227  and this function is computed in \ref fesym_skew(). Note that
228  the numerical evaluation of higher derivatives can make \ref
229  eos_had_base::fesym_curve() and \ref eos_had_base::fesym_skew()
230  inaccurate.
231 
232  Note that assuming terms of order \f$ \epsilon^3 \f$ and higher
233  are zero and solving for the baryon density for which \f$ P=0 \f$
234  gives, to order \f$ \delta^2 \f$ (\ref Piekarewicz09),
235  \f[
236  n_{B,\mathrm{sat}} = n_0 \left[ 1 - \frac{3 L \delta^2}{K} \right]
237  \f]
238  this implies a new 'incompressibility' around the saturation
239  point, i.e.
240  \f[
241  K(n_B=n_{B,\mathrm{sat}},\delta)=
242  K+\delta^2 \left( K_{\mathrm{sym}}-6 L- \frac{L Q}{K} \right)
243  + {\cal O}\left(\delta^4\right)
244  \f]
245  The quantity in parenthesis is referred to by some authors as
246  \f$ K_{\tau} \f$. Note that, because one is evaluating this at
247  \f$ n_B=n_{B,\mathrm{sat}} \f$, this is distinct from
248  \f[
249  \tilde{K}_{\tau} \equiv \frac{1}{2} \frac{\partial^2 K(n_B,\delta)}
250  {\partial \delta^2}
251  \f]
252  which is equal to \f$ K_{\mathrm{sym}} + 6 L \f$ to lowest order
253  in \f$ \delta \f$ at \f$ n_B = n_0 \f$.
254 
255  The quartic symmetry energy \f$ S_4(n_B,\delta) \f$ can be defined as
256  \f[
257  S_4(n_B,\delta) \equiv \frac{1}{24 n_B}\frac{\partial^4 \varepsilon}
258  {\partial \delta^4}
259  \f]
260  However, fourth derivatives are difficult numerically, and so an
261  alternative quantity is preferable. Instead, one can evaluate
262  the extent to which \f$ {\cal O}(\delta^4) \f$ terms are
263  important from
264  \f[
265  \eta(n_B) \equiv \frac{E(n_B,1)-E(n_B,1/2)}
266  {3 \left[E(n_B,1/2)-E(n_B,0)\right]}
267  \f]
268  as described in \ref Steiner06 . This function can be expressed
269  either in terms of \f$ \tilde{S} \f$ or \f$ S_4 \f$
270  \f[
271  \eta(n_B) = \frac{5 \tilde{S}(n_B) - S(n_B,0)}
272  {\tilde{S}(n_B) + 3 S(n_B,0)} =
273  \frac{5 S_4(n_B,0) + 4 S(n_B,0)}
274  {S_4(n_B,0) + 4 S(n_B,0)}
275  \f]
276  Alternatively, \f$ S_4 \f$ can be written
277  \f[
278  4 S(n_B) \left[ \frac{1-\eta(n_B)}{\eta(n_B)-5} \right] \, .
279  \f]
280 
281  Evaluating this function at the saturation density gives
282  \f[
283  \eta(n_0) = \frac{4 S + 5 S_4}{4 S + S_4}
284  \f]
285  (Note that \f$ S_4 \f$ is referred to as \f$ Q \f$ in
286  \ref Steiner06). Sometimes it is useful to separate out
287  the kinetic and potential parts of the energy density when
288  computing \f$ \eta \f$, and the class \ref eos_had_sym4_base
289  is useful for this purpose.
290 
291  The function \f$ L_4 \f$ can also be rewritten in
292  \f$ \eta^{\prime} \f$ (now suppressing the dependence
293  on \f$ n_B \f$),
294  \f[
295  \eta^{\prime} = \frac{16 \left( L_4 S - L S_4 \right)}
296  {3 n_B \left(4 S +S_4 \right)^2}
297  \f]
298  then using the expression for \f$ S_4 \f$,
299  \f[
300  \eta^{\prime} = \frac{\left(\eta -5\right)}{48 n_B S }
301  \left[ L_4 \left(\eta -5\right) + 4 L
302  \left(\eta -1\right)\right]
303  \f]
304 
305  \future Could write a function to compute the "symmetry free energy"
306  or the "symmetry entropy"
307  \future Compute the speed of sound or the number susceptibilities?
308  \future Compute isoscalar and isovector effective masses
309  */
310  class eos_had_base : public eos_base {
311 
312  public:
313 
315 
316  eos_had_base();
317 
318  virtual ~eos_had_base() {};
319 
320  /// Binding energy
321  double eoa;
322 
323  /// Compression modulus
324  double comp;
325 
326  /// Symmetry energy
327  double esym;
328 
329  /// Saturation density
330  double n0;
331 
332  /// Effective mass (neutron)
333  double msom;
334 
335  /// Skewness
336  double kprime;
337 
338  /// \name Equation of state
339  //@{
340  /** \brief Equation of state as a function of the chemical potentials
341  */
342  virtual int calc_p(fermion &n, fermion &p, thermo &th)=0;
343 
344  /** \brief Equation of state as a function of density
345  */
346  virtual int calc_e(fermion &n, fermion &p, thermo &th)=0;
347  //@}
348 
349  /// \name EOS properties
350  //@{
351  /** \brief Calculate the incompressibility in \f$ \mathrm{fm}^{-1} \f$
352  using calc_e()
353 
354  This function computes \f$ K (n_B,\delta) = 9 n_B \partial^2
355  \varepsilon /(\partial n_B^2) = 9 \partial P / (\partial n_B)
356  \f$ . The value of \f$ K(n_0,0) \f$, often referred to as the
357  "compressibility", is stored in \ref comp by \ref saturation()
358  and is about 240 MeV at saturation density.
359  */
360  virtual double fcomp(double nb, double delta=0.0);
361 
362  /** \brief Compute the incompressibility and its uncertainty
363 
364  This function works like \ref fcomp(), except that it also
365  returns the uncertainty in \c unc.
366  */
367  virtual double fcomp_err(double nb, double delta, double &unc);
368 
369  /** \brief Calculate the energy per baryon in \f$ \mathrm{fm}^{-1} \f$
370  using calc_e()
371 
372  This function computes the energy per baryon of matter
373  without the nucleon rest masses at the specified baryon
374  density, \c nb, and isospin asymmetry \c delta.
375  */
376  virtual double feoa(double nb, double delta=0.0);
377 
378  /** \brief Calculate symmetry energy of matter in
379  \f$ \mathrm{fm}^{-1} \f$ using \ref calc_dmu_delta() .
380 
381  This function computes the symmetry energy,
382  \f[
383  \left(\frac{1}{2 n_B}\frac{d^2 \varepsilon}{d \delta^2}
384  \right) = \frac{1}{4} \frac{\partial}{\partial \delta}
385  \left(\mu_n - \mu_p \right)
386  \f]
387  at the value of \f$ n_B \f$ given in \c nb and \f$ \delta \f$
388  given in \c delta. The symmetry energy at \f$ \delta=0 \f$ at
389  the saturation density and is stored in \ref esym by
390  \ref saturation().
391  */
392  virtual double fesym(double nb, double delta=0.0);
393 
394  /** \brief Calculate symmetry energy of matter and its
395  uncertainty
396 
397  This estimates the uncertainty due to the numerical
398  differentiation, assuming that difference betwen the neutron
399  and proton chemical potentials is computed exactly by \ref
400  calc_dmu_delta() .
401  */
402  virtual double fesym_err(double nb, double delta, double &unc);
403 
404  /** \brief The symmetry energy slope parameter
405 
406  This returns the value of the "slope parameter" of the
407  symmetry energy as a function of baryon density \c nb and
408  isospin asymmetry \c delta. This ranges between about zero and
409  200 MeV for most equations of state.
410  */
411  virtual double fesym_slope(double nb, double delta=0.0);
412 
413  /** \brief The curvature of the symmetry energy
414  */
415  virtual double fesym_curve(double nb, double delta=0.0);
416 
417  /** \brief The skewness of the symmetry energy
418  */
419  virtual double fesym_skew(double nb, double delta=0.0);
420 
421  /** \brief Calculate symmetry energy of matter as energy of
422  neutron matter minus the energy of nuclear matter
423 
424  This function returns the energy per baryon of neutron matter
425  minus the energy per baryon of nuclear matter. This will
426  deviate significantly from the results from fesym() only if
427  the dependence of the symmetry energy on \f$ \delta \f$ is not
428  quadratic.
429  */
430  virtual double fesym_diff(double nb);
431 
432  /** \brief The strength parameter for quartic terms in the
433  symmetry energy
434  */
435  virtual double feta(double nb);
436 
437  /** \brief The derivative of the strength parameter for quartic
438  terms in the symmetry energy
439  */
440  virtual double feta_prime(double nb);
441 
442  /** \brief Calculate skewness of nuclear matter using calc_e()
443 
444  The skewness is defined to be
445  \f$ 27 n^3 d^3 (\varepsilon/n)/(d n^3) =
446  27 n^3 d^2 (P/n^2) / (d n^2) \f$
447  and is denoted 'kprime'. This definition seems to be ambiguous
448  for densities other than the saturation density and is not
449  quite analogous to the compression modulus.
450  */
451  virtual double fkprime(double nb, double delta=0.0);
452 
453  /** \brief Calculate reduced neutron effective mass using calc_e()
454 
455  Neutron effective mass (as stored in <tt>part::ms</tt>)
456  divided by vacuum mass (as stored in <tt>part::m</tt>) in
457  nuclear matter at saturation density. Note that this simply
458  uses the value of n.ms from calc_e(), so that this effective
459  mass could be either the Landau or Dirac mass depending on the
460  context. Note that this may not be equal to the reduced proton
461  effective mass.
462  */
463  virtual double fmsom(double nb, double delta=0.0);
464 
465  /** \brief Neutron effective mass
466  */
467  virtual double f_effm_neut(double nb, double delta=0.0);
468  /** \brief Proton effective mass
469  */
470  virtual double f_effm_prot(double nb, double delta=0.0);
471  /** \brief Scalar effective mass
472 
473  The scalar and vector effective masses are defined by
474  \f[
475  \frac{1}{m^{*}_n} = (1+\delta) \frac{1}{m^{*}_s} -
476  \delta \frac{1}{m^{*}_v}
477  \f]
478  \f[
479  \frac{1}{m^{*}_p} = (1-\delta) \frac{1}{m^{*}_s} +
480  \delta \frac{1}{m^{*}_v}
481  \f]
482  this implies
483  \f[
484  \frac{1}{m^{*}_s} = \frac{1}{2} \frac{1}{m^{*}_n}+
485  \frac{1}{2} \frac{1}{m^{*}_p}
486  \f]
487  \f[
488  \frac{1}{m^{*}_v} = \frac{\delta-1}{2 \delta} \frac{1}{m^{*}_n}+
489  \frac{1+\delta}{2 \delta} \frac{1}{m^{*}_p}
490  \f]
491  */
492  virtual double f_effm_scalar(double nb, double delta=0.0);
493  /** \brief Vector effective mass
494 
495  See documentation for \ref eos_had_base::f_effm_scalar().
496  */
497  virtual double f_effm_vector(double nb, double delta=0.0);
498 
499  /** \brief Calculate saturation density using calc_e()
500 
501  This function finds the baryon density for which the pressure
502  vanishes.
503  */
504  virtual double fn0(double delta, double &leoa);
505 
506  /** \brief Calculates some of the EOS properties at the saturation
507  density
508 
509  This computes the saturation density, and the
510  incompressibility, the symmetry energy, the binding energy,
511  the reduced neutron effective mass at the saturation density,
512  and the skewness in isospin-symmetric matter. The results are
513  stored in \ref n0, \ref comp, \ref esym, \ref eoa, \ref msom,
514  and \ref kprime, respectively.
515 
516  \future It would be great to provide numerical uncertainties
517  in the saturation properties.
518  */
519  virtual void saturation();
520  //@}
521 
522  /// \name Functions for calculating physical properties
523  //@{
524 
525  /** \brief Compute the difference between neutron and proton chemical
526  potentials as a function of the isospin asymmetry
527 
528  This uses \ref neutron, \ref proton, \ref eos_base::eos_thermo,
529  and \ref calc_e() .
530  */
531  double calc_dmu_delta(double delta, double nb);
532 
533  /** \brief Compute the sum of the neutron and proton chemical
534  potentials as a function of the isospin asymmetry
535 
536  This uses \ref neutron, \ref proton, \ref eos_base::eos_thermo,
537  and \ref calc_e() .
538  */
539  double calc_musum_delta(double delta, double nb);
540 
541  /** \brief Compute the pressure as a function of baryon density
542  at fixed isospin asymmetry
543 
544  Used by fcomp().
545  */
546  double calc_pressure_nb(double nb, double delta=0.0);
547 
548  /** \brief Compute the energy density as a function of baryon density
549  at fixed isospin asymmetry
550 
551  This uses \ref neutron, \ref proton, \ref eos_base::eos_thermo,
552  and \ref calc_e() .
553  */
554  double calc_edensity_nb(double nb, double delta=0.0);
555 
556  /** \brief Compute derivatives at constant proton fraction
557  */
558  void const_pf_derivs(double nb, double pf,
559  double &dednb_pf, double &dPdnb_pf);
560 
561  /** \brief Calculate pressure / baryon density squared in nuclear
562  matter as a function of baryon density at fixed isospin asymmetry
563 
564  Used by fkprime().
565 
566  This uses \ref neutron, \ref proton, \ref eos_base::eos_thermo,
567  and \ref calc_e() .
568  */
569  double calc_press_over_den2(double nb, double delta=0.0);
570 
571  /** \brief Calculate energy density as a function of the
572  isospin asymmetry at fixed baryon density
573 
574  Used by fesym().
575 
576  This function calls \ref eos_had_base::calc_e() with the
577  internally stored neutron and proton objects.
578  */
579  double calc_edensity_delta(double delta, double nb);
580  //@}
581 
582  /// \name Nuclear matter functions
583  //@{
584  /** \brief Solve for the chemical potentials given the densities
585 
586  The neutron and proton chemical potentials should be stored in
587  <tt>x[0]</tt> and <tt>x[1]</tt> and the neutron and proton
588  densities should be stored in <tt>pa[0]</tt> and
589  <tt>pa[1]</tt>.
590 
591  Because this function is designed to be used in a solver,
592  it returns \ref exc_efailed without calling the error
593  handler if the densities are not finite.
594 
595  This function is used by \ref eos_had_pres_base::calc_e().
596  */
597  int nuc_matter_p(size_t nv, const ubvector &x, ubvector &y,
598  double nn0, double np0);
599 
600  /** \brief Solve for the densities given the chemical potentials
601 
602  The neutron and proton densities should be stored in
603  <tt>x[0]</tt> and <tt>x[1]</tt> and the neutron and proton
604  chemical potentials should be stored in <tt>pa[0]</tt> and
605  <tt>pa[1]</tt>.
606 
607  Because this function is designed to be used in a solver,
608  it returns \ref exc_efailed without calling the error
609  handler if the chemical potentials are not finite.
610 
611  This function is used by \ref eos_had_eden_base::calc_p().
612  */
613  int nuc_matter_e(size_t nv, const ubvector &x, ubvector &y,
614  double mun0, double mup0);
615  //@}
616 
617  /// \name Set auxilliary objects
618  //@{
619  /** \brief Set class mroot object for use in calculating chemical
620  potentials from densities
621 
622  \note While in principle this allows one to use any \ref mroot
623  object, in practice some of the current EOSs require \ref
624  mroot_hybrids because it automatically avoids regions
625  where the equations are undefined.
626  */
627  virtual void set_mroot(mroot<> &mr);
628 
629  /** \brief Set class mroot object for use calculating saturation density
630 
631  \note While in principle this allows one to use any \ref mroot
632  object, in practice some of the current EOSs require \ref
633  mroot_hybrids because it automatically avoids regions
634  where the equations are undefined.
635  */
636  virtual void set_sat_root(root<> &mr);
637 
638  /// Set \ref deriv_base object to use to find saturation properties
639  virtual void set_sat_deriv(deriv_base<> &de);
640 
641  /** \brief Set the second \ref deriv_base object to use to find
642  saturation properties
643 
644  Computing the slope of the symmetry energy at the saturation
645  density requires two derivative objects, because it has to
646  take an isospin derivative and a density derivative. Thus this
647  second \ref deriv_base object is used in the function
648  fesym_slope().
649  */
650  virtual void set_sat_deriv2(deriv_base<> &de);
651 
652  /// Set neutron and proton
653  virtual void set_n_and_p(fermion &n, fermion &p);
654  //@}
655 
656  /** \brief The defaut neutron
657 
658  By default this has a spin degeneracy of 2 and a mass of \ref
659  o2scl_mks::mass_neutron . Also the value of
660  <tt>part::non_interacting</tt> is set to <tt>false</tt>.
661  */
663 
664  /** \brief The defaut proton
665 
666  By default this has a spin degeneracy of 2 and a mass of \ref
667  o2scl_mks::mass_proton . Also the value of
668  <tt>part::non_interacting</tt> is set to <tt>false</tt>.
669  */
671 
672  /// \name Default solvers and derivative classes
673  //@{
674  /** \brief The default object for derivatives
675 
676  The value of deriv_gsl::h is set to \f$ 10^{-3} \f$ in
677  the eos_had_base constructor.
678  */
680 
681  /** \brief The second default object for derivatives
682 
683  The value of deriv_gsl::h is set to \f$ 10^{-3} \f$ in
684  the eos_had_base constructor.
685  */
687 
688  /** \brief The default solver
689 
690  Used by calc_e() to solve nuc_matter_p() (2 variables) and by
691  calc_p() to solve nuc_matter_e() (2 variables).
692  */
694 
695  /** \brief The default solver for calculating the saturation
696  density
697 
698  Used by fn0() (which is called by saturation()) to solve
699  saturation_matter_e() (1 variable).
700  */
702  //@}
703 
704  /// \name Other functions
705  //@{
706  /** \brief Calculate coefficients for \gradient \part of Hamiltonian
707 
708  \note This is still somewhat experimental.
709 
710  We want the \gradient \part of the Hamiltonian in the form
711  \f[
712  {\cal H}_{\mathrm{grad}} = \frac{1}{2} \sum_{i=n,p}
713  \sum_{j=n,p} Q_{ij}
714  \vec{\nabla} n_i \cdot \vec{\nabla} n_j
715  \f]
716 
717  The expression for the \gradient terms from \ref Pethick95 is
718  \f{eqnarray*}
719  {\cal H}_{\mathrm{grad}}&=&-\frac{1}{4}
720  \left(2 P_1 + P_{1;f}-P_{2;f}\right)
721  \nonumber \\
722  && +\frac{1}{2} \left( Q_1+Q_2 \right)
723  \left(n_n \nabla^2 n_n+n_p \nabla^2 n_p\right) \nonumber \\
724  && + \frac{1}{4}\left( Q_1-Q_2 \right)
725  \left[\left(\nabla n_n\right)^2+\left(\nabla n_p\right)^2
726  \right] \nonumber \\
727  && + \frac{1}{2} \frac{d Q_2}{d n}
728  \left( n_n \nabla n_n + n_p \nabla n_p \right) \cdot \nabla n
729  \f}
730  This can be rewritten
731  \f{eqnarray*}
732  {\cal H}_{\mathrm{grad}}&=&\frac{1}{2}\left(\nabla n\right)^2
733  \left[ \frac{3}{2} P_1+n \frac{d P_1}{d n}\right] \nonumber \\
734  && - \frac{3}{4} \left[ \left( \nabla n_n\right)^2 +
735  \left( \nabla n_p \right)^2 \right] \nonumber \\
736  && -\frac{1}{2} \left[ \right] \cdot \nabla n \frac{d Q_1}{d n}
737  \nonumber \\ && - \frac{1}{4} \left( \nabla n\right)^2 P_2
738  - \frac{1}{4} \left[ \left( \nabla n_n\right)^2 +
739  \left( \nabla n_p \right)^2 \right] Q_2
740  \f}
741  or
742  \f{eqnarray*}
743  {\cal H}_{\mathrm{grad}}&=&\frac{1}{4} \left( \nabla n\right)^2
744  \left[3 P_1 + 2 n \frac{d P_1}{d n}-P_2\right] \nonumber \\
745  && - \frac{1}{4} \left( 3 Q_1+Q_2 \right)
746  \left[ \left( \nabla n_n\right)^2 +
747  \left( \nabla n_p \right)^2 \right] \nonumber \\
748  && - \frac{1}{2} \frac{d Q_1}{d n}
749  \left[ n_n \nabla n_n + n_p \nabla n_p \right]
750  \cdot \nabla n
751  \f}
752  or
753  \f{eqnarray*}
754  {\cal H}_{\mathrm{grad}}&=&\frac{1}{4} \left( \nabla n\right)^2
755  \left[3 P_1 + 2 n \frac{d P_1}{d n}-P_2\right] \nonumber \\
756  && - \frac{1}{4} \left( 3 Q_1+Q_2 \right)
757  \left[ \left( \nabla n_n\right)^2 +
758  \left( \nabla n_p \right)^2 \right] \nonumber \\
759  && - \frac{1}{2} \frac{d Q_1}{d n}
760  \left[ n_n \left( \nabla n_n \right)^2 +
761  n_p \left( \nabla n_p \right)^2 + n \nabla n_n \cdot
762  \nabla n_p \right]
763  \f}
764 
765  Generally, for Skyrme-like interactions
766  \f{eqnarray*}
767  P_i &=& \frac{1}{4} t_i \left(1+\frac{1}{2} x_i \right) \nonumber \\
768  Q_i &=& \frac{1}{4} t_i \left(\frac{1}{2} + x_i \right) \, .
769  \f}
770  for \f$ i=1,2 \f$ .
771 
772  This function uses the assumption \f$ x_1=x_2=0 \f$ to
773  calculate \f$ t_1 \f$ and \f$ t_2 \f$ from the neutron
774  and proton effective masses assuming the Skyrme form. The
775  values of \f$ Q_{ij} \f$ and their derivatives are then computed.
776 
777  The functions set_n_and_p() and set_thermo() will be called by
778  gradient_qij(), to facilitate the use of the \c n, \c p, and
779  \c th parameters.
780 
781  */
782  void gradient_qij(fermion &n, fermion &p, thermo &th,
783  double &qnn, double &qnp, double &qpp,
784  double &dqnndnn, double &dqnndnp,
785  double &dqnpdnn, double &dqnpdnp,
786  double &dqppdnn, double &dqppdnp);
787 
788  /// Return string denoting type ("eos_had_base")
789  virtual const char *type() { return "eos_had_base"; }
790  //@}
791 
792 #ifndef DOXYGEN_INTERNAL
793 
794  protected:
795 
796  /// Compute t1 for gradient_qij().
797  double t1_fun(double barn);
798 
799  /// Compute t2 for gradient_qij().
800  double t2_fun(double barn);
801 
802  /// The EOS solver
804 
805  /// The solver to compute saturation properties
807 
808  /// The derivative object for saturation properties
810 
811  /// The second derivative object for saturation properties
813 
814  /// The neutron object
816 
817  /// The proton object
819 
820 #endif
821 
822  };
823 
824  /// A hadronic EOS based on a function of the densities [abstract base]
826  public:
827 
828  /** \brief Equation of state as a function of density
829  */
830  virtual int calc_e(fermion &n, fermion &p, thermo &th)=0;
831 
832  /** \brief Equation of state as a function of the chemical potentials
833  */
834  virtual int calc_p(fermion &n, fermion &p, thermo &th);
835 
836  };
837 
838  /** \brief A hadronic EOS based on a function of the chemical
839  potentials [abstract base]
840  */
842  public:
843 
844  /** \brief Equation of state as a function of the chemical potentials
845  */
846  virtual int calc_p(fermion &n, fermion &p, thermo &th)=0;
847 
848  /** \brief Equation of state as a function of density
849  */
850  virtual int calc_e(fermion &n, fermion &p, thermo &th);
851 
852  };
853 
854  /// A finite temperature hadronic EOS [abstract base]
856 
857 #ifndef DOXYGEN_INTERNAL
858 
859  protected:
860 
861  /// Fermion thermodynamics (default is \ref def_fet)
863 
864  /// Solve for nuclear matter at finite temperature given density
865  int nuc_matter_temp_e(size_t nv, const ubvector &x,
866  ubvector &y, double nn0, double np0, double T);
867 
868  /// Solve for nuclear matter at finite temperature given mu
869  int nuc_matter_temp_p(size_t nv, const ubvector &x,
870  ubvector &y, double mun0, double mup0, double T);
871 
872  /** \brief Solve for the liquid gas phase transition as
873  a function of the densities
874  */
875  int liqgas_dens_solve(size_t nv, const ubvector &x,
876  ubvector &y, fermion &n1, fermion &p1,
877  fermion &n2, fermion &p2, double T,
878  thermo &th1, thermo &th2);
879 
880  /** \brief Solve for the liquid-gas phase transition at fixed
881  baryon density and electron fraction
882  */
883  int liqgas_solve(size_t nv, const ubvector &x,
884  ubvector &y, fermion &n1, fermion &p1,
885  fermion &n2, fermion &p2, double nB0,
886  double Ye0, double T,
887  thermo &th1, thermo &th2);
888 
889  /** \brief Solve for the liquid-gas phase transition in
890  beta-equilibrium
891  */
892  int liqgas_beta_solve(size_t nv, const ubvector &x,
893  ubvector &y, fermion &n1, fermion &p1,
894  fermion &n2, fermion &p2,
895  double nB0, double T,
896  thermo &th1, thermo &th2, fermion &e);
897 
898  /** \brief Compute the entropy
899  */
900  double calc_entropy_delta(double delta, double nb, double T);
901 
902  /** \brief Compute the difference between the neutron and
903  proton chemical potentials
904  */
905  double calc_dmu_delta_T(double delta, double nb, double T);
906 
907 #endif
908 
909  public:
910 
912  fet=&def_fet;
913  }
914 
915  virtual ~eos_had_temp_base() {}
916 
917  /// \name Basic usage
918  //@{
919  /** \brief Equation of state as a function of density
920  */
921  virtual int calc_e(fermion &n, fermion &p, thermo &th)=0;
922 
923  /** \brief Equation of state as a function of densities at
924  finite temperature
925  */
926  virtual int calc_temp_e(fermion &n, fermion &p, double T,
927  thermo &th)=0;
928 
929  /** \brief Equation of state as a function of the chemical potentials
930  */
931  virtual int calc_p(fermion &n, fermion &p, thermo &th)=0;
932 
933  /** \brief Equation of state as a function of the chemical potentials
934  at finite temperature
935  */
936  virtual int calc_temp_p(fermion &n, fermion &p, double T,
937  thermo &th)=0;
938  //@}
939 
940  /// Computing finite-temperature integrals
941  //@{
942  /** \brief Set the object for computing finite-temperature fermions
943  (default is \ref def_fet)
944  */
946  fet=&f;
947  }
948 
949  /// Default fermion thermodynamics object
951  //@}
952 
953  /// \name Liquid-gas transition functions
954  //@{
955  /** \brief Compute liquid-gas phase transition densities using
956  \ref eos_had_temp_base::calc_temp_e() .
957 
958  At fixed baryon number density for \c n1, this determines the
959  baryon number densities for \c p1, \c n2, and \c p2 which give
960  chemical and mechanical equilibrium at a fixed temperature
961  \c T. The thermodynamic quantities assuming bulk matter for
962  each set is stored in \c th1 and \c th2.
963  */
964  virtual int calc_liqgas_dens_temp_e
965  (fermion &n1, fermion &p1, fermion &n2, fermion &p2,
966  double T, thermo &th1, thermo &th2);
967 
968  /** \brief Compute the liquid-gas phase transition using
969  \ref eos_had_temp_base::calc_temp_e() .
970 
971  At fixed baryon number density, \c nB, fixed electron
972  fraction, \c Ye, and fixed temperature, \c T, this function
973  determines the baryon number densities for \c n1, \c p1, \c
974  n2, and \c p2 which give chemical and mechanical equilibrium.
975  The thermodynamic quantities assuming bulk matter for each set
976  is stored in \c th1 and \c th2, and the volume fraction of
977  phase 1 is stored in \c chi.
978  */
979  virtual int calc_liqgas_temp_e
980  (fermion &n1, fermion &p1, fermion &n2, fermion &p2,
981  double nB, double Ye, double T, thermo &th1, thermo &th2,
982  double &chi);
983 
984  /** \brief Compute the liquid-gas phase transition in
985  beta-equilibrium using \ref eos_had_temp_base::calc_temp_e() .
986 
987  At fixed baryon number density, \c nB, and fixed temperature,
988  \c T, this function determines the baryon number densities for
989  \c n1, \c p1, \c n2, and \c p2 which give chemical and
990  mechanical equilibrium assuming beta-equilibrium with
991  electrons. The thermodynamic quantities assuming bulk matter
992  for each set is stored in \c th1 and \c th2, the electron
993  fraction is stored in \c Ye, and the volume fraction of phase
994  1 is stored in \c chi.
995  */
996  virtual int calc_liqgas_beta_temp_e
997  (fermion &n1, fermion &p1, fermion &n2, fermion &p2,
998  double nB, double T, thermo &th1, thermo &th2,
999  double &Ye, double &chi);
1000  //@}
1001 
1002  /// \name Functions related to the symmetry energy
1003  //@{
1004  /** \brief Compute the symmetry energy at finite temperature
1005  */
1006  virtual double fesym_T(double nb, double T, double delta=0.0);
1007 
1008  /** \brief Compute the symmetry entropy at finite temperature
1009  */
1010  virtual double fsyment_T(double nb, double T, double delta=0.0);
1011  //@}
1012 
1013  };
1014 
1015  /** \brief A hadronic EOS at finite temperature
1016  based on a function of the densities [abstract base]
1017 
1018  This class provides automatic computation of \ref calc_e() and
1019  \ref calc_temp_e() assuming that \ref calc_p() and \ref
1020  calc_temp_p() are specified.
1021  */
1023  public:
1024 
1025  /** \brief Equation of state as a function of density
1026  */
1027  virtual int calc_e(fermion &n, fermion &p, thermo &th)=0;
1028 
1029  /** \brief Equation of state as a function of densities at
1030  finite temperature
1031  */
1032  virtual int calc_temp_e(fermion &n, fermion &p, double T,
1033  thermo &th)=0;
1034 
1035  /** \brief Equation of state as a function of the chemical potentials
1036  */
1037  virtual int calc_p(fermion &n, fermion &p, thermo &th);
1038 
1039  /** \brief Equation of state as a function of the chemical potentials
1040  at finite temperature
1041  */
1042  virtual int calc_temp_p(fermion &n, fermion &p, double T,
1043  thermo &th);
1044 
1045  };
1046 
1047  /** \brief A hadronic EOS at finite temperature based on a function
1048  of the chemical potentials [abstract base]
1049 
1050  This class provides automatic computation of \ref calc_p() and
1051  \ref calc_temp_p() assuming that \ref calc_e() and \ref
1052  calc_temp_e() are specified.
1053  */
1055  public:
1056 
1057  /** \brief Equation of state as a function of the chemical potentials
1058  */
1059  virtual int calc_p(fermion &n, fermion &p, thermo &th)=0;
1060 
1061  /** \brief Equation of state as a function of the chemical potentials
1062  at finite temperature
1063  */
1064  virtual int calc_temp_p(fermion &n, fermion &p, double T,
1065  thermo &th)=0;
1066 
1067  /** \brief Equation of state as a function of density
1068  */
1069  virtual int calc_e(fermion &n, fermion &p, thermo &th);
1070 
1071  /** \brief Equation of state as a function of densities at
1072  finite temperature
1073  */
1074  virtual int calc_temp_e(fermion &n, fermion &p, double T,
1075  thermo &th);
1076  };
1077 
1078 #ifndef DOXYGEN_NO_O2NS
1079 }
1080 #endif
1081 
1082 #endif
1083 
root_cern def_sat_root
The default solver for calculating the saturation density.
Definition: eos_had_base.h:701
virtual double fesym_skew(double nb, double delta=0.0)
The skewness of the symmetry energy.
virtual void set_sat_deriv(deriv_base<> &de)
Set deriv_base object to use to find saturation properties.
virtual void set_fermion_eval_thermo(fermion_eval_thermo &f)
Computing finite-temperature integrals.
Definition: eos_had_base.h:945
virtual int calc_liqgas_beta_temp_e(fermion &n1, fermion &p1, fermion &n2, fermion &p2, double nB, double T, thermo &th1, thermo &th2, double &Ye, double &chi)
Compute the liquid-gas phase transition in beta-equilibrium using eos_had_temp_base::calc_temp_e() ...
int nuc_matter_temp_p(size_t nv, const ubvector &x, ubvector &y, double mun0, double mup0, double T)
Solve for nuclear matter at finite temperature given mu.
int liqgas_solve(size_t nv, const ubvector &x, ubvector &y, fermion &n1, fermion &p1, fermion &n2, fermion &p2, double nB0, double Ye0, double T, thermo &th1, thermo &th2)
Solve for the liquid-gas phase transition at fixed baryon density and electron fraction.
virtual double feta_prime(double nb)
The derivative of the strength parameter for quartic terms in the symmetry energy.
double calc_dmu_delta_T(double delta, double nb, double T)
Compute the difference between the neutron and proton chemical potentials.
int liqgas_beta_solve(size_t nv, const ubvector &x, ubvector &y, fermion &n1, fermion &p1, fermion &n2, fermion &p2, double nB0, double T, thermo &th1, thermo &th2, fermion &e)
Solve for the liquid-gas phase transition in beta-equilibrium.
fermion_eval_thermo * fet
Fermion thermodynamics (default is def_fet)
Definition: eos_had_base.h:862
Equation of state base class.
Definition: eos_base.h:39
virtual int calc_e(fermion &n, fermion &p, thermo &th)
Equation of state as a function of density.
double comp
Compression modulus.
Definition: eos_had_base.h:324
virtual double fkprime(double nb, double delta=0.0)
Calculate skewness of nuclear matter using calc_e()
deriv_gsl def_deriv
The default object for derivatives.
Definition: eos_had_base.h:679
virtual double f_effm_neut(double nb, double delta=0.0)
Neutron effective mass.
double t1_fun(double barn)
Compute t1 for gradient_qij().
virtual int calc_e(fermion &n, fermion &p, thermo &th)=0
Equation of state as a function of density.
void const_pf_derivs(double nb, double pf, double &dednb_pf, double &dPdnb_pf)
Compute derivatives at constant proton fraction.
virtual double fmsom(double nb, double delta=0.0)
Calculate reduced neutron effective mass using calc_e()
double calc_pressure_nb(double nb, double delta=0.0)
Compute the pressure as a function of baryon density at fixed isospin asymmetry.
mroot * eos_mroot
The EOS solver.
Definition: eos_had_base.h:803
virtual double fcomp(double nb, double delta=0.0)
Calculate the incompressibility in using calc_e()
virtual double f_effm_scalar(double nb, double delta=0.0)
Scalar effective mass.
virtual double fn0(double delta, double &leoa)
Calculate saturation density using calc_e()
virtual int calc_p(fermion &n, fermion &p, thermo &th)=0
Equation of state as a function of the chemical potentials.
virtual int calc_e(fermion &n, fermion &p, thermo &th)=0
Equation of state as a function of density.
virtual int calc_liqgas_dens_temp_e(fermion &n1, fermion &p1, fermion &n2, fermion &p2, double T, thermo &th1, thermo &th2)
Compute liquid-gas phase transition densities using eos_had_temp_base::calc_temp_e() ...
double esym
Symmetry energy.
Definition: eos_had_base.h:327
virtual double fesym_diff(double nb)
Calculate symmetry energy of matter as energy of neutron matter minus the energy of nuclear matter...
A hadronic EOS at finite temperature based on a function of the densities [abstract base]...
virtual int calc_temp_p(fermion &n, fermion &p, double T, thermo &th)
Equation of state as a function of the chemical potentials at finite temperature. ...
virtual int calc_liqgas_temp_e(fermion &n1, fermion &p1, fermion &n2, fermion &p2, double nB, double Ye, double T, thermo &th1, thermo &th2, double &chi)
Compute the liquid-gas phase transition using eos_had_temp_base::calc_temp_e() .
A finite temperature hadronic EOS [abstract base].
Definition: eos_had_base.h:855
virtual const char * type()
Return string denoting type ("eos_had_base")
Definition: eos_had_base.h:789
deriv_base * sat_deriv
The derivative object for saturation properties.
Definition: eos_had_base.h:809
virtual int calc_p(fermion &n, fermion &p, thermo &th)
Equation of state as a function of the chemical potentials.
virtual double f_effm_vector(double nb, double delta=0.0)
Vector effective mass.
double n0
Saturation density.
Definition: eos_had_base.h:330
double calc_press_over_den2(double nb, double delta=0.0)
Calculate pressure / baryon density squared in nuclear matter as a function of baryon density at fixe...
virtual int calc_e(fermion &n, fermion &p, thermo &th)
Equation of state as a function of density.
int nuc_matter_temp_e(size_t nv, const ubvector &x, ubvector &y, double nn0, double np0, double T)
Solve for nuclear matter at finite temperature given density.
root * sat_root
The solver to compute saturation properties.
Definition: eos_had_base.h:806
int liqgas_dens_solve(size_t nv, const ubvector &x, ubvector &y, fermion &n1, fermion &p1, fermion &n2, fermion &p2, double T, thermo &th1, thermo &th2)
Solve for the liquid gas phase transition as a function of the densities.
virtual int calc_p(fermion &n, fermion &p, thermo &th)=0
Equation of state as a function of the chemical potentials.
virtual void set_sat_root(root<> &mr)
Set class mroot object for use calculating saturation density.
A hadronic EOS at finite temperature based on a function of the chemical potentials [abstract base]...
void gradient_qij(fermion &n, fermion &p, thermo &th, double &qnn, double &qnp, double &qpp, double &dqnndnn, double &dqnndnp, double &dqnpdnn, double &dqnpdnp, double &dqppdnn, double &dqppdnp)
Calculate coefficients for gradient gradient part part of Hamiltonian.
virtual int calc_e(fermion &n, fermion &p, thermo &th)=0
Equation of state as a function of density.
double t2_fun(double barn)
Compute t2 for gradient_qij().
virtual int calc_p(fermion &n, fermion &p, thermo &th)=0
Equation of state as a function of the chemical potentials.
fermion * proton
The proton object.
Definition: eos_had_base.h:818
virtual double fesym_T(double nb, double T, double delta=0.0)
Compute the symmetry energy at finite temperature.
deriv_gsl def_deriv2
The second default object for derivatives.
Definition: eos_had_base.h:686
double calc_edensity_delta(double delta, double nb)
Calculate energy density as a function of the isospin asymmetry at fixed baryon density.
A hadronic EOS based on a function of the densities [abstract base].
Definition: eos_had_base.h:825
double calc_musum_delta(double delta, double nb)
Compute the sum of the neutron and proton chemical potentials as a function of the isospin asymmetry...
deriv_base * sat_deriv2
The second derivative object for saturation properties.
Definition: eos_had_base.h:812
int nuc_matter_e(size_t nv, const ubvector &x, ubvector &y, double mun0, double mup0)
Solve for the densities given the chemical potentials.
double calc_entropy_delta(double delta, double nb, double T)
Compute the entropy.
Hadronic equation of state [abstract base].
Definition: eos_had_base.h:310
A hadronic EOS based on a function of the chemical potentials [abstract base].
Definition: eos_had_base.h:841
virtual double fcomp_err(double nb, double delta, double &unc)
Compute the incompressibility and its uncertainty.
double calc_edensity_nb(double nb, double delta=0.0)
Compute the energy density as a function of baryon density at fixed isospin asymmetry.
virtual int calc_temp_p(fermion &n, fermion &p, double T, thermo &th)=0
Equation of state as a function of the chemical potentials at finite temperature. ...
virtual int calc_e(fermion &n, fermion &p, thermo &th)=0
Equation of state as a function of density.
virtual int calc_temp_e(fermion &n, fermion &p, double T, thermo &th)=0
Equation of state as a function of densities at finite temperature.
fermion def_proton
The defaut proton.
Definition: eos_had_base.h:670
virtual int calc_temp_e(fermion &n, fermion &p, double T, thermo &th)=0
Equation of state as a function of densities at finite temperature.
virtual double feta(double nb)
The strength parameter for quartic terms in the symmetry energy.
virtual double fesym(double nb, double delta=0.0)
Calculate symmetry energy of matter in using calc_dmu_delta() .
virtual int calc_p(fermion &n, fermion &p, thermo &th)=0
Equation of state as a function of the chemical potentials.
double kprime
Skewness.
Definition: eos_had_base.h:336
virtual double fesym_err(double nb, double delta, double &unc)
Calculate symmetry energy of matter and its uncertainty.
virtual double f_effm_prot(double nb, double delta=0.0)
Proton effective mass.
virtual double fesym_slope(double nb, double delta=0.0)
The symmetry energy slope parameter.
int nuc_matter_p(size_t nv, const ubvector &x, ubvector &y, double nn0, double np0)
Solve for the chemical potentials given the densities.
virtual int calc_temp_p(fermion &n, fermion &p, double T, thermo &th)=0
Equation of state as a function of the chemical potentials at finite temperature. ...
fermion * neutron
The neutron object.
Definition: eos_had_base.h:815
mroot_hybrids def_mroot
The default solver.
Definition: eos_had_base.h:693
virtual double fsyment_T(double nb, double T, double delta=0.0)
Compute the symmetry entropy at finite temperature.
virtual double feoa(double nb, double delta=0.0)
Calculate the energy per baryon in using calc_e()
double msom
Effective mass (neutron)
Definition: eos_had_base.h:333
double calc_dmu_delta(double delta, double nb)
Compute the difference between neutron and proton chemical potentials as a function of the isospin as...
virtual int calc_p(fermion &n, fermion &p, thermo &th)
Equation of state as a function of the chemical potentials.
virtual void saturation()
Calculates some of the EOS properties at the saturation density.
double eoa
Binding energy.
Definition: eos_had_base.h:318
fermion_eff def_fet
Default fermion thermodynamics object.
Definition: eos_had_base.h:950
virtual double fesym_curve(double nb, double delta=0.0)
The curvature of the symmetry energy.
virtual void set_sat_deriv2(deriv_base<> &de)
Set the second deriv_base object to use to find saturation properties.
virtual void set_mroot(mroot<> &mr)
Set class mroot object for use in calculating chemical potentials from densities. ...
virtual void set_n_and_p(fermion &n, fermion &p)
Set neutron and proton.
fermion def_neutron
The defaut neutron.
Definition: eos_had_base.h:662
virtual int calc_temp_e(fermion &n, fermion &p, double T, thermo &th)
Equation of state as a function of densities at finite temperature.

Documentation generated with Doxygen. Provided under the GNU Free Documentation License (see License Information).
Hosted at Get Object-oriented Scientific Computing
Lib at SourceForge.net. Fast, secure and Free Open Source software
downloads..