eos_quark_njl.h
Go to the documentation of this file.
1 /*
2  -------------------------------------------------------------------
3 
4  Copyright (C) 2006-2020, Andrew W. Steiner
5 
6  This file is part of O2scl.
7 
8  O2scl is free software; you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation; either version 3 of the License, or
11  (at your option) any later version.
12 
13  O2scl is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with O2scl. If not, see <http://www.gnu.org/licenses/>.
20 
21  -------------------------------------------------------------------
22 */
23 /** \file eos_quark_njl.h
24  \brief File defining \ref o2scl::eos_quark_njl
25 */
26 #ifndef O2SCL_NAMBUJL_EOS_H
27 #define O2SCL_NAMBUJL_EOS_H
28 
29 #include <cmath>
30 #include <o2scl/constants.h>
31 #include <o2scl/eos_quark.h>
32 #include <o2scl/quark.h>
33 #include <o2scl/mm_funct.h>
34 #include <o2scl/mroot_hybrids.h>
35 #include <o2scl/inte.h>
36 #include <o2scl/inte_qag_gsl.h>
37 
38 #ifndef DOXYGEN_NO_O2NS
39 namespace o2scl {
40 #endif
41 
42  /** \brief Nambu Jona-Lasinio EOS
43 
44  This class is based on \ref Buballa99 .
45 
46  The quantities \ref L, \ref G, and \ref K are the coupling
47  constants. In order to use the EOS, the user should either (i)
48  set the bag constant, \ref B0 directly, or (ii) use \ref
49  set_parameters() to modify the parameters (and then the \ref
50  set_parameters() function also automatically computes the bag
51  constant.
52 
53  This class can compute the EOS from the quark condensates
54  (stored in \ref o2scl::quark::qq) by setting \ref fromqq to
55  <tt>true</tt> (this is the default) or from the dynamical masses
56  (stored in \ref o2scl::part_tl::ms) by setting \ref fromqq to
57  <tt>false</tt>.
58 
59  The Fermi gas-like contribution to the pressure due
60  plus the the contribution from the bag pressure is stored in
61  \ref o2scl::part_tl::pr . For the \f$ T=0 \f$ EOS, the
62  energy density for each quark is set so that
63  \f$ \varepsilon + P = \mu n \f$ .
64 
65  <b>Finite T documentation</b>
66 
67  This implementation includes contributions from antiquarks.
68 
69  <b>Details</b>
70 
71  The Lagrangian is
72  \f[
73  {\cal L} = \bar q ( i \partial{\hskip-2.0mm}/ - {\hat m_0}) q \;+\;
74  G \sum_{k=0}^8 [\,({\bar q}\lambda_k q)^2 + ({\bar q}
75  i\gamma_5\lambda_k q)^2\,] + {\cal L}_6
76  \f]
77  \f[
78  {\cal L}_6 = - K \,[ \,{\rm det}_f ({\bar
79  q}(1+\gamma_5) q) + {\rm det}_f ({\bar q}(1-\gamma_5) q) \,] \, .
80  \f]
81 
82  And the corresponding thermodynamic potential is
83  \f[
84  \Omega = \Omega_{FG} + \Omega_{\mathrm{Int}}
85  \f]
86  where \f$\Omega_{FG}\f$ is the Fermi gas contribution and
87  \f[
88  \frac{\Omega_{\mathrm{Int}}}{V} = - 2 N_c \sum_{i=u,d,s}
89  \int \frac {d^3p}{(2\pi)^3} \sqrt{m_i^2 + p^2} +
90  \frac{\Omega_{V}}{V}
91  \f]
92  \f[
93  \frac{\Omega_{V}}{V} =
94  \sum_{i=u,d,s} 2 G \langle\bar{q}_i q_i \rangle^2
95  - 4 K \langle \bar{q}_u q_u \rangle \langle \bar{q}_d q_d \rangle
96  \langle \bar{q}_s q_s \rangle + B_0\,.
97  \f]
98  where \f$B_0\f$ is a constant defined to ensure that the
99  energy density and the pressure of the vacuum is zero.
100 
101  Unlike \ref Buballa99, the bag constant, \f$\Omega_{\mathrm{Int}}/V\f$ is
102  defined without the term
103  \f[
104  \sum_{i=u,d,s} 2 N_C \int_0^{\Lambda}
105  \frac{d^3 p}{(2 \pi)^3} \sqrt{ m_{0,i}^2+p^2 } ~dp
106  \f]
107  since this allows an easier comparison to the finite temperature
108  EOS. The constant \f$B_0\f$ in this case
109  is therefore significantly
110  larger, but the energy density and pressure are still zero in
111  the vacuum.
112 
113  The Feynman-Hellman theorem (\ref Bernard88 ), gives
114  \f[
115  \left< \bar{q} q \right> = \frac{\partial m^{*}}{\partial m}
116  \f]
117 
118  The functions calc_e() and calc_p() never return a value other
119  than zero, but will give nonsensical results for nonsensical
120  inputs.
121 
122  <b>References</b>
123 
124  Created for \ref Steiner00. See also \ref Buballa99 and
125  \ref Hatsuda94.
126 
127  \todo Better documentation.
128  \future Remove the njtp structure and move the numbers
129  there to function parameters.
130  \future Consider rewriting the testing code and making
131  the various gap functions protected instead of public.
132  \future Remove the stored quark pointers if they are
133  unnecessary?
134  */
135 
136  class eos_quark_njl : public eos_quark {
137 
138  public:
139 
141 
142  /** \brief Set the parameters and the bag constant \c B0
143 
144  This function allows the user to specify the momentum cutoff,
145  \c lambda, the four-fermion coupling \c fourferm
146  and the six-fermion coupling from the 't Hooft interaction
147  \c sixferm . If 0.0 is given for any of the values, then
148  the default is used (\f$ \Lambda=602.3/(\hbar c),
149  G=1.835/\Lambda^2, K=12.36/\Lambda^5 \f$).
150 
151  The value of the shift in the bag constant \c B0 is
152  automatically calculated to ensure that the energy density and
153  the pressure of the vacuum are zero. The functions
154  set_quarks() and set_thermo() can be used before hand to
155  specify the \ref quark and \ref thermo objects.
156  */
157  virtual int set_parameters(double lambda=0.0, double fourferm=0.0,
158  double sixferm=0.0);
159 
160  /** \brief Accuracy limit for Fermi integrals for finite temperature
161 
162  \ref limit is used for the finite temperature integrals to
163  ensure that no numbers larger than exp(limit) or smaller than
164  exp(-limit) are avoided. (Default: 20)
165  */
166  double limit;
167 
168  /** \brief Calculate from quark condensates if true (default true)
169 
170  If this is false, then computations are performed using
171  the effective masses as inputs
172  */
173  bool fromqq;
174 
175  eos_quark_njl();
176 
177  /** \brief Equation of state as a function of chemical potentials
178 
179  This function automatically solves the gap equations.
180  */
181  virtual int calc_p(quark &u, quark &d, quark &s, thermo &lth);
182 
183  /** \brief Equation of state as a function of chemical potentials at
184  finite temperature
185 
186  This function automatically solves the gap equations.
187  */
188  virtual int calc_temp_p(quark &u, quark &d, quark &s,
189  double T, thermo &th);
190 
191  /** \brief Equation of state and gap equations as a function of
192  chemical potential
193  */
194  virtual int calc_eq_p(quark &u, quark &d, quark &s, double &gap1,
195  double &gap2, double &gap3, thermo &lth);
196 
197  /** \brief Equation of state and gap equations as a function of
198  the densities
199  */
200  virtual int calc_eq_e(quark &u, quark &d, quark &s, double &gap1,
201  double &gap2, double &gap3, thermo &lth);
202 
203  /** \brief Equation of state and gap equations
204  as a function of chemical potentials at finite temperature
205  */
206  int calc_eq_temp_p(quark &tu, quark &td, quark &ts,
207  double &gap1, double &gap2, double &gap3,
208  thermo &qb, double temper);
209 
210  /** \brief Calculates gap equations in \c y as a function of the
211  constituent masses in \c x
212 
213  The function utilizes the \ref quark objects which can
214  be specified in set_quarks() and the \ref thermo object
215  which can be specified in eos::set_thermo().
216  */
217  int gapfunms(size_t nv, const ubvector &x, ubvector &y);
218 
219  /** \brief Calculates gap equations in \c y as a function of the
220  quark condensates in \c x
221 
222  The function utilizes the \ref quark objects which can
223  be specified in set_quarks() and the \ref thermo object
224  which can be specified in eos::set_thermo().
225  */
226  int gapfunqq(size_t nv, const ubvector &x, ubvector &y);
227 
228  /** \brief Calculates gap equations in \c y as a function of the
229  constituent masses in \c x
230 
231  The function utilizes the \ref quark objects which can
232  be specified in set_quarks() and the \ref thermo object
233  which can be specified in eos::set_thermo().
234  */
235  int gapfunmsT(size_t nv, const ubvector &x, ubvector &y);
236 
237  /** \brief Calculates gap equations in \c y as a function of the
238  quark condensates in \c x
239 
240  The function utilizes the \ref quark objects which can
241  be specified in set_quarks() and the \ref thermo object
242  which can be specified in eos::set_thermo().
243  */
244  int gapfunqqT(size_t nv, const ubvector &x, ubvector &y);
245 
246  /** \name The default quark masses
247 
248  These are the values from \ref Buballa99 which were used to
249  fix the pion and kaon decay constants, and the pion, kaon, and
250  eta prime masses. They are set in the constructor and are in
251  units of \f$ \mathrm{fm}^{-1} \f$ . The default values are 5.5
252  MeV for the up and down quark and 140.7 MeV for the strange
253  quark (then divided by \ref o2scl_const::hc_mev_fm for the
254  conversion).
255  */
256  //@{
257  double up_default_mass;
258  double down_default_mass;
259  double strange_default_mass;
260  //@}
261 
262  /** \brief Set the quark objects to use
263 
264  The quark objects are used in gapfunms(), gapfunqq(),
265  gapfunmsT(), gapfunqqT(), and B0fun().
266  */
267  int set_quarks(quark &u, quark &d, quark &s);
268 
269  /// The momentum cutoff (in \f$ \mathrm{fm}^{-1} \f$)
270  double L;
271 
272  /// The four-fermion coupling (in \f$ \mathrm{fm}^{2} \f$)
273  double G;
274 
275  /** \brief The 't Hooft six-fermion interaction coupling
276  (in \f$ \mathrm{fm}^{2} \f$)
277  */
278  double K;
279 
280  /// The bag constant (in \f$ \mathrm{fm}^{-4} \f$)
281  double B0;
282 
283  /** \name The default quark objects
284 
285  The masses are automatically set in the constructor to
286  \c up_default_mass, \c down_default_mass, and
287  \c strange_default_mass.c
288  */
289  //@{
290  quark def_up;
291  quark def_down;
292  quark def_strange;
293  //@}
294 
295  /// Return string denoting type ("eos_quark_njl")
296  virtual const char *type() { return "eos_quark_njl"; }
297 
298  /// Set solver to use in set_parameters()
299  virtual int set_solver
301  jac_funct> &s) {
302  solver=&s;
303  return 0;
304  }
305 
306  /// A structure for passing parameters to the integrands
307  typedef struct njtp_s {
308  double ms, m, mu, temper, limit;
309  } njtp;
310 
311  /// Set integration object
312  virtual int set_inte(inte<> &i) {
313  it=&i;
314  return 0;
315  }
316 
317  /// The default solver
320 
321  /// The default integrator
323 
324  protected:
325 
326 #ifndef DOXYGEN_INTERNAL
327 
328  /// The integrator for finite temperature integrals
330 
331  /// The solver to use for set_parameters()
334 
335  /// Used by calc_B0() to compute the bag constant
336  int B0fun(size_t nv, const ubvector &x, ubvector &y);
337 
338  /// Calculates the contribution to the bag constant from quark \c q
339  void njbag(quark &q);
340 
341  /// The up quark
343  /// The down quark
345  /// The strange quark
347 
348  /// The integrand for the quark condensate
349  double iqq(double x, const njtp &pa);
350  /// The integrand for the density
351  double ide(double x, const njtp &pa);
352  /// The integrand for the energy density
353  double ied(double x, const njtp &pa);
354  /// The integrand for the pressure
355  double ipr(double x, const njtp &pa);
356 
357  /// The temperature for calc_temp_p()
358  double cp_temp;
359 
360 #endif
361 
362  };
363 
364 #ifndef DOXYGEN_NO_O2NS
365 }
366 #endif
367 
368 #endif
boost::numeric::ublas::matrix< double >
o2scl::eos_quark_njl::njbag
void njbag(quark &q)
Calculates the contribution to the bag constant from quark q.
o2scl::eos_quark_njl::gapfunms
int gapfunms(size_t nv, const ubvector &x, ubvector &y)
Calculates gap equations in y as a function of the constituent masses in x.
boost::numeric::ublas::vector< double >
o2scl::inte_qag_gsl
o2scl::eos_quark_njl::B0fun
int B0fun(size_t nv, const ubvector &x, ubvector &y)
Used by calc_B0() to compute the bag constant.
o2scl::eos_quark_njl::calc_eq_temp_p
int calc_eq_temp_p(quark &tu, quark &td, quark &ts, double &gap1, double &gap2, double &gap3, thermo &qb, double temper)
Equation of state and gap equations as a function of chemical potentials at finite temperature.
o2scl::eos_quark_njl::njtp
struct o2scl::eos_quark_njl::njtp_s njtp
A structure for passing parameters to the integrands.
o2scl::eos_quark_njl::calc_p
virtual int calc_p(quark &u, quark &d, quark &s, thermo &lth)
Equation of state as a function of chemical potentials.
o2scl::eos_quark_njl::def_it
inte_qag_gsl def_it
The default integrator.
Definition: eos_quark_njl.h:322
o2scl::eos_quark_njl::gapfunqqT
int gapfunqqT(size_t nv, const ubvector &x, ubvector &y)
Calculates gap equations in y as a function of the quark condensates in x.
o2scl::eos_quark_njl::ied
double ied(double x, const njtp &pa)
The integrand for the energy density.
o2scl::eos_quark_njl::up
quark * up
The up quark.
Definition: eos_quark_njl.h:342
o2scl::eos_quark_njl::calc_eq_e
virtual int calc_eq_e(quark &u, quark &d, quark &s, double &gap1, double &gap2, double &gap3, thermo &lth)
Equation of state and gap equations as a function of the densities.
o2scl::eos_quark_njl::gapfunqq
int gapfunqq(size_t nv, const ubvector &x, ubvector &y)
Calculates gap equations in y as a function of the quark condensates in x.
thermo_tl< double >
o2scl::eos_quark_njl::set_quarks
int set_quarks(quark &u, quark &d, quark &s)
Set the quark objects to use.
o2scl::eos_quark_njl::G
double G
The four-fermion coupling (in )
Definition: eos_quark_njl.h:273
o2scl::quark
o2scl::eos_quark_njl::type
virtual const char * type()
Return string denoting type ("eos_quark_njl")
Definition: eos_quark_njl.h:296
o2scl::eos_quark_njl::njtp_s
A structure for passing parameters to the integrands.
Definition: eos_quark_njl.h:307
o2scl::eos_quark_njl::def_solver
mroot_hybrids< mm_funct, boost::numeric::ublas::vector< double >, boost::numeric::ublas::matrix< double >, jac_funct > def_solver
The default solver.
Definition: eos_quark_njl.h:319
o2scl::eos_quark_njl::ide
double ide(double x, const njtp &pa)
The integrand for the density.
o2scl::eos_quark_njl::gapfunmsT
int gapfunmsT(size_t nv, const ubvector &x, ubvector &y)
Calculates gap equations in y as a function of the constituent masses in x.
o2scl::eos_quark_njl::ipr
double ipr(double x, const njtp &pa)
The integrand for the pressure.
o2scl::eos_quark_njl::limit
double limit
Accuracy limit for Fermi integrals for finite temperature.
Definition: eos_quark_njl.h:166
o2scl::eos_quark_njl::calc_temp_p
virtual int calc_temp_p(quark &u, quark &d, quark &s, double T, thermo &th)
Equation of state as a function of chemical potentials at finite temperature.
o2scl::eos_quark_njl::set_solver
virtual int set_solver(mroot< mm_funct, boost::numeric::ublas::vector< double >, jac_funct > &s)
Set solver to use in set_parameters()
Definition: eos_quark_njl.h:300
o2scl::mroot_hybrids
o2scl::eos_quark_njl
Nambu Jona-Lasinio EOS.
Definition: eos_quark_njl.h:136
o2scl::eos_quark_njl::it
inte * it
The integrator for finite temperature integrals.
Definition: eos_quark_njl.h:329
o2scl::mroot
o2scl::eos_quark_njl::K
double K
The 't Hooft six-fermion interaction coupling (in )
Definition: eos_quark_njl.h:278
o2scl::eos_quark
Quark matter equation of state base.
Definition: eos_quark.h:42
o2scl::mm_funct
std::function< int(size_t, const boost::numeric::ublas::vector< double > &, boost::numeric::ublas::vector< double > &) > mm_funct
o2scl::eos_quark_njl::calc_eq_p
virtual int calc_eq_p(quark &u, quark &d, quark &s, double &gap1, double &gap2, double &gap3, thermo &lth)
Equation of state and gap equations as a function of chemical potential.
o2scl::inte
o2scl::eos_quark_njl::set_parameters
virtual int set_parameters(double lambda=0.0, double fourferm=0.0, double sixferm=0.0)
Set the parameters and the bag constant B0.
o2scl::jac_funct
std::function< int(size_t, boost::numeric::ublas::vector< double > &, size_t, boost::numeric::ublas::vector< double > &, boost::numeric::ublas::matrix< double > &) > jac_funct
o2scl::eos_quark_njl::strange
quark * strange
The strange quark.
Definition: eos_quark_njl.h:346
o2scl::eos_quark_njl::cp_temp
double cp_temp
The temperature for calc_temp_p()
Definition: eos_quark_njl.h:358
o2scl::eos_quark_njl::iqq
double iqq(double x, const njtp &pa)
The integrand for the quark condensate.
o2scl::eos_quark_njl::solver
mroot< mm_funct, boost::numeric::ublas::vector< double >, jac_funct > * solver
The solver to use for set_parameters()
Definition: eos_quark_njl.h:333
o2scl::eos_quark_njl::set_inte
virtual int set_inte(inte<> &i)
Set integration object.
Definition: eos_quark_njl.h:312
o2scl::eos_quark_njl::down
quark * down
The down quark.
Definition: eos_quark_njl.h:344
o2scl::eos_quark_njl::B0
double B0
The bag constant (in )
Definition: eos_quark_njl.h:281
o2scl::eos_quark_njl::L
double L
The momentum cutoff (in )
Definition: eos_quark_njl.h:270
o2scl::eos_quark_njl::fromqq
bool fromqq
Calculate from quark condensates if true (default true)
Definition: eos_quark_njl.h:173

Documentation generated with Doxygen. Provided under the GNU Free Documentation License (see License Information).