![]() |
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 #ifndef O2SCL_NAMBUJL_EOS_H 00024 #define O2SCL_NAMBUJL_EOS_H 00025 00026 #include <cmath> 00027 #include <o2scl/constants.h> 00028 #include <o2scl/quark_eos.h> 00029 #include <o2scl/quark.h> 00030 #include <o2scl/mm_funct.h> 00031 #include <o2scl/gsl_mroot_hybrids.h> 00032 #include <o2scl/inte.h> 00033 #include <o2scl/gsl_inte_qag.h> 00034 00035 #ifndef DOXYGENP 00036 namespace o2scl { 00037 #endif 00038 00039 /** \brief Nambu Jona-Lasinio EOS at zero temperature 00040 00041 Calculates everything from the quark condensates ([uds].qq) and the 00042 chemical potentials ([uds].mu). If "fromqq" is set to false, then 00043 instead it calculates everything from the dynamical masses 00044 ([uds].ms) and the chemical potentials. L, G, K, and B0 are fixed 00045 constants. [uds].pr returns the pressure due to the Fermi-gas 00046 contribution plus the bag pressure contribution. [uds.ed] is the 00047 energy density for each quark so that e.g. u.ed+u.pr=u.mu*u.n. B0 00048 should be fixed using calc_B0() beforehand to ensure that the energy 00049 density and pressure of the vacuum is zero. 00050 00051 The functions set_parameters() should be called first. 00052 00053 The code is based on \ref Buballa99. 00054 00055 The Lagrangian is 00056 \f[ 00057 {\cal L} = \bar q ( i \partial{\hskip-2.0mm}/ - {\hat m_0}) q \;+\; 00058 G \sum_{k=0}^8 [\,({\bar q}\lambda_k q)^2 + ({\bar q} 00059 i\gamma_5\lambda_k q)^2\,] + {\cal L}_6 00060 \f] 00061 \f[ 00062 {\cal L}_6 = - K \,[ \,{\rm det}_f ({\bar 00063 q}(1+\gamma_5) q) + {\rm det}_f ({\bar q}(1-\gamma_5) q) \,] \, . 00064 \f] 00065 00066 And the corresponding thermodynamic potential is 00067 \f[ 00068 \Omega = \Omega_{FG} + \Omega_{Int} 00069 \f] 00070 where \f$\Omega_{FG}\f$ is the Fermi gas contribution and 00071 \f[ 00072 \frac{\Omega_{\mathrm{Int}}}{V} = - 2 N_c \sum_{i=u,d,s} 00073 \int \frac {d^3p}{(2\pi)^3} \sqrt{m_i^2 + p^2} + 00074 \frac{\Omega_{V}}{V} 00075 \f] 00076 \f[ 00077 \frac{\Omega_{V}}{V} = 00078 \sum_{i=u,d,s} 2 G \langle\bar{q}_i q_i \rangle^2 00079 - 4 K \langle \bar{q}_u q_u \rangle \langle \bar{q}_d q_d \rangle 00080 \langle \bar{q}_s q_s \rangle + B_0\,. 00081 \f] 00082 where \f$B_0\f$ is a constant defined to ensure that the 00083 energy density and the pressure of the vacuum is zero. 00084 00085 Unlike \ref Buballa99, the bag constant, \f$\Omega_{Int}/V\f$ is 00086 defined without the term 00087 \f[ 00088 \sum_{i=u,d,s} 2 N_C \int_0^{\Lambda} 00089 \frac{d^3 p}{(2 \pi)^3} \sqrt{ m_{0,i}^2+p^2 } ~dp 00090 \f] 00091 since this allows an easier comparison to the finite temperature 00092 EOS. 00093 The constant \f$B_0\f$ in this case 00094 is therefore significantly 00095 larger, but the energy density and pressure are still zero in 00096 the vacuum. 00097 00098 The Feynman-Hellman theorem (\ref Bernard88 ), gives 00099 \f[ 00100 \left< \bar{q} q \right> = \frac{\partial m^{*}}{\partial m} 00101 \f] 00102 00103 The functions calc_e() and calc_p() never return a value other 00104 than zero, but will give nonsensical results for nonsensical 00105 inputs. 00106 00107 <b>Finite T documentation</b> 00108 00109 Calculates everything from the quark condensates ([uds].qq) and the 00110 chemical potentials ([uds].mu). If "fromqq" is set to false, then 00111 instead it calculates everything from the dynamical masses 00112 ([uds].ms) and the chemical potentials. L, G, K, and B0 are fixed 00113 constants. [uds].pr returns the pressure due to the Fermi-gas 00114 contribution plus the bag pressure contribution. [uds.ed] is the 00115 energy density for each quark so that e.g. u.ed+u.pr=u.mu*u.n. B0 is 00116 fixed to ensure that the energy density and pressure of the vacuum 00117 is zero. 00118 00119 This implementation includes contributions from antiquarks. 00120 00121 \hline 00122 <b>References:</b> 00123 00124 Created for \ref Steiner00. See also \ref Buballa99 and 00125 \ref Hatsuda94. 00126 */ 00127 00128 class nambujl_eos : public quark_eos { 00129 00130 public: 00131 00132 /** \brief Set the parameters and the bag constant \c B0 00133 00134 This function allows the user to specify the momentum cutoff, 00135 \c lambda, the four-fermion coupling \c fourferm 00136 and the six-fermion coupling from the 't Hooft interaction 00137 \c sixferm . If 0.0 is given for any of the values, then 00138 the default is used (\f$ \Lambda=602.3/(\hbar c), 00139 G=1.835/\Lambda^2, K=12.36/\Lambda^5 \f$). 00140 00141 The value of the shift in the bag constant \c B0 is 00142 automatically calculated to ensure that the energy density and 00143 the pressure of the vacuum are zero. The functions 00144 set_quarks() and set_thermo() can be used before hand to 00145 specify the \ref quark and \ref thermo objects. 00146 */ 00147 virtual int set_parameters(double lambda=0.0, double fourferm=0.0, 00148 double sixferm=0.0); 00149 00150 /** \brief Accuracy limit for Fermi integrals for finite temperature 00151 00152 \ref limit is used for the finite temperature integrals to 00153 ensure that no numbers larger than exp(limit) or smaller than 00154 exp(-limit) are avoided. (Default: 20) 00155 */ 00156 double limit; 00157 00158 /** \brief Calculate from quark condensates if true (default true) 00159 00160 If this is false, then computations are performed using 00161 the effective masses as inputs 00162 */ 00163 bool fromqq; 00164 00165 nambujl_eos(); 00166 00167 /** \brief Equation of state as a function of chemical potentials 00168 00169 This function automatically solves the gap equations 00170 */ 00171 virtual int calc_p(quark &u, quark &d, quark &s, thermo <h); 00172 00173 /** \brief Equation of state as a function of chemical potentials at 00174 finite temperature 00175 00176 This function automatically solves the gap equations 00177 */ 00178 virtual int calc_temp_p(quark &u, quark &d, quark &s, 00179 double T, thermo &th); 00180 00181 /** \brief Equation of state and gap equations as a function of 00182 chemical potential 00183 */ 00184 virtual int calc_eq_p(quark &u, quark &d, quark &s, double &gap1, 00185 double &gap2, double &gap3, thermo <h); 00186 00187 /** \brief Equation of state and gap equations as a function of 00188 the densities 00189 */ 00190 virtual int calc_eq_e(quark &u, quark &d, quark &s, double &gap1, 00191 double &gap2, double &gap3, thermo <h); 00192 00193 /** \brief Equation of state and gap equations 00194 as a function of chemical potentials 00195 */ 00196 int calc_eq_temp_p(quark &tu, quark &td, quark &ts, 00197 double &gap1, double &gap2, double &gap3, 00198 thermo &qb, double temper); 00199 00200 /** \brief Calculates gap equations in \c y as a function of the 00201 constituent masses in \c x 00202 00203 The function utilizes the \ref quark objects which can 00204 be specified in set_quarks() and the \ref thermo object 00205 which can be specified in eos::set_thermo(). 00206 */ 00207 int gapfunms(size_t nv, const ovector_base &x, ovector_base &y); 00208 00209 /** \brief Calculates gap equations in \c y as a function of the 00210 quark condensates in \c x 00211 00212 The function utilizes the \ref quark objects which can 00213 be specified in set_quarks() and the \ref thermo object 00214 which can be specified in eos::set_thermo(). 00215 */ 00216 int gapfunqq(size_t nv, const ovector_base &x, ovector_base &y); 00217 00218 /** \brief Calculates gap equations in \c y as a function of the 00219 constituent masses in \c x 00220 00221 The function utilizes the \ref quark objects which can 00222 be specified in set_quarks() and the \ref thermo object 00223 which can be specified in eos::set_thermo(). 00224 */ 00225 int gapfunmsT(size_t nv, const ovector_base &x, ovector_base &y); 00226 00227 /** \brief Calculates gap equations in \c y as a function of the 00228 quark condensates in \c x 00229 00230 The function utilizes the \ref quark objects which can 00231 be specified in set_quarks() and the \ref thermo object 00232 which can be specified in eos::set_thermo(). 00233 */ 00234 int gapfunqqT(size_t nv, const ovector_base &x, ovector_base &y); 00235 00236 /** \name The default quark masses 00237 00238 These are the values from \ref Buballa99 which were used 00239 to fix the pion and kaon decay constants, and the pion, 00240 kaon, and eta prime masses. They are set in the constructor 00241 and are in units of \f$ \mathrm{fm}^{-1} \f$ . 00242 */ 00243 //@{ 00244 double up_default_mass; 00245 double down_default_mass; 00246 double strange_default_mass; 00247 //@} 00248 00249 /** \brief Set the quark objects to use 00250 00251 The quark objects are used in gapfunms(), gapfunqq(), 00252 gapfunmsT(), gapfunqqT(), and B0fun(). 00253 */ 00254 int set_quarks(quark &u, quark &d, quark &s); 00255 00256 /// The momentum cutoff 00257 double L; 00258 00259 /// The four-fermion coupling 00260 double G; 00261 00262 /// The 't Hooft six-fermion interaction coupling 00263 double K; 00264 00265 /// The bag constant 00266 double B0; 00267 00268 /** \name The default quark objects 00269 00270 The masses are automatically set in the constructor to 00271 \c up_default_mass, \c down_default_mass, and 00272 \c strange_default_mass.c 00273 */ 00274 //@{ 00275 quark def_up; 00276 quark def_down; 00277 quark def_strange; 00278 //@} 00279 00280 /// Return string denoting type ("nambujl_eos") 00281 virtual const char *type() { return "nambujl_eos"; } 00282 00283 /// Set solver to use in set_parameters() 00284 virtual int set_solver(mroot<mm_funct<> > &s) { 00285 solver=&s; 00286 return 0; 00287 } 00288 00289 /// A structure for passing parameters to the integrands 00290 typedef struct njtp_s { 00291 double ms, m, mu, temper, limit; 00292 } njtp; 00293 00294 /// Set integration object 00295 virtual int set_inte(inte<funct> &i) { 00296 it=&i; 00297 return 0; 00298 } 00299 00300 /// The default solver 00301 gsl_mroot_hybrids<mm_funct<> > def_solver; 00302 00303 /// The default integrator 00304 gsl_inte_qag<funct> def_it; 00305 00306 protected: 00307 00308 #ifndef DOXYGEN_INTERNAL 00309 00310 /// The integrator for finite temperature integrals 00311 inte<funct> *it; 00312 00313 /// The solver to use for set_parameters() 00314 mroot<mm_funct<> > *solver; 00315 00316 /// Used by calc_B0() to compute the bag constant 00317 int B0fun(size_t nv, const ovector_base &x, ovector_base &y); 00318 00319 /// Calculates the contribution to the bag constant from quark \c q 00320 void njbag(quark &q); 00321 00322 /// The up quark 00323 quark *up; 00324 /// The down quark 00325 quark *down; 00326 /// The strange quark 00327 quark *strange; 00328 00329 /// The integrand for the quark condensate 00330 double iqq(double x, const njtp &pa); 00331 /// The integrand for the density 00332 double ide(double x, const njtp &pa); 00333 /// The integrand for the energy density 00334 double ied(double x, const njtp &pa); 00335 /// The integrand for the pressure 00336 double ipr(double x, const njtp &pa); 00337 00338 /// The temperature for calc_temp_p() 00339 double cp_temp; 00340 00341 #endif 00342 00343 }; 00344 00345 #ifndef DOXYGENP 00346 } 00347 #endif 00348 00349 #endif
Documentation generated with Doxygen. Provided under the GNU Free Documentation License (see License Information).