All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
eos_had_rmf.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_rmf.h
24  \brief File defining \ref o2scl::eos_had_rmf
25 */
26 #ifndef O2SCL_RMF_EOS_H
27 #define O2SCL_RMF_EOS_H
28 
29 #include <string>
30 #include <cmath>
31 #include <o2scl/lib_settings.h>
32 #include <o2scl/constants.h>
33 #include <o2scl/mm_funct.h>
34 
35 #include <o2scl/part.h>
36 #include <o2scl/eos_had_base.h>
37 #include <o2scl/fermion.h>
38 
39 #ifndef DOXYGEN_NO_O2NS
40 namespace o2scl {
41 #endif
42 
43  /** \brief Relativistic mean field theory EOS
44 
45  This class computes the properties of nucleonic matter using a
46  mean-field approximation to a field-theoretical model.
47 
48  Before sending neutrons and protons to these member functions,
49  the masses should be set to and the degeneracy factor should be
50  set to 2. Some models which can be loaded using
51  <tt>o2scl_hdf::rmf_load()</tt> expect that the neutron and
52  proton masses are set to the value stored in \ref mnuc.
53 
54  \note Since this EOS uses the effective masses and chemical
55  potentials in the \ref o2scl::part class, the values of
56  <tt>o2scl::part::non_interacting</tt> for neutrons and protons
57  are set to false in many of the functions.
58 
59  \note Matter at two different densities can have the same
60  chemical potentials, so the behavior of the function \ref
61  o2scl::eos_had_rmf::calc_temp_p() is ambiguous. This arises because
62  the field equations have more than one solution for a specified
63  chemical potential. Internally, \ref
64  o2scl::eos_had_rmf::calc_temp_p() either uses the initial guess
65  specified by a call to \ref o2scl::eos_had_rmf::set_fields(), or
66  uses hard-coded initial guess values typical for saturation
67  densities. In order to ensure that the user gets the desired
68  solution to the field equations, it may be necessary to specify
69  a sufficiently accurate initial guess. There is no ambiguity in
70  the behavior of \ref o2scl::eos_had_rmf::calc_eq_temp_p(), however.
71 
72  \note This class can fail to solve the meson field equations or
73  fail to solve for the nucleon densities. By default the error
74  handler is called when this happens. If \ref err_nonconv is
75  false, then functions which don't converge (which also return
76  <tt>int</tt>) will return a non-zero value. Note that the
77  solvers (in \ref def_sat_mroot and \ref
78  o2scl::eos_had_base::def_mroot) also has its own data member
79  indicating how to handle nonconvergence \ref
80  o2scl::mroot::err_nonconv which is separate.
81 
82  \comment
83  AWS, 11/17/13: It is not clear that this is entirely necessary
84  as almost all the CONV_ERR calls in eos_had_rmf.cpp are due to calls
85  to solvers. It could be that then err_nonconv can be removed and
86  all the eos_had_rmf functions just always directly return any
87  nonzero values they get from solvers. One nice thing about the
88  explicit CONV_ERR calls in eos_had_rmf.cpp is that it makes the code
89  easier to read. In any case err_nonconv should probably be
90  pushed up to eos_had_base.
91  \endcomment
92 
93  \hline
94  \b Background
95 
96  The full Lagragian can be written as a sum of several terms
97  \f[
98  {\cal L} = {\cal L}_{\mathrm{Dirac}} + {\cal L}_{\sigma} +
99  {\cal L}_{\omega} + {\cal L}_{\rho} + {\cal L}_{\mathrm{int}} \, .
100  \f]
101 
102  The part for the nucleon fields is
103  \f[
104  {\cal L}_{\mathrm{Dirac}} =
105  \bar{\Psi}_i \left[ i {{\partial}\!\!\!{\slash}} -
106  g_{\omega} {{\omega}\!\!\!{\slash}} - \frac{g_{\rho}}{2}
107  {{\vec{\rho}}\!\!\!{\slash}}
108  \vec{\tau} - M_i + g_{\sigma} \sigma -
109  e q_i A\!\!\!{\slash} \right] \Psi_i
110  \f]
111  where \f$ \Psi \f$ is the nucleon field and \f$ \sigma, \omega
112  \f$ and \f$ \rho \f$ are the meson fields. The meson masses
113  are \f$ m_{\sigma}, m_{\omega} \f$ and \f$ m_{\rho}
114  \f$ and meson-nucleon
115  couplings are \f$ g_{\sigma}, g_{\omega} \f$ and \f$ g_{\rho}
116  \f$ . The couplings \c cs, \c cw, and \c cr are related to \f$
117  g_{\sigma}, g_{\omega} \f$ and \f$ g_{\rho} \f$ by
118  \f[
119  c_{\sigma} = g_{\sigma}/m_{\sigma} \quad
120  c_{\omega} = g_{\omega}/m_{\omega} \quad \mathrm{and} \quad
121  c_{\rho} = g_{\rho}/m_{\rho}
122  \f]
123  The nucleon masses are in \f$ M_i \f$ and stored in
124  <tt>part::m</tt> and \f$ q_i \f$ just represents the charge (1
125  for protons and 0 for neutrons). The Coulomb field, \f$ A_{\mu}
126  \f$, is ignored in this class, but used in \ref
127  o2scl::nucleus_rmf.
128 
129  The part for the \f$ \sigma \f$ field is
130  \f[
131  {\cal L}_{\sigma} =
132  {\textstyle \frac{1}{2}} \left( \partial_{\mu} \sigma \right)^2
133  - {\textstyle \frac{1}{2}} m^2_{\sigma} \sigma^2
134  - \frac{b M}{3} \left( g_{\sigma} \sigma\right)^3
135  - \frac{c}{4} \left( g_{\sigma} \sigma\right)^4 \, .
136  \f]
137  where \f$ m_{\sigma} \f$ is the meson mass,
138  \f$ b \f$ and \f$ c \f$ are unitless couplings and
139  \f$ M \f$ is a dimensionful scale, ususally taken to be
140  939 MeV (which need not be equal to \f$ M_i \f$ above).
141  The coefficients \f$ b \f$ and \f$ c \f$ are related to the somewhat
142  standard \f$ \kappa \f$ and \f$ \lambda \f$ by:
143  \f[
144  \kappa=2 M b \quad \lambda=6 c;
145  \f]
146 
147  The part for the \f$ \omega \f$ field is
148  \f[
149  {\cal L}_{\omega} =
150  - {\textstyle \frac{1}{4}} f_{\mu \nu} f^{\mu \nu}
151  + {\textstyle \frac{1}{2}} m^2_{\omega}\omega^{\mu}\omega_{\mu}
152  + \frac{\zeta}{24} g_{\omega}^4 \left(\omega^\mu \omega_\mu\right)^2
153  \f]
154  where \f$ m_{\omega} \f$ is the meson mass.
155 
156  The part for the \f$ \rho \f$ field is
157  \f[
158  {\cal L}_{\rho} =
159  - {\textstyle \frac{1}{4}} \vec{B}_{\mu \nu} \cdot \vec{B}^{\mu \nu}
160  + {\textstyle \frac{1}{2}} m^2_{\rho} \vec{\rho}^{~\mu} \cdot
161  \vec{\rho}_{~\mu}
162  + \frac{\xi}{24} g_{\rho}^4 \left(\vec{\rho}^{~\mu}\right) \cdot
163  \vec{\rho}_{~\mu}
164  \f]
165 
166  Finally, additional meson interactions are
167  \f[
168  {\cal L}_{\mathrm{int}} =
169  g_{\rho}^2 f (\sigma, \omega) \vec{\rho}^{~\mu} \cdot
170  \vec{\rho}_{~\mu} \nonumber \\
171  \f]
172  The function \f$ f \f$ is the coefficient of \f$ g_r^2 \rho^2 \f$
173  \f$ f(\sigma,\omega) = b_1 \omega^2 + b_2 \omega^4 + b_3 \omega^6 +
174  a_1 \sigma + a_2 \sigma^2 + a_3 \sigma^3 + a_4 \sigma^4 +
175  a_5 \sigma^5 + a_6 \sigma^6 \f$
176  where the notation from \ref Horowitz01 is:
177  \f$ f(\sigma,\omega) = \lambda_4 g_s^2 \sigma^2 +
178  \lambda_v g_w^2 \omega^2 \f$
179  This implies \f$ b_1=\lambda_v g_w^2 \f$ and
180  \f$ a_2=\lambda_4 g_s^2 \f$
181 
182  The couplings, \c cs, \c cw, and \c cr all have units of \f$
183  \mathrm{fm} \f$, and the couplings \c b, \c c, \c zeta and \c xi are
184  unitless. The additional couplings from \ref Steiner05b, \f$ a_i
185  \f$ have units of \f$ \mathrm{fm}^{(i-2)} \f$ and the couplings
186  \f$ b_j \f$ have units of \f$ \mathrm{fm}^{(2j-2)} \f$ .
187 
188  When the variable \ref zm_mode is true, the effective mass is
189  fixed using the approach of \ref Zimanyi90 .
190 
191  The expressions for the energy densities are often simplified in
192  the literature using the field equations. These expressions are
193  not used in this code since they are only applicable in infinite
194  matter where the field equations hold, and are not suitable for
195  use in applications (such as to finite nuclei in \ref
196  o2scl::nucleus_rmf) where the spatial derivatives of the fields
197  are non-zero. Notice that in the proper expressions for the
198  energy density the similarity between terms in the pressure up
199  to a sign. This procedure allows one to verify the thermodynamic
200  identity even if the field equations are not solved and allows
201  the user to add gradient terms to the energy density and
202  pressure.
203 
204  See also \ref Muller96 .
205 
206  \hline
207  \b Field \b equations
208 
209  The field equations are:
210  \f[
211  0 = m_{\sigma}^2 \sigma - g_{\sigma} \left( n_{s n} + n_{s p} \right)
212  + b M g_{\sigma}^3 \sigma^2 + c g_{\sigma}^4 \sigma^3 -
213  g_{\rho}^2 \rho^2 \frac{\partial f}{\partial \sigma}
214  \f]
215  \f[
216  0 = m_{\omega}^2 \omega - g_{\omega} \left(n_n+n_p\right)
217  + \frac{\zeta}{6} g_{\omega}^4 \omega^3 + g_{\rho}^2 \rho^2
218  \frac{\partial f}{\partial \omega}
219  \f]
220  \f[
221  0 = m_{\rho}^2 \rho + \frac{1}{2} g_{\rho} \left(n_n-n_p\right)
222  + 2 g_{\rho}^2 \rho f + \frac{\xi}{6} g_{\rho}^4 \rho^3
223  \f]
224 
225  \hline
226  \b Saturation \b properties
227 
228  Defining
229  \f[
230  U(\sigma)=\frac{1}{2} m_\sigma^2\sigma^2+\frac{b M}{3}(g_\sigma\sigma)^3
231  +\frac{c}{4}(g_\sigma\sigma)^4\;,
232  \f]
233  the binding energy per particle in symmetric matter at equilibrium
234  is given by
235  \f[
236  \frac{E}{A} = \frac{1}{n_0} \left[U(\sigma_0)+
237  \frac{1}{2} m_\omega\omega_0^2+
238  \frac{\zeta}{8}(g_\omega\omega_0)^4+\frac{2}{\pi^2}
239  \int\limits_0^{k_F} dk k^2\sqrt{k^2+M^{*2}} \right]
240  \f]
241  where the Dirac
242  effective mass is \f$ M^{*}_i = M_i - g_{\sigma}\sigma_0 \f$ .
243  The compressibility is given by
244  \f[
245  K=9\frac{g_\omega^2}{m_\omega^2}n_0+3\frac{k_F^2}{E_F^*}
246  -9n_0\frac{M^{*2}}{E_F^{*2}}\left[\left(\frac{1}{g_\sigma^2}
247  \frac{\partial^2}{\partial\sigma_0^2}+\frac{3}{g_\sigma M^*}
248  \frac{\partial}{\partial\sigma_0}\right)
249  U(\sigma_0)-3\frac{n_0}{E_F^*}\right]^{-1}\;.
250  \f]
251  The symmetry energy of bulk matter is given by
252  \f[
253  E_{sym} = \frac{k_F^2}{6 E_F^{*}} + \frac{ n }
254  {8 \left(g_{\rho}^2/m_{\rho}^2 + 2 f (\sigma_0, \omega_0)
255  \right)} \, .
256  \f]
257 
258  In the above equations, the subscipt \f$ 0 \f$ denotes the mean
259  field values of \f$ \sigma \f$ and \f$ \omega \f$ . For the case
260  \f$ f=0 \f$ , the symmetry energy varies linearly with the density at
261  large densities. The function \f$ f \f$ permits variations in the
262  density dependence of the symmetry energy above nuclear matter
263  density.
264 
265  \hline
266 
267  \todo
268  - The functions fcomp_fields(), fkprime_fields(), and fesym_fields()
269  are not quite correct if the neutron and proton masses are different.
270  For this reason, they are currently unused by saturation().
271  - The fix_saturation() and calc_cr() functions use mnuc, and should
272  be modified to allow different neutron and proton masses.
273  - Check the formulas in the "Background" section
274  - Make sure that this class properly handles particles for which
275  inc_rest_mass is true/false
276  - The error handler is called sometimes when calc_e() is used
277  to compute pure neutron matter. This should be fixed.
278 
279  \future
280  - Finish putting the err_nonconv system into calc_p(),
281  calc_temp_e() and fix_saturation(), etc.
282  - It might be nice to remove explicit reference to the meson
283  masses in functions which only compute nuclear matter since they
284  are unnecessary. This might, however, demand redefining some of
285  the couplings.
286  - Fix calc_p() to be better at guessing
287  - The number of couplings is getting large, maybe new
288  organization is required.
289  - Overload eos_had_base::fcomp() with an exact version
290  - It would be nice to analytically compute the Jacobian
291  of the field equations for the solver
292 
293  */
295 
296  public:
297 
298  /// \name Other data members
299  //@{
300  /** \brief The number of separate calls to the solver
301  that the <tt>calc_e</tt> functions take (default 20)
302 
303  Values larger than about \f$ 10^4 \f$ are probably
304  not useful.
305  */
306  size_t calc_e_steps;
307 
308  /** \brief If true, solve for relative densities rather than
309  absolute densities (default false)
310 
311  Setting this to true makes \ref calc_temp_e() and \ref
312  calc_e() more accurate at low densities.
313  */
315 
316  /// Modifies method of calculating effective masses (default false)
317  bool zm_mode;
318 
319  /** \brief Verbosity parameter
320 
321  If this is greater than zero, then some functions report
322  on their progress.
323  - The function \ref saturation() reports progress towards
324  computing the properties of nuclear matter near saturation.
325  - The functions \ref calc_e() and \ref calc_temp_e() report
326  progress on solving for matter at a fixed density.
327  */
328  int verbose;
329 
330  /** \brief If true, throw exceptions when the function calc_e()
331  does not converge (default true)
332  */
334  //@}
335 
336  /// \name Masses
337  //@{
338  /** \brief The scale \f$ M \f$
339 
340  This need not be exactly equal to the neutron or proton mass,
341  but provides the scale for the coupling \c b.
342  */
343  double mnuc;
344 
345  /// \f$ \sigma \f$ mass (in \f$ \mathrm{fm}^{-1} \f$ )
346  double ms;
347 
348  /// \f$ \omega \f$ mass (in \f$ \mathrm{fm}^{-1} \f$ )
349  double mw;
350 
351  /// \f$ \rho \f$ mass (in \f$ \mathrm{fm}^{-1} \f$ )
352  double mr;
353 
354  //@}
355 
356  /// \name Standard couplings (including nonlinear sigma terms)
357  //@{
358  double cs, cw, cr, b, c;
359  //@}
360 
361  /// \name Quartic terms for omega and rho.
362  //@{
363  double zeta, xi;
364  //@}
365 
366  /// \name Additional isovector couplings
367  //@{
368  double a1, a2, a3, a4, a5, a6, b1, b2, b3;
369  //@}
370 
371  eos_had_rmf();
372 
373  /* \brief Load parameters for model named 'model'
374 
375  Presently accepted values from file rmfdata/model_list:
376  \include rmfdata/model_list
377 
378  In these files, the nucleon and meson masses are by default
379  specified in MeV, and cs, cw, and cr are given in fm. The
380  parameters b and c are both unitless. If the bool 'oakstyle' is
381  true, then load() assumes that gs, gw, and gr have been given
382  where gs and gw are as usual, but gr is a factor of two smaller
383  than usual, and g2 and g3 have been given where g2 = -b M gs^3
384  and g3 = c gs^4. If tokistyle is true, then it is additionally
385  assumed that c3 is given where c3=zeta/6*gw^4.
386 
387  If \c external is true, then model is the filename (relative
388  to the current directory) of the file containing the model
389  parameters. Otherwise, the model is assumed to be present in
390  the \o2 library data directory.
391  */
392  //int load(std::string model, bool external=false);
393 
394  /// \name Compute EOS
395  //@{
396  /** \brief Equation of state as a function of density
397 
398  Initial guesses for the chemical potentials are taken
399  from the user-given values. Initial guesses for the fields
400  can be set by set_fields(), or default values will be used.
401  After the call to calc_e(), the final values of the fields
402  can be accessed through get_fields().
403 
404  This is a little more robust than the standard version
405  in the parent \ref eos_had_base.
406 
407  \future Improve the operation of this function when the
408  proton density is zero.
409 
410  */
411  virtual int calc_e(fermion &ne, fermion &pr, thermo &lth);
412 
413  /** \brief Equation of state as a function of chemical potential
414 
415  Solves for the field equations automatically.
416 
417  \future It may be possible to make the solver for the
418  field equations more robust
419  */
420  virtual int calc_p(fermion &ne, fermion &pr, thermo &lth);
421 
422  /** \brief Equation of state and meson field equations
423  as a function of chemical potentials
424 
425  This calculates the pressure and energy density as a function of
426  \f$ \mu_n,\mu_p,\sigma,\omega,rho \f$ . When the field equations
427  have been solved, \c f1, \c f2, and \c f3 are all zero.
428 
429  The thermodynamic identity is satisfied even when the field
430  equations are not solved.
431 
432  \future Probably best to have f1, f2, and f3 scaled
433  in some sensible way, i.e. scaled to the fields?
434  */
435  virtual int calc_eq_p(fermion &neu, fermion &p, double sig,
436  double ome, double rho, double &f1,
437  double &f2, double &f3, thermo &th);
438 
439  /** \brief Equation of state and meson field equations as a
440  function of chemical potentials at finite temperature
441 
442  Analogous to \ref calc_eq_p() except at finite temperature.
443  */
444  virtual int calc_eq_temp_p(fermion &ne, fermion &pr, double temper,
445  double sig, double ome, double rho, double &f1,
446  double &f2, double &f3, thermo &th);
447 
448  /** \brief Equation of state as a function of chemical potential
449 
450  Solves for the field equations automatically.
451  */
452  virtual int calc_temp_p(fermion &ne, fermion &pr, double T,
453  thermo &lth);
454 
455  /** \brief Equation of state as a function of densities at
456  finite temperature
457  */
458  int calc_temp_e(fermion &ne, fermion &pr, double T,
459  thermo &lth);
460  //@}
461 
462  /// \name Saturation properties
463  //@{
464  /** \brief Calculate cs, cw, cr, b, and c from the saturation
465  properties
466 
467  Note that the meson masses and \ref mnuc must be specified
468  before calling this function.
469 
470  This function does not give correct results when bool zm_mode
471  is true.
472 
473  \c guess_cs, \c guess_cw, \c guess_b, and \c guess_c are
474  initial guesses for \c cs, \c cw, \c b, and \c c respectively.
475 
476  \todo
477  - Fix this for zm_mode=true
478  - Ensure solver is more robust
479 
480  */
481  int fix_saturation(double guess_cs=4.0, double guess_cw=3.0,
482  double guess_b=0.001, double guess_c=-0.001);
483 
484  /** \brief Calculate properties of nuclear matter at the
485  saturation density
486 
487  This function first constructs an initial guess, increasing
488  the chemical potentials if required to ensure the neutron and
489  proton densities are finite, and then uses \ref
490  eos_had_rmf::sat_mroot to solve the field equations and ensure
491  that the neutron and proton densities are equal and the
492  pressure is zero. The quantities \ref eos_had_base::n0, \ref
493  eos_had_base::eoa, and \ref eos_had_base::msom can be computed
494  directly, and the compressibility, the skewness, and the
495  symmetry energy are computed using the functions
496  fkprime_fields() and fesym_fields(). This function overrides
497  the generic version in \ref eos_had_base.
498 
499  If \ref verbose is greater than zero, then then this function
500  reports details on the initial iterations to get the initial
501  guess for the solver.
502  */
503  virtual void saturation();
504 
505  /** \brief Calculate symmetry energy assuming the field
506  equations have already been solved
507 
508  This may only work at saturation density and may assume
509  equal neutron and proton masses.
510  */
511  double fesym_fields(double sig, double ome, double nb);
512 
513  /** \brief Calculate the compressibility assuming the field
514  equations have already been solved
515 
516  This may only work at saturation density and may assume
517  equal neutron and proton masses.
518  */
519  double fcomp_fields(double sig, double ome, double nb);
520 
521  /** \brief Calculate compressibilty and \c kprime assuming the field
522  equations have already been solved
523 
524  This may only work at saturation density and may assume
525  equal neutron and proton masses.
526 
527  \todo This function, \ref o2scl::eos_had_rmf::fkprime_fields() is
528  currently untested.
529  */
530  void fkprime_fields(double sig, double ome, double nb,
531  double &k, double &kprime);
532  //@}
533 
534  /// \name Fields and field equations
535  //@{
536  /** \brief A function for solving the field equations
537 
538  The values <tt>x[0], x[1]</tt>, and <tt>x[2]</tt> should be
539  set to \f$ \sigma, \omega \f$ , and \f$ \rho \f$ on input (in
540  \f$ \mathrm{fm}^{-1} \f$ ) and on exit, <tt>y[0], y[1]</tt>
541  and <tt>y[2]</tt> contain the field equations and are zero
542  when the field equations have been solved.
543  */
544  int field_eqs(size_t nv, const ubvector &x, ubvector &y);
545 
546  /** \brief A function for solving the field equations at finite
547  temperature
548 
549  The values <tt>x[0], x[1]</tt>, and <tt>x[2]</tt> should be
550  set to \f$ \sigma, \omega \f$ , and \f$ \rho \f$ on input (in
551  \f$ \mathrm{fm}^{-1} \f$ ) and on exit, <tt>y[0], y[1]</tt>
552  and <tt>y[2]</tt> contain the field equations and are zero
553  when the field equations have been solved.
554  */
555  int field_eqsT(size_t nv, const ubvector &x, ubvector &y);
556 
557  /** \brief Set a guess for the fields for the next call to calc_e(),
558  calc_p(), or saturation()
559  */
560  virtual int set_fields(double sig, double ome, double lrho) {
561  sigma=sig;
562  omega=ome;
563  rho=lrho;
564  guess_set=true;
565  return 0;
566  }
567 
568  /** \brief Return the most recent values of the meson fields
569 
570  This returns the most recent values of the meson fields set by
571  a call to \ref saturation(), \ref calc_e(), or
572  \ref calc_p(fermion &, fermion &, thermo &).
573  */
574  int get_fields(double &sig, double &ome, double &lrho) {
575  sig=sigma;
576  ome=omega;
577  lrho=rho;
578  return 0;
579  }
580  //@}
581 
582  /// Return string denoting type ("eos_had_rmf")
583  virtual const char *type() { return "eos_had_rmf"; }
584 
585  /// \name Solver
586  //@{
587  /** \brief Set class mroot object for use calculating saturation density
588  */
590  sat_mroot=&mrx;
591  return 0;
592  }
593 
594  /** \brief The default solver for calculating the saturation
595  density
596 
597  Used by fn0() (which is called by saturation()) to solve
598  saturation_matter_e() (1 variable).
599  */
601  //@}
602 
603  /// \name Functions dealing with naturalness
604  //@{
605  /** \brief Set the coefficients of a eos_had_rmf object to their
606  limits from naturalness
607 
608  As given in \ref Muller96 .
609 
610  The definition of the vector-isovector field and coupling
611  matches what is done here. Compare the Lagrangian above
612  with Eq. 10 from the reference.
613 
614  The following couplings should all be of the same
615  size:
616  \f[
617  \frac{1}{2 c_s^2 M^2}, \frac{1}{2 c_v^2 M^2}
618  \frac{1}{8 c_{\rho}^2 M^2},~\mathrm{and}~\frac{
619  \bar{a}_{ijk} M^{i+2 j+2 k-4}}{2^{2 k}}
620  \f]
621  which are equivalent to
622  \f[
623  \frac{m_s^2}{2 g_s^2 M^2}, \frac{m_v^2}{2 g_v^2 M^2}
624  \frac{m_{\rho}^2}{8 g_{\rho}^2 M^2},~\mathrm{and}~\frac{
625  a_{ijk} M^{i+2 j+2 k-4}}{g_s^i g_v^{2 j}
626  g_{\rho}^{2 k} 2^{2 k}}
627  \f]
628 
629  The connection the \f$ a_{ijk} \f$ 's and the coefficients
630  that are used here is
631  \f{eqnarray*}
632  \frac{b M}{3} g_{\sigma}^3 \sigma^3 &=& a_{300}~\sigma^3
633  \nonumber \\
634  \frac{c}{4} g_{\sigma}^4 \sigma^4 &=& a_{400}~\sigma^4
635  \nonumber \\
636  \frac{\zeta}{24} g_{\omega}^4 \omega^4 &=& a_{020}~\omega^4
637  \nonumber \\
638  \frac{\xi}{24} g_{\rho}^4 \rho^4 &=& a_{002}~\rho^4
639  \nonumber \\
640  b_1 g_{\rho}^2 \omega^2 \rho^2 &=& a_{011}~\omega^2 \rho^2
641  \nonumber \\
642  b_2 g_{\rho}^2 \omega^4 \rho^2 &=& a_{021}~\omega^4 \rho^2
643  \nonumber \\
644  b_3 g_{\rho}^2 \omega^6 \rho^2 &=& a_{031}~\omega^6 \rho^2
645  \nonumber \\
646  a_1 g_{\rho}^2 \sigma^1 \rho^2 &=& a_{101}~\sigma^1 \rho^2
647  \nonumber \\
648  a_2 g_{\rho}^2 \sigma^2 \rho^2 &=& a_{201}~\sigma^2 \rho^2
649  \nonumber \\
650  a_3 g_{\rho}^2 \sigma^3 \rho^2 &=& a_{301}~\sigma^3 \rho^2
651  \nonumber \\
652  a_4 g_{\rho}^2 \sigma^4 \rho^2 &=& a_{401}~\sigma^4 \rho^2
653  \nonumber \\
654  a_5 g_{\rho}^2 \sigma^5 \rho^2 &=& a_{501}~\sigma^5 \rho^2
655  \nonumber \\
656  a_6 g_{\rho}^2 \sigma^6 \rho^2 &=& a_{601}~\sigma^6 \rho^2
657  \nonumber
658  \f}
659 
660  Note that Muller and Serot use the notation
661  \f[
662  \frac{\bar{\kappa} g_s^3 }{2} = \frac{\kappa}{2} = b M
663  g_s^3 \qquad \mathrm{and} \qquad
664  \frac{\bar{\lambda} g_s^4}{6} = \frac{\lambda}{6}
665  = c g_s^4
666  \f]
667  which differs slightly from the "standard" notation above.
668 
669  We need to compare the values of
670  \f{eqnarray*}
671  &\frac{m_s^2}{2 g_s^2 M^2}, \frac{m_v^2}{2 g_v^2 M^2}
672  \frac{m_{\rho}^2}{8 g_{\rho}^2 M^2},\frac{b}{3},
673  \frac{c}{4}
674  &
675  \nonumber \\
676  &\frac{\zeta}{24}, \frac{\xi}{384},
677  \frac{b_1}{4 g_{\omega}^2},
678  \frac{b_2 M^2}{4 g_{\omega}^4},
679  \frac{b_3 M^4}{4 g_{\omega}^6},
680  \frac{a_1}{4 g_{\sigma} M},&
681  \nonumber \\
682  &\frac{a_2}{4 g_{\sigma}^2},
683  \frac{a_3 M}{4 g_{\sigma}^3},
684  \frac{a_4 M^2}{4 g_{\sigma}^4},
685  \frac{a_5 M^3}{4 g_{\sigma}^5},~\mathrm{and}~\frac{a_6 M^4}
686  {4 g_{\sigma}^6}\, .&
687  \f}
688 
689  These values are stored in the variables cs, cw, cr, b, c,
690  zeta, xi, b1, etc. in the specified \ref eos_had_rmf object. All
691  of the numbers should be around 0.001 or 0.002.
692 
693  For the scale \f$ M \f$, \ref mnuc is used.
694 
695  \todo I may have ignored some signs in the above, which are
696  unimportant for this application, but it would be good to fix
697  them for posterity.
698 
699  */
701 
702  double gs=cs*ms;
703  double gw=cw*mw;
704  double gr=cr*mr;
705 
706  re.cs=0.5/cs/cs/mnuc/mnuc;
707  re.cw=0.5/cw/cw/mnuc/mnuc;
708  re.cr=0.125/cr/cr/mnuc/mnuc;
709  re.b=b/3.0;
710  re.c=c/4.0;
711 
712  re.zeta=zeta/24.0;
713  re.xi=xi/384.0;
714 
715  re.b1=b1/gw/gw/4.0;
716  re.b2=b2/pow(gw,4.0)/4.0*mnuc*mnuc;
717  re.b3=b3/pow(gw,6.0)/4.0*pow(mnuc,4.0);
718 
719  re.a1=a1/gs/4.0/mnuc;
720  re.a2=a2/pow(gs,2.0)/4.0;
721  re.a3=a3/pow(gs,3.0)/4.0*mnuc;
722  re.a4=a4/pow(gs,4.0)/4.0*mnuc*mnuc;
723  re.a5=a5/pow(gs,5.0)/4.0*pow(mnuc,3.0);
724  re.a6=a6/pow(gs,6.0)/4.0*pow(mnuc,4.0);
725 
726  return;
727  }
728 
729  /** \brief Provide the maximum values of the couplings assuming
730  a limit on naturalness
731 
732  The limits for the couplings are function of the nucleon and
733  meson masses, except for the limits on \c b, \c c, \c zeta,
734  and \c xi which are independent of the masses because of the
735  way that these four couplings are defined.
736  */
737  void naturalness_limits(double value, eos_had_rmf &re) {
738 
739  double gs=cs*ms;
740  double gw=cw*mw;
741  double gr=cr*mr;
742 
743  re.cs=value*2.0*mnuc*mnuc;
744  re.cw=value*2.0*mnuc*mnuc;
745  re.cr=value*8.0*mnuc*mnuc;
746  re.b=value*3.0;
747  re.c=value*4.0;
748 
749  re.zeta=value*24.0;
750  re.xi=value*384.0;
751 
752  re.b1=value*gw*gw*4.0;
753  re.b2=value*pow(gw,4.0)*4.0/mnuc/mnuc;
754  re.b3=value*pow(gw,6.0)*4.0/pow(mnuc,4.0);
755 
756  re.a1=value*gs*4.0*mnuc;
757  re.a2=value*pow(gs,2.0)*4.0;
758  re.a3=value*pow(gs,3.0)*4.0/mnuc;
759  re.a4=value*pow(gs,4.0)*4.0/mnuc/mnuc;
760  re.a5=value*pow(gs,5.0)*4.0/pow(mnuc,3.0);
761  re.a6=value*pow(gs,6.0)*4.0/pow(mnuc,4.0);
762 
763  return;
764  }
765  //@}
766 
767 #ifndef DOXYGEN_INTERNAL
768 
769  protected:
770 
771  /** \brief Temporary baryon density
772  */
773  double n_baryon;
774 
775  /** \brief Temporary charge density
776 
777  \future Should use eos_had_base::proton_frac instead?
778  */
779  double n_charge;
780 
781  /// \name The meson fields
782  //@{
783  double sigma, omega, rho;
784  //@}
785 
786  /// Temperature for solving field equations at finite temperature
787  double fe_temp;
788 
789  /// For calc_e(), if true, then solve for neutron matter
791 
792  /// For calc_e(), if true, then solve for proton matter
794 
795  /// True if a guess for the fields has been given
796  bool guess_set;
797 
798  /// The solver to compute saturation properties
800 
801  /// The function for fix_saturation()
802  int fix_saturation_fun(size_t nv, const ubvector &x, ubvector &y);
803 
804  /// Compute matter at zero pressure (for saturation())
805  virtual int zero_pressure(size_t nv, const ubvector &ex,
806  ubvector &ey);
807 
808  /// The function for calc_e()
809  virtual int calc_e_solve_fun(size_t nv, const ubvector &ex,
810  ubvector &ey);
811 
812  /// The function for calc_temp_e()
813  virtual int calc_temp_e_solve_fun(size_t nv, const ubvector &ex,
814  ubvector &ey);
815 
816  /** \brief Calculate the \c cr coupling given \c sig and \c ome
817  at the density 'nb'.
818 
819  Used by fix_saturation().
820  */
821  int calc_cr(double sig, double ome, double nb);
822 
823  /// Temperature storage for calc_temp_e()
824  double ce_temp;
825 
826 #endif
827 
828  };
829 
830 #ifndef DOXYGEN_NO_O2NS
831 }
832 #endif
833 
834 #endif
virtual int calc_eq_temp_p(fermion &ne, fermion &pr, double temper, double sig, double ome, double rho, double &f1, double &f2, double &f3, thermo &th)
Equation of state and meson field equations as a function of chemical potentials at finite temperatur...
virtual int calc_p(fermion &ne, fermion &pr, thermo &lth)
Equation of state as a function of chemical potential.
virtual int set_sat_mroot(mroot< mm_funct11, ubvector, jac_funct11 > &mrx)
Set class mroot object for use calculating saturation density.
Definition: eos_had_rmf.h:589
double ms
mass (in )
Definition: eos_had_rmf.h:346
void check_naturalness(eos_had_rmf &re)
Set the coefficients of a eos_had_rmf object to their limits from naturalness.
Definition: eos_had_rmf.h:700
double mnuc
The scale .
Definition: eos_had_rmf.h:343
bool guess_set
True if a guess for the fields has been given.
Definition: eos_had_rmf.h:796
mroot_hybrids def_sat_mroot
The default solver for calculating the saturation density.
Definition: eos_had_rmf.h:600
virtual int set_fields(double sig, double ome, double lrho)
Set a guess for the fields for the next call to calc_e(), calc_p(), or saturation() ...
Definition: eos_had_rmf.h:560
bool ce_prot_matter
For calc_e(), if true, then solve for proton matter.
Definition: eos_had_rmf.h:793
double fesym_fields(double sig, double ome, double nb)
Calculate symmetry energy assuming the field equations have already been solved.
virtual int calc_eq_p(fermion &neu, fermion &p, double sig, double ome, double rho, double &f1, double &f2, double &f3, thermo &th)
Equation of state and meson field equations as a function of chemical potentials. ...
double mr
mass (in )
Definition: eos_had_rmf.h:352
double fe_temp
Temperature for solving field equations at finite temperature.
Definition: eos_had_rmf.h:787
bool zm_mode
Modifies method of calculating effective masses (default false)
Definition: eos_had_rmf.h:317
double n_baryon
Temporary baryon density.
Definition: eos_had_rmf.h:773
Relativistic mean field theory EOS.
Definition: eos_had_rmf.h:294
A hadronic EOS at finite temperature based on a function of the chemical potentials [abstract base]...
size_t calc_e_steps
The number of separate calls to the solver that the calc_e functions take (default 20) ...
Definition: eos_had_rmf.h:306
bool ce_neut_matter
For calc_e(), if true, then solve for neutron matter.
Definition: eos_had_rmf.h:790
bool calc_e_relative
If true, solve for relative densities rather than absolute densities (default false) ...
Definition: eos_had_rmf.h:314
double mw
mass (in )
Definition: eos_had_rmf.h:349
virtual int calc_e(fermion &ne, fermion &pr, thermo &lth)
Equation of state as a function of density.
int fix_saturation(double guess_cs=4.0, double guess_cw=3.0, double guess_b=0.001, double guess_c=-0.001)
Calculate cs, cw, cr, b, and c from the saturation properties.
void fkprime_fields(double sig, double ome, double nb, double &k, double &kprime)
Calculate compressibilty and kprime assuming the field equations have already been solved...
virtual int zero_pressure(size_t nv, const ubvector &ex, ubvector &ey)
Compute matter at zero pressure (for saturation())
virtual void saturation()
Calculate properties of nuclear matter at the saturation density.
int calc_temp_e(fermion &ne, fermion &pr, double T, thermo &lth)
Equation of state as a function of densities at finite temperature.
virtual int calc_temp_e_solve_fun(size_t nv, const ubvector &ex, ubvector &ey)
The function for calc_temp_e()
double ce_temp
Temperature storage for calc_temp_e()
Definition: eos_had_rmf.h:824
virtual int calc_temp_p(fermion &ne, fermion &pr, double T, thermo &lth)
Equation of state as a function of chemical potential.
virtual int calc_e_solve_fun(size_t nv, const ubvector &ex, ubvector &ey)
The function for calc_e()
double kprime
Skewness.
Definition: eos_had_base.h:336
bool err_nonconv
If true, throw exceptions when the function calc_e() does not converge (default true) ...
Definition: eos_had_rmf.h:333
int calc_cr(double sig, double ome, double nb)
Calculate the cr coupling given sig and ome at the density 'nb'.
mroot< mm_funct11, ubvector, jac_funct11 > * sat_mroot
The solver to compute saturation properties.
Definition: eos_had_rmf.h:799
double fcomp_fields(double sig, double ome, double nb)
Calculate the compressibility assuming the field equations have already been solved.
int field_eqsT(size_t nv, const ubvector &x, ubvector &y)
A function for solving the field equations at finite temperature.
int field_eqs(size_t nv, const ubvector &x, ubvector &y)
A function for solving the field equations.
int fix_saturation_fun(size_t nv, const ubvector &x, ubvector &y)
The function for fix_saturation()
virtual const char * type()
Return string denoting type ("eos_had_rmf")
Definition: eos_had_rmf.h:583
double n_charge
Temporary charge density.
Definition: eos_had_rmf.h:779
void naturalness_limits(double value, eos_had_rmf &re)
Provide the maximum values of the couplings assuming a limit on naturalness.
Definition: eos_had_rmf.h:737
int get_fields(double &sig, double &ome, double &lrho)
Return the most recent values of the meson fields.
Definition: eos_had_rmf.h:574
int verbose
Verbosity parameter.
Definition: eos_had_rmf.h:328

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