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