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 #ifndef O2SCL_APR_EOS_H 00024 #define O2SCL_APR_EOS_H 00025 00026 #include <cmath> 00027 #include <o2scl/constants.h> 00028 #include <o2scl/hadronic_eos.h> 00029 #include <o2scl/fermion.h> 00030 #include <o2scl/nonrel_fermion.h> 00031 00032 #ifndef DOXYGENP 00033 namespace o2scl { 00034 #endif 00035 00036 /** 00037 \brief EOS from Akmal, Pandharipande, and Ravenhall 00038 00039 The EOS of Akmal, Pandharipande, and Ravenhall, from \ref 00040 Akmal98 (APR). 00041 00042 The Hamiltonian is: 00043 \f[ 00044 {\cal H}_{APR} = {\cal H}_{kin} + {\cal H}_{pot} 00045 \f] 00046 00047 \f[ 00048 {\cal H}_{kin} = \left( \frac{\hbar^2}{2 m} + 00049 \left( p_3 + \left( 1 - x \right) 00050 p_5 \right) n e^{-p_4 n} \right) \tau_n + 00051 \left( \frac{\hbar^2}{2 m} + \left( p_3 + x 00052 p_5 \right) n e^{-p_4 n} \right) \tau_p 00053 \f] 00054 00055 \f[ 00056 {\cal H}_{pot} = 00057 g_1 \left( 1 - \left( 1 - 2 x \right)^2 \right) + 00058 g_2 \left( 1 - 2 x \right)^2 00059 \f] 00060 00061 The following are definitions for \f$ g_i \f$ in the low-density 00062 phase (LDP) or the high-density phase (HDP): 00063 00064 \f[ 00065 g_{1,LDP} = -n^2 \left( p_1 + p_2 n + p_6 n^2 + 00066 \left( p_{10} + p_{11} n \right) e^{-p_9^2 n^2} \right) 00067 \f] 00068 00069 \f[ 00070 g_{2,LDP} = -n^2 \left( p_{12}/n + p_7 + p_8 n + 00071 p_{13} e^{-p_9^2 n^2} \right) 00072 \f] 00073 00074 \f[ 00075 g_{1,HDP} = g_{1,LDP} -n^2 \left( p_{17} \left( n - p_{19} \right) 00076 + p_{21} \left( n - p_{19} \right)^2 e^{p_{18} 00077 \left( n - p_{19} \right) } 00078 \right) 00079 \f] 00080 00081 \f[ 00082 g_{2,HDP} = g_{2,LDP} -n^2 \left( p_{15} \left( n - p_{20} \right) 00083 + p_{14} \left( n - p_{20} \right)^2 e^{p_{16} 00084 \left( n - p_{20} \right)} 00085 \right) 00086 \f] 00087 00088 The chemical potentials include the rest mass energy and the 00089 energy density includes the rest mass energy density. 00090 00091 \note APR seems to have been designed to be used with 00092 non-relativistic neutrons and protons with equal masses of 939 00093 MeV. This gives a saturation density very close to 0.16. 00094 00095 The variables \f$ \nu_n\f$ and \f$ \nu_p\f$ contain the expressions 00096 \f$ (-\mu_n+V_n)/T \f$ and \f$ (-\mu_p+V_p)/T \f$ 00097 respectively, where \f$ V \f$ is the potential part 00098 of the single particle energy for particle i (i.e. the derivative 00099 of the Hamiltonian w.r.t. density while energy density held constant). 00100 Equivalently, \f$ \nu_n\f$ is just \f$ -k_{F_n}^2/ 2 m^{*} \f$. 00101 00102 The selection between the LDP and HDP is controlled by 00103 \ref pion. The default is to use the LDP at densities below 00104 0.16 \f$ \mathrm{fm}^{-3} \f$, and for larger densities 00105 to just use whichever minimizes the energy. 00106 00107 The finite temperature approximations from \ref Prakash97 00108 are used in testing. 00109 00110 \note Since this EOS uses the effective masses and chemical 00111 potentials in the fermion class, the values of 00112 part::non_interacting for neutrons and protons are set to false 00113 in many of the functions. 00114 00115 \future There might be room to improve the testing 00116 of the finite temperature part a bit. 00117 \future There is some repetition between calc_e() and calc_temp_e() 00118 that possibly could be removed. 00119 */ 00120 class apr_eos : public hadronic_eos_temp_eden { 00121 00122 #ifndef DOXYGEN_INTERNAL 00123 00124 protected: 00125 00126 /// Storage for the parameters 00127 double *par; 00128 00129 /// An integer to indicate which phase was used in calc_e() 00130 int lp; 00131 00132 #endif 00133 00134 public: 00135 apr_eos(); 00136 00137 virtual ~apr_eos(); 00138 00139 /** 00140 \name Choice of phase 00141 */ 00142 //@{ 00143 /** \brief use LDP for densities less than 0.16 and for higher 00144 densities, use the phase which minimizes energy (default) 00145 */ 00146 static const int best=0; 00147 /// LDP (no pion condensation) 00148 static const int ldp=1; 00149 /// HDP (pion condensation) 00150 static const int hdp=2; 00151 /// Choice of phase (default \ref best) 00152 int pion; 00153 /** \brief Return the phase of the most recent call to calc_e() 00154 */ 00155 int last_phase() { return lp; } 00156 //@} 00157 00158 /** \brief Equation of state as a function of density 00159 */ 00160 virtual int calc_e(fermion &n, fermion &p, thermo &th); 00161 00162 /// Equation of state as a function of densities 00163 virtual int calc_temp_e(fermion_T &n, fermion_T &pr, double temper, 00164 thermo &th); 00165 00166 /** 00167 \brief Compute the compressibility 00168 00169 See general notes at hadronic_eos::fcomp(). This computes the 00170 compressibility (at fixed proton fraction = 0.5) exactly, 00171 unless \ref parent_method is true in which case the derivative 00172 is taken numerically in hadronic_eos::fcomp(). 00173 */ 00174 double fcomp(double nb); 00175 00176 /** \brief Calculate symmetry energy of matter as energy of 00177 neutron matter minus the energy of nuclear matter 00178 00179 This function returns the energy per baryon of neutron matter 00180 minus the energy per baryon of nuclear matter. This will 00181 deviate significantly from the results from fesym() only if 00182 the dependence of the symmetry energy on \f$ \delta \f$ is not 00183 quadratic. 00184 */ 00185 double fesym_diff(double nb); 00186 00187 /** 00188 \brief Select model 00189 00190 Valid values for \c model_index are: \n 00191 1 - A18+UIX*+deltav (preferred by Akmal, et. al. - this is 00192 the default) \n 00193 2 - A18+UIX* \n 00194 3 - A18+deltav \n 00195 4 - A18 \n 00196 00197 If any other integer is given, A18+UIX*+deltav is assumed. 00198 */ 00199 void select(int model_index); 00200 00201 /** 00202 \brief Calculate Q's for semi-infinite nuclear matter 00203 00204 For general discussion, see the documentation to hadronic_eos::qs(). 00205 00206 For APR, we set \f$ x_1=x_2=0 \f$ so that \f$ Q_i=P_i/2 \f$ and then 00207 \f{eqnarray*} 00208 P_1 &=& \left(\frac{1}{2} p_3-p_5 \right) e^{-p_4 n} 00209 \nonumber \\ 00210 P_2 &=& \left(\frac{1}{2} p_3+p_5 \right) e^{-p_4 n} 00211 \f} 00212 00213 This gives 00214 \f{eqnarray*} 00215 Q_{nn}&=&\frac{1}{4} e^{-p_4 \rho} 00216 \left[ -6 p_5 - p_4 (p_3 - 2 p_5) (n_n + 2 n_p) \right] 00217 \nonumber \\ 00218 Q_{np}&=&\frac{1}{8} e^{-p_4 \rho} 00219 \left[ 4 (p_3 - 4 p_5) - 3 p_4 (p_3 - 2 p_5) (n_n + n_p)\right] 00220 \nonumber \\ 00221 Q_{pp}&=&\frac{1}{4} e^{-p_4 \rho} 00222 \left[ -6 p_5 - p_4 (p_3 - 2 p_5) (n_p + 2 n_n) \right] 00223 \f} 00224 00225 \htmlonly 00226 See the Mathematica notebook 00227 <a href="apr_eos.nb"> 00228 apr_eos.nb</a>, and 00229 <a href="apr_eos.ps"> 00230 apr_eos.ps</a>. 00231 \endhtmlonly 00232 \latexonly 00233 See the Mathematica notebook 00234 \begin{verbatim} 00235 doc/o2scl/extras/apr_eos.nb 00236 doc/o2scl/extras/apr_eos.ps 00237 \end{verbatim} 00238 \endlatexonly 00239 00240 */ 00241 int gradient_qij2(double nn, double np, 00242 double &qnn, double &qnp, double &qpp, 00243 double &dqnndnn, double &dqnndnp, 00244 double &dqnpdnn, double &dqnpdnp, 00245 double &dqppdnn, double &dqppdnp); 00246 00247 /** \brief Get the value of one of the parameters 00248 */ 00249 double get_par(int n) { 00250 if (n<23 && n>0) return par[n]; 00251 return 0.0; 00252 } 00253 00254 /** \brief Set the value of one of the parameters 00255 */ 00256 int set_par(int n, double x) { 00257 if (n<23 && n>0) par[n]=x; 00258 return 0; 00259 } 00260 00261 /// Default nonrelativistic neutron 00262 nonrel_fermion def_nr_neutron; 00263 00264 /// Default nonrelativistic proton 00265 nonrel_fermion def_nr_proton; 00266 00267 /// Return string denoting type ("apr_eos") 00268 virtual const char *type() { return "apr_eos"; } 00269 00270 /** 00271 \brief If true, use the methods from hadronic_eos for fcomp() 00272 00273 This can be set to true to check the difference in the 00274 compressibility wbetween the exact expressions and the 00275 numerical values from class hadronic_eos. 00276 */ 00277 bool parent_method; 00278 00279 #ifndef DOXYGEN_INTERNAL 00280 00281 protected: 00282 00283 /// The variable indicating which parameter set is to be used 00284 int choice; 00285 00286 #endif 00287 00288 }; 00289 00290 #ifndef DOXYGENP 00291 } 00292 #endif 00293 00294 #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