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