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

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