00001 /* 00002 ------------------------------------------------------------------- 00003 00004 Copyright (C) 2006, 2007, 2008, 2009, Andrew W. Steiner 00005 00006 This file is part of O2scl. 00007 00008 O2scl is free software; you can redistribute it and/or modify 00009 it under the terms of the GNU General Public License as published by 00010 the Free Software Foundation; either version 3 of the License, or 00011 (at your option) any later version. 00012 00013 O2scl is distributed in the hope that it will be useful, 00014 but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 GNU General Public License for more details. 00017 00018 You should have received a copy of the GNU General Public License 00019 along with O2scl. If not, see <http://www.gnu.org/licenses/>. 00020 00021 ------------------------------------------------------------------- 00022 */ 00023 00024 #ifndef O2SCL_RMF_EOS_H 00025 #define O2SCL_RMF_EOS_H 00026 00027 #include <string> 00028 #include <cmath> 00029 #include <o2scl/lib_settings.h> 00030 #include <o2scl/constants.h> 00031 #include <o2scl/collection.h> 00032 #include <o2scl/part.h> 00033 #include <o2scl/hadronic_eos.h> 00034 #include <o2scl/fermion.h> 00035 #include <o2scl/mm_funct.h> 00036 00037 #ifndef DOXYGENP 00038 namespace o2scl { 00039 #endif 00040 00041 /** 00042 \brief Relativistic mean field theory EOS 00043 00044 Before sending neutrons and protons to these member functions, 00045 the masses should be set to their vacuum values and the 00046 degeneracy factor should be 2. If an internal model is used 00047 (using load()), then the neutron and proton masses should be set 00048 to \ref mnuc. 00049 00050 It is important to point out that expressions for the energy 00051 densities are often simplified in the literature using the field 00052 equations. These expressions are not used in this code since 00053 they are only applicable in infinite matter where the field 00054 equations hold, and are not suitable for use in applications 00055 (such as to finite nuclei) where the spatial derivatives of the 00056 fields are non-zero. Notice that in the proper expressions for 00057 the energy density the similarity between terms in the pressure 00058 up to a sign. This procedure allows one to verify the 00059 thermodynamic identity even if the field equations are not 00060 solved and allows the user to add gradient terms to the energy 00061 density and pressure. 00062 00063 \note Since this EOS uses the effective masses and chemical 00064 potentials in the fermion class, the values of 00065 part::non_interacting for neutrons and protons are set to false 00066 in many of the functions. 00067 00068 \todo 00069 - The number of couplings is getting large, maybe new 00070 organization is required. 00071 - Check the formulas in the "Background" section 00072 - Overload hadronic_eos::fcomp() with an exact version 00073 - Fix calc_p() to be better at guessing 00074 - There are two calc_e() functions that solve. One is specially 00075 designed to work without a good initial guess. Possibly the 00076 other calc_e() function should be similarly designed? 00077 - Make sure that this class properly handles particles for which 00078 inc_rest_mass is true/false 00079 - It might be nice to remove explicit reference to the meson 00080 masses in functions which only compute nuclear matter since they 00081 are unnecessary. This might, however, demand redefining some of 00082 the couplings. 00083 - The error handler is called sometimes when calc_e() is used 00084 to compute pure neutron matter. This should be fixed. 00085 00086 \hline 00087 00088 \b Background 00089 00090 The full Lagragian is: 00091 00092 \f[ 00093 {\cal L} = {\cal L}_{Dirac} + {\cal L}_{\sigma} + 00094 {\cal L}_{\omega} + {\cal L}_{\rho} 00095 \f] 00096 00097 \f{eqnarray*} 00098 {\cal L}_{Dirac} &=& 00099 \bar{\Psi} \left[ i {{\partial}\!\!\!{\slash}} - 00100 g_{\omega} {{\omega}\!\!\!{\slash}} - \frac{g_{\rho}}{2} 00101 {{\vec{\rho}}\!\!\!{\slash}} 00102 \vec{\tau} - M + g_{\sigma} \sigma - \frac{e}{2} 00103 \left( 1 + \tau_3 \right) A_{\mu} \right] \Psi \nonumber \\ 00104 {\cal L}_{\sigma} &=& 00105 {\textstyle \frac{1}{2}} \left( \partial_{\mu} \sigma \right)^2 00106 - {\textstyle \frac{1}{2}} m^2_{\sigma} \sigma^2 00107 - \frac{b M}{3} \left( g_{\sigma} \sigma\right)^3 00108 - \frac{c}{4} \left( g_{\sigma} \sigma\right)^4 \nonumber \\ 00109 {\cal L}_{\omega} &=& 00110 - {\textstyle \frac{1}{4}} f_{\mu \nu} f^{\mu \nu} 00111 + {\textstyle \frac{1}{2}} m^2_{\omega}\omega^{\mu}\omega_{\mu} 00112 + \frac{\zeta}{24} g_{\omega}^4 \left(\omega^\mu \omega_\mu\right)^2 00113 \nonumber \\ 00114 {\cal L}_{\rho} &=& 00115 - {\textstyle \frac{1}{4}} \vec{B}_{\mu \nu} \cdot \vec{B}^{\mu \nu} 00116 + {\textstyle \frac{1}{2}} m^2_{\rho} \vec{\rho}^{~\mu} \cdot 00117 \vec{\rho}_{~\mu} 00118 + \frac{\xi}{24} g_{\rho}^4 \left(\vec{\rho}^{~\mu}\right) \cdot 00119 \vec{\rho}_{~\mu} 00120 + g_{\rho}^2 f (\sigma, \omega) \vec{\rho}^{~\mu} \cdot 00121 \vec{\rho}_{~\mu} \nonumber \\ 00122 \f} 00123 00124 The coefficients \f$ b \f$ and \f$ c \f$ are related to the somewhat 00125 standard \f$ \kappa \f$ and \f$ \lambda \f$ by: 00126 00127 \f[ 00128 \kappa=2 M b \quad \lambda=6 c; 00129 \f] 00130 00131 The function \f$ f \f$ is the coefficient of \f$ g_r^2 \rho^2 \f$ 00132 00133 \f$ f(\sigma,\omega) = b_1 \omega^2 + b_2 \omega^4 + b_3 \omega^6 + 00134 a_1 \sigma + a_2 \sigma^2 + a_3 \sigma^3 + a_4 \sigma^4 + 00135 a_5 \sigma^5 + a_6 \sigma^6 \f$ 00136 00137 where the notation from \ref Horowitz01 is: 00138 00139 \f$ f(\sigma,\omega) = \lambda_4 g_s^2 \sigma^2 + 00140 \lambda_v g_w^2 \omega^2 \f$ 00141 00142 This implies \f$ b_1=\lambda_v g_w^2 \f$ and 00143 \f$ a_2=\lambda_4 g_s^2 \f$ 00144 00145 The field equations are: 00146 00147 \f[ 00148 0 = m_{\sigma}^2 \sigma - g_{\sigma} \left( n_{s n} + n_{s p} \right) 00149 + b M g_{\sigma}^3 \sigma^2 + c g_{\sigma}^4 \sigma^3 - 00150 g_{\rho}^2 \rho^2 \frac{\partial f}{\partial \sigma} 00151 \f] 00152 00153 \f[ 00154 0 = m_{\omega}^2 \omega - g_{\omega} \left(n_n+n_p\right) 00155 + \frac{\zeta}{6} g_{\omega}^4 \omega^3 g_{\rho}^2 \rho^2 00156 \frac{\partial f}{\partial \omega} 00157 \f] 00158 00159 \f[ 00160 0 = m_{\rho}^2 \rho + \frac{1}{2} g_{\rho} \left(n_n-n_p\right) 00161 + 2 g_{\rho}^2 \rho f + \frac{\xi}{6} g_{\rho}^4 \rho^3 00162 \f] 00163 00164 When the variable zm_mode is true, the effective mass is fixed using 00165 the approach of \ref Zimanyi90 . 00166 00167 Defining 00168 00169 \f[ 00170 U(\sigma)=\frac{1}{2} m_\sigma^2\sigma^2+\frac{b M}{3}(g_\sigma\sigma)^3 00171 +\frac{c}{4}(g_\sigma\sigma)^4\;, 00172 \f] 00173 00174 the binding energy per particle in symmetric matter at equilibrium 00175 is given by 00176 00177 \f[ 00178 \frac{E}{A} = \frac{1}{n_0} \left[U(\sigma_0)+ 00179 \frac{1}{2} m_\omega\omega_0^2+ 00180 \frac{\zeta}{8}(g_\omega\omega_0)^4+\frac{2}{\pi^2} 00181 \int\limits_0^{k_F} dk k^2\sqrt{k^2+M^{*2}} \right]\;. 00182 \f] 00183 00184 where the Dirac 00185 effective mass is \f$ M^{*} = M - g_{\sigma}\sigma_0 \f$ . 00186 The compressibility is given by 00187 00188 \f[ 00189 K=9\frac{g_\omega^2}{m_\omega^2}n_0+3\frac{k_F^2}{E_F^*} 00190 -9n_0\frac{M^{*2}}{E_F^{*2}}\left[\left(\frac{1}{g_\sigma^2} 00191 \frac{\partial^2}{\partial\sigma_0^2}+\frac{3}{g_\sigma M^*} 00192 \frac{\partial}{\partial\sigma_0}\right) 00193 U(\sigma_0)-3\frac{n_0}{E_F^*}\right]^{-1}\;. 00194 \f] 00195 00196 The symmetry energy of bulk matter is given by 00197 00198 \f[ 00199 E_{sym} = \frac{k_F^2}{6 E_F^{*}} + \frac{ n } 00200 {8 \left(g_{\rho}^2/m_{\rho}^2 + 2 f (\sigma_0, \omega_0) \right)} 00201 \f] 00202 00203 In the above equations, the subscipt `` \f$ 0 \f$ '' denotes the mean 00204 field values of \f$ \sigma \f$ and \f$ \omega \f$ . For the case 00205 \f$ f=0 \f$ , the symmetry energy varies linearly with the density at 00206 large densities. The function \f$ f \f$ permits variations in the 00207 density dependence of the symmetry energy above nuclear matter 00208 density. 00209 00210 See also \ref Muller96, \ref Zimanyi90. 00211 00212 */ 00213 class rmf_eos : public hadronic_eos_temp_pres { 00214 public: 00215 00216 /// Modifies method of calculating effective masses 00217 bool zm_mode; 00218 00219 /// \name Masses 00220 //@{ 00221 00222 /** 00223 \brief nucleon mass 00224 00225 This need not be exactly equal to the neutron or proton mass, 00226 but provides the scale for the coupling \c b. 00227 */ 00228 double mnuc; 00229 00230 /// \f$ \sigma \f$ mass (in \f$ \mathrm{fm}^{-1} \f$ ) 00231 double ms; 00232 00233 /// \f$ \omega \f$ mass (in \f$ \mathrm{fm}^{-1} \f$ ) 00234 double mw; 00235 00236 /// \f$ \rho \f$ mass (in \f$ \mathrm{fm}^{-1} \f$ ) 00237 double mr; 00238 00239 //@} 00240 00241 /// \name Standard couplings (including nonlinear sigma terms) 00242 //@{ 00243 double cs, cw, cr, b, c; 00244 //@} 00245 00246 /// \name Non-linear terms for omega and rho. 00247 //@{ 00248 double zeta, xi; 00249 //@} 00250 00251 /// \name Additional isovector couplings 00252 //@{ 00253 double a1, a2, a3, a4, a5, a6, b1, b2, b3; 00254 //@} 00255 00256 rmf_eos(); 00257 00258 /** 00259 \brief Load parameters for model named 'model' 00260 00261 Presently accepted values from file rmfdata/model_list: 00262 \include rmfdata/model_list 00263 00264 In these files, the nucleon and meson masses are by default 00265 specified in MeV, and cs, cw, and cr are given in fm. The 00266 parameters b and c are both unitless. If the bool 'oakstyle' is 00267 true, then load() assumes that gs, gw, and gr have been given 00268 where gs and gw are as usual, but gr is a factor of two smaller 00269 than usual, and g2 and g3 have been given where g2 = -b M gs^3 00270 and g3 = c gs^4. If tokistyle is true, then it is additionally 00271 assumed that c3 is given where c3=zeta/6*gw^4. 00272 00273 If \c external is true, then model is the filename (relative 00274 to the current directory) of the file containing the model 00275 parameters. Otherwise, the model is assumed to be present in 00276 the \o2 library data directory. 00277 */ 00278 int load(std::string model, bool external=false); 00279 00280 /// \name Compute EOS from densities at zero temperature 00281 //@{ 00282 /** 00283 \brief Equation of state as a function of density 00284 00285 Initial guesses for the chemical potentials are taken 00286 from the user-given values. Initial guesses for the fields 00287 can be set by set_fields(), or default values will be used. 00288 After the call to calc_e(), the final values of the fields 00289 can be accessed through get_fields(). 00290 00291 This is a little more robust than the standard version 00292 in the parent \ref hadronic_eos. 00293 00294 \future Improve the operation of this function when the 00295 proton density is zero. 00296 00297 */ 00298 virtual int calc_e(fermion &ne, fermion &pr, thermo <h); 00299 00300 /** 00301 \brief Equation of state as a function of density 00302 00303 \future Improve the operation of this function when the 00304 proton density is zero. 00305 00306 \todo Rename this function to distinguish between calc_e()'s 00307 00308 */ 00309 virtual int calc_e(fermion &ne, fermion &pr, thermo <h, 00310 double &sig, double &ome, double &rho); 00311 //@} 00312 00313 /// \name Compute EOS from chemical at zero temperature 00314 //@{ 00315 00316 /** 00317 \brief Equation of state as a function of chemical potential 00318 00319 Solves for the field equations automatically. 00320 00321 \note This may not be too robust. Fix? 00322 */ 00323 virtual int calc_p(fermion &ne, fermion &pr, thermo <h); 00324 00325 /** 00326 \brief Equation of state and meson field equations 00327 as a function of chemical potentials 00328 00329 This calculates the pressure and energy density as a function of 00330 \f$ \mu_n,\mu_p,\sigma,\omega,rho \f$ . When the field equations 00331 have been solved, \c f1, \c f2, and \c f3 are all zero. 00332 00333 The thermodynamic identity is satisfied even when the field 00334 equations are not solved. 00335 */ 00336 virtual int calc_eq_p(fermion &neu, fermion &p, double sig, 00337 double ome, double rho, double& f1, 00338 double& f2, double& f3, thermo& th); 00339 //@} 00340 00341 /// \name Compute EOS from chemical potentials at finite temperature 00342 //@{ 00343 /** \brief Equation of state and meson field equations as a 00344 function of chemical potentials 00345 */ 00346 virtual int calc_eq_temp_p(fermion_T &ne, fermion_T &pr, 00347 const double temper, 00348 double sig, double ome, double rho, double &f1, 00349 double &f2, double &f3, thermo &th); 00350 00351 /** 00352 \brief Equation of state as a function of chemical potential 00353 00354 Solves for the field equations automatically. 00355 */ 00356 virtual int calc_temp_p(fermion_T &ne, fermion_T &pr, const double T, 00357 thermo <h); 00358 //@} 00359 00360 int calc_temp_e(fermion_T &ne, fermion_T &pr, const double T, 00361 thermo <h); 00362 00363 /** 00364 \brief Calculate cs, cw, cr, b, and c from the saturation 00365 properties 00366 00367 Note that the meson masses and \ref mnuc must be specified 00368 before calling this function. 00369 00370 This function does not give correct results when bool zm_mode 00371 is true. 00372 00373 \c guess_cs, \c guess_cw, \c guess_b, and \c guess_c are 00374 initial guesses for \c cs, \c cw, \c b, and \c c respectively. 00375 00376 \todo 00377 - Fix this for zm_mode=true 00378 - Ensure solver is more robust 00379 00380 */ 00381 int fix_saturation(double guess_cs=4.0, double guess_cw=3.0, 00382 double guess_b=0.001, double guess_c=-0.001); 00383 00384 /** \brief Calculate properties for nuclear matter at the 00385 saturation density 00386 00387 This requires initial guesses to the chemical 00388 potentials, etc. 00389 */ 00390 virtual int saturation(); 00391 00392 /** \brief Calculate symmetry energy assuming the field 00393 equations have already been solved 00394 00395 This may only work at saturation density. Used by saturation(). 00396 */ 00397 double fesym_fields(double sig, double ome, double nb); 00398 00399 /** \brief Calculate the compressibility assuming the field 00400 equations have already been solved 00401 00402 This may only work at saturation density. 00403 */ 00404 double fcomp_fields(double sig, double ome, double nb); 00405 00406 /** \brief Calculate compressibilty and \c kprime assuming the field 00407 equations have already been solved 00408 00409 This may only work at saturation density. Used by 00410 saturation(). 00411 00412 \todo Does this work? Fix fkprime_fields() if it does not. 00413 */ 00414 int fkprime_fields(double sig, double ome, double nb, 00415 double &k, double &kprime); 00416 00417 /** 00418 \brief A function for solving the field equations 00419 00420 x[0], x[1], and x[2] should be set to \f$ \sigma, \omega \f$ , 00421 and \f$ \rho \f$ on input (in \f$ \mathrm{fm}^{-1} \f$ ) and 00422 on exit, y[0], y[1] and y[2] contain the field equations 00423 and are zero when the field equations have been solved. 00424 The \c pa parameter is ignored. 00425 */ 00426 int field_eqs(size_t nv, const ovector_base &x, ovector_base &y, 00427 double *&pa); 00428 00429 /** 00430 \brief A function for solving the field equations at finite 00431 temperature 00432 00433 x[0], x[1], and x[2] should be set to \f$ \sigma, \omega \f$ , 00434 and \f$ \rho \f$ on input (in \f$ \mathrm{fm}^{-1} \f$ ) and 00435 on exit, y[0], y[1] and y[2] contain the field equations 00436 and are zero when the field equations have been solved. 00437 The \c pa parameter is ignored. 00438 */ 00439 int field_eqsT(size_t nv, const ovector_base &x, ovector_base &y, 00440 double *&pa); 00441 00442 /** \brief Set a guess for the fields for the next call to calc_e(), 00443 calc_p(), or saturation() 00444 */ 00445 virtual int set_fields(double sig, double ome, double lrho) { 00446 sigma=sig; 00447 omega=ome; 00448 rho=lrho; 00449 guess_set=true; 00450 return 0; 00451 } 00452 00453 /** 00454 \brief Return the most recent values of the meson fields 00455 00456 This returns the most recent values of the meson fields set by 00457 a call to saturation(), calc_e(), or calc_p(fermion &, fermion 00458 &, thermo &). 00459 */ 00460 int get_fields(double &sig, double &ome, double &lrho) { 00461 sig=sigma; 00462 ome=omega; 00463 lrho=rho; 00464 return 0; 00465 } 00466 00467 /// Return string denoting type ("rmf_eos") 00468 virtual const char *type() { return "rmf_eos"; } 00469 00470 /** \brief Set the coefficients of a rmf_eos object to their 00471 limits from naturalness 00472 00473 As given in muller and Serot, npa 606, 508 00474 00475 The definition of the vector-isovector field and coupling 00476 matches what is done here. Compare the Lagrangian above 00477 with Eq. 10 from the reference. 00478 00479 The following couplings should all be of the same 00480 size: 00481 \f[ 00482 \frac{1}{2 c_s^2 M^2}, \frac{1}{2 c_v^2 M^2} 00483 \frac{1}{8 c_{\rho}^2 M^2},~\mathrm{and}~\frac{ 00484 \bar{a}_{ijk} M^{i+2 j+2 k-4}}{2^{2 k}} 00485 \f] 00486 which are equivalent to 00487 \f[ 00488 \frac{m_s^2}{2 g_s^2 M^2}, \frac{m_v^2}{2 g_v^2 M^2} 00489 \frac{m_{\rho}^2}{8 g_{\rho}^2 M^2},~\mathrm{and}~\frac{ 00490 a_{ijk} M^{i+2 j+2 k-4}}{g_s^i g_v^{2 j} 00491 g_{\rho}^{2 k} 2^{2 k}} 00492 \f] 00493 00494 The connection the \f$ a_{ijk} \f$ 's and the coefficients 00495 that are used here is 00496 \f{eqnarray*} 00497 \frac{b M}{3} g_{\sigma}^3 \sigma^3 &=& a_{300}~\sigma^3 00498 \nonumber \\ 00499 \frac{c}{4} g_{\sigma}^4 \sigma^4 &=& a_{400}~\sigma^4 00500 \nonumber \\ 00501 \frac{\zeta}{24} g_{\omega}^4 \omega^4 &=& a_{020}~\omega^4 00502 \nonumber \\ 00503 \frac{\xi}{24} g_{\rho}^4 \rho^4 &=& a_{002}~\rho^4 00504 \nonumber \\ 00505 b_1 g_{\rho}^2 \omega^2 \rho^2 &=& a_{011}~\omega^2 \rho^2 00506 \nonumber \\ 00507 b_2 g_{\rho}^2 \omega^4 \rho^2 &=& a_{021}~\omega^4 \rho^2 00508 \nonumber \\ 00509 b_3 g_{\rho}^2 \omega^6 \rho^2 &=& a_{031}~\omega^6 \rho^2 00510 \nonumber \\ 00511 a_1 g_{\rho}^2 \sigma^1 \rho^2 &=& a_{101}~\sigma^1 \rho^2 00512 \nonumber \\ 00513 a_2 g_{\rho}^2 \sigma^2 \rho^2 &=& a_{201}~\sigma^2 \rho^2 00514 \nonumber \\ 00515 a_3 g_{\rho}^2 \sigma^3 \rho^2 &=& a_{301}~\sigma^3 \rho^2 00516 \nonumber \\ 00517 a_4 g_{\rho}^2 \sigma^4 \rho^2 &=& a_{401}~\sigma^4 \rho^2 00518 \nonumber \\ 00519 a_5 g_{\rho}^2 \sigma^5 \rho^2 &=& a_{501}~\sigma^5 \rho^2 00520 \nonumber \\ 00521 a_6 g_{\rho}^2 \sigma^6 \rho^2 &=& a_{601}~\sigma^6 \rho^2 00522 \nonumber 00523 \f} 00524 00525 Note that Muller and Serot use the notation 00526 \f[ 00527 \frac{\bar{\kappa} g_s^3 }{2} = \frac{\kappa}{2} = b M 00528 g_s^3 \qquad \mathrm{and} \qquad 00529 \frac{\bar{\lambda} g_s^4}{6} = \frac{\lambda}{6} 00530 = c g_s^4 00531 \f] 00532 which differs slightly from the "standard" notation above. 00533 00534 We need to compare the values of 00535 \f{eqnarray*} 00536 &\frac{m_s^2}{2 g_s^2 M^2}, \frac{m_v^2}{2 g_v^2 M^2} 00537 \frac{m_{\rho}^2}{8 g_{\rho}^2 M^2},\frac{b}{3}, 00538 \frac{c}{4} 00539 & 00540 \nonumber \\ 00541 &\frac{\zeta}{24}, \frac{\xi}{384}, 00542 \frac{b_1}{4 g_{\omega}^2}, 00543 \frac{b_2 M^2}{4 g_{\omega}^4}, 00544 \frac{b_3 M^4}{4 g_{\omega}^6}, 00545 \frac{a_1}{4 g_{\sigma} M},& 00546 \nonumber \\ 00547 &\frac{a_2}{4 g_{\sigma}^2}, 00548 \frac{a_3 M}{4 g_{\sigma}^3}, 00549 \frac{a_4 M^2}{4 g_{\sigma}^4}, 00550 \frac{a_5 M^3}{4 g_{\sigma}^5},~\mathrm{and}~\frac{a_6 M^4} 00551 {4 g_{\sigma}^6}\, .& 00552 \f} 00553 00554 These values are stored in the variables cs, cw, cr, b, c, 00555 zeta, xi, b1, etc. in the specified \ref rmf_eos object. All 00556 of the numbers should be around 0.001 or 0.002. 00557 00558 For the scale \f$ M \f$, \ref mnuc is used. 00559 00560 \todo I may have ignored some signs in the above, which are 00561 unimportant for this application, but it would be good to fix 00562 them for posterity. 00563 00564 */ 00565 int check_naturalness(rmf_eos &re) { 00566 00567 double gs=cs*ms; 00568 double gw=cw*mw; 00569 double gr=cr*mr; 00570 00571 re.cs=0.5/cs/cs/mnuc/mnuc; 00572 re.cw=0.5/cw/cw/mnuc/mnuc; 00573 re.cr=0.125/cr/cr/mnuc/mnuc; 00574 re.b=b/3.0; 00575 re.c=c/4.0; 00576 00577 re.zeta=zeta/24.0; 00578 re.xi=xi/384.0; 00579 00580 re.b1=b1/gw/gw/4.0; 00581 re.b2=b2/pow(gw,4.0)/4.0*mnuc*mnuc; 00582 re.b3=b3/pow(gw,6.0)/4.0*pow(mnuc,4.0); 00583 00584 re.a1=a1/gs/4.0/mnuc; 00585 re.a2=a2/pow(gs,2.0)/4.0; 00586 re.a3=a3/pow(gs,3.0)/4.0*mnuc; 00587 re.a4=a4/pow(gs,4.0)/4.0*mnuc*mnuc; 00588 re.a5=a5/pow(gs,5.0)/4.0*pow(mnuc,3.0); 00589 re.a6=a6/pow(gs,6.0)/4.0*pow(mnuc,4.0); 00590 00591 return 0; 00592 } 00593 00594 /** \brief Provide the maximum values of the couplings assuming 00595 a limit on naturalness 00596 00597 The limits for the couplings are function of the nucleon and 00598 meson masses, except for the limits on \c b, \c c, \c zeta, 00599 and \c xi which are independent of the masses because of the 00600 way that these four couplings are defined. 00601 */ 00602 int naturalness_limits(double value, rmf_eos &re) { 00603 00604 double gs=cs*ms; 00605 double gw=cw*mw; 00606 double gr=cr*mr; 00607 00608 re.cs=value*2.0*mnuc*mnuc; 00609 re.cw=value*2.0*mnuc*mnuc; 00610 re.cr=value*8.0*mnuc*mnuc; 00611 re.b=value*3.0; 00612 re.c=value*4.0; 00613 00614 re.zeta=value*24.0; 00615 re.xi=value*384.0; 00616 00617 re.b1=value*gw*gw*4.0; 00618 re.b2=value*pow(gw,4.0)*4.0/mnuc/mnuc; 00619 re.b3=value*pow(gw,6.0)*4.0/pow(mnuc,4.0); 00620 00621 re.a1=value*gs*4.0*mnuc; 00622 re.a2=value*pow(gs,2.0)*4.0; 00623 re.a3=value*pow(gs,3.0)*4.0/mnuc; 00624 re.a4=value*pow(gs,4.0)*4.0/mnuc/mnuc; 00625 re.a5=value*pow(gs,5.0)*4.0/pow(mnuc,3.0); 00626 re.a6=value*pow(gs,6.0)*4.0/pow(mnuc,4.0); 00627 00628 return 0; 00629 } 00630 00631 /** \brief Set class mroot object for use calculating saturation density 00632 */ 00633 virtual int set_sat_mroot(mroot<int,mm_funct<int> > &mrx) { 00634 sat_mroot=&mrx; 00635 return 0; 00636 } 00637 00638 /** \brief The default solver for calculating the saturation 00639 density 00640 00641 Used by fn0() (which is called by saturation()) to solve 00642 saturation_matter_e() (1 variable). 00643 */ 00644 gsl_mroot_hybrids<int,mm_funct<int> > def_sat_mroot; 00645 00646 #ifndef DOXYGEN_INTERNAL 00647 00648 protected: 00649 00650 /** 00651 \brief Temporary charge density 00652 00653 \todo Should use hadronic_eos::proton_frac instead? 00654 */ 00655 double n_charge; 00656 00657 /// \name The meson fields 00658 //@{ 00659 double sigma, omega, rho; 00660 //@} 00661 00662 /// Temperature for solving field equations at finite temperature 00663 double fe_temp; 00664 00665 /// For calc_e(), if true, then solve for neutron matter 00666 bool ce_neut_matter; 00667 00668 /// For calc_e(), if true, then solve for proton matter 00669 bool ce_prot_matter; 00670 00671 /// True if a guess for the fields has been given 00672 bool guess_set; 00673 00674 /// The solver to compute saturation properties 00675 mroot<int,mm_funct<int> > *sat_mroot; 00676 00677 /// The function for fix_saturation() 00678 int fix_saturation_fun(size_t nv, const ovector_base &x, ovector_base &y, 00679 int &pa); 00680 00681 /// Compute matter at zero pressure (for saturation()) 00682 virtual int zero_pressure(size_t nv, const ovector_base &ex, 00683 ovector_base &ey, int &pa); 00684 00685 /// The function for calc_e() 00686 virtual int calc_e_solve_fun(size_t nv, const ovector_base &ex, 00687 ovector_base &ey, double *&pa); 00688 /// The function for calc_temp_e() 00689 virtual int calc_temp_e_solve_fun(size_t nv, const ovector_base &ex, 00690 ovector_base &ey, double *&pa); 00691 00692 /** \brief Calculate the \c cr coupling given \c sig and \c ome 00693 at the density 'nb'. 00694 00695 Used by fix_saturation(). 00696 */ 00697 int calc_cr(double sig, double ome, double nb); 00698 00699 double ce_temp; 00700 00701 #endif 00702 00703 }; 00704 00705 #ifndef DOXYGENP 00706 } 00707 #endif 00708 00709 #endif
Documentation generated with Doxygen and provided under the GNU Free Documentation License. See License Information for details.
Project hosting provided by
,
O2scl Sourceforge Project Page