Class eos_quark_njl (o2scl)¶
-
class eos_quark_njl : public o2scl::eos_quark¶
Nambu Jona-Lasinio EOS.
This class is based on [Buballa99], but the notation is a bit different. The effective mass is denoted \(m^{*}\) rather than \(m\), and the bare mass is denoted \(m\) rather than \(m_0\).
The quantities G, and K are the coupling constants and L (i.e. \( \Lambda \)) is the three-momentum cutoff. In order to use the EOS, the user should either (i) set the bag constant, B0 directly, or (ii) use set_parameters() to modify the parameters (and then the set_parameters() function also automatically computes the bag constant).
This class can compute the EOS from the quark condensates (stored in o2scl::quark::qq) by setting from_qq to
true
(this is the default) or from the dynamical masses (denoted \( m_i^{*} \) and stored in o2scl::part_tl::ms) by setting from_qq tofalse
.The Fermi gas-like contribution to the pressure due plus the the contribution from the bag pressure is stored in o2scl::part_tl::pr . For the \( T=0 \) EOS, the energy density for each quark is set so that \( \varepsilon + P = \mu n \) .
The Lagrangian is
\[ {\cal L} = \bar q ( i \partial{\hskip-2.0mm}/ - {\hat m_0}) q \;+\; G \sum_{k=0}^8 [\,({\bar q}\lambda_k q)^2 + ({\bar q} i\gamma_5\lambda_k q)^2\,] + {\cal L}_6 \]\[ {\cal L}_6 = - K \,[ \,{\rm det}_f ({\bar q}(1+\gamma_5) q) + {\rm det}_f ({\bar q}(1-\gamma_5) q) \,] \, . \]Finite T documentation
This implementation includes contributions from antiquarks.
Zero temperature
In the mean-field approximation, the corresponding thermodynamic potential at \( T=0 \) is
\[ \Omega = \Omega_{FG} + \Omega_{\mathrm{int}} \]where \(\Omega_{\mathrm{FG}}\) is the Fermi gas contribution and \(\Omega_{\mathrm{int}}\) is the contribution from interactions. \(\Omega_{\mathrm{int}}\) is\[ \frac{\Omega_{\mathrm{int}}}{V} = - 2 N_c \sum_{i=u,d,s} \int \frac {d^3p}{(2\pi)^3} \sqrt{m_i^{*2} + p^2} + \frac{\Omega_{V}}{V} \, . \]The lst term is the vacuum contribution, \(\Omega_{V}\):\[ \frac{\Omega_{V}}{V} = \sum_{i=u,d,s} 2 G \langle\bar{q}_i q_i \rangle^2 - 4 K \langle \bar{q}_u q_u \rangle \langle \bar{q}_d q_d \rangle \langle \bar{q}_s q_s \rangle + B_0\,. \]where \(B_0\) is a constant defined to ensure that the energy density and the pressure of the vacuum is zero.Unlike [Buballa99], the bag constant, \(\Omega_{\mathrm{int}}/V\) is defined without the term
\[ \sum_{i=u,d,s} 2 N_C \int_0^{\Lambda} \frac{d^3 p}{(2 \pi)^3} \sqrt{ m_{i}^2+p^2 } ~dp \]where \( m_i \) is the bare mass, since this allows an easier comparison to the finite temperature EOS. The constant \(B_0\) in this case is therefore significantly larger, but the energy density and pressure are still zero in the vacuum.Finite Temperature
The thermodynamic potential (including the contribution from antiquarks) in the mean-field approximation is
\[\begin{split}\begin{eqnarray*} \Omega &=& 6 \sum_{i=u,d,s} \int_0^{\Lambda} \frac {d^3p}{(2\pi)^3} \left\{ E_i^{*} + T \log \left[ 1 + \exp (-E^{*}_i+\mu_i)/T \right] + T \log \left[ 1 + \exp (-E^{*}_i-\mu_i)/T \right] \right\} \nonumber \\ && - \sum_{i=u,d,s} 2 G \langle\bar{q}_i q_i \rangle^2 + 4 K \langle \bar{q}_u q_u \rangle \langle \bar{q}_d q_d \rangle \langle \bar{q}_s q_s \rangle + B_0 \end{eqnarray*}\end{split}\]where \( E_i^{*} \equiv \sqrt{m_i^{* 2}+p^2} \) . The quark densities are\[ n_i = 6 \int_0^{\Lambda} \frac{d^3p}{(2\pi)^3} \left\{ \left[ \frac{1}{1 + \exp (E_i^{*}-\mu_i)/T} \right] - \left[ \frac{1}{1 + \exp (E_i^{*}+\mu_i)/T} \right] \right\} \, , \]and the quark condensates are\[ \langle \bar{q}_i q_i \rangle = - 6 \int_0^{\Lambda} \frac {d^3p}{(2\pi)^3} \frac{m_i^{*} k^2}{E_i^{*}} \left[ 1 - \frac{1}{1 + \exp (E^{*}_i-\mu_i)/T} - \frac{1}{1 + \exp (E^{*}_i+\mu_i)/T} \right] \, . \]See, e.g. [Hatsuda94] or [Alaverdyan21].
The Feynman-Hellman theorem [Bernard88], gives
\[ \left< \bar{q} q \right> = \frac{\partial m^{*}}{\partial m} \]The functions calc_e() and calc_p() never return a value other than zero, but will give nonsensical results for nonsensical inputs.
References
This class was created for [Steiner00]. See also [Bernard88], [Hatsuda94], [Buballa99], and [Alaverdyan21].
Todo
In class eos_quark_njl: better documentation.
future Remove the stored quark pointers if they are unnecessary?
Note
This code does not currently check to see if \( k_F>\Lambda \) and thus gives unphysical results at higher densities.
Subclassed by o2scl::eos_quark_cfl, o2scl::eos_quark_njl_vec
Settings
-
int verbose¶
Verbosity parameter.
-
bool err_on_fail¶
If true, call the error handler when the solver fails to converge (default true)
-
double limit¶
Accuracy limit for Fermi integrals for finite temperature (default 20)
limit is used for the finite temperature integrals to ensure that no numbers larger than
exp(limit)
or smaller thanexp(-limit)
are avoided.
-
bool from_qq¶
Determine variables for solver (default true)
If this is false, then the internal solvers use the effective masses as variables, otherwise, the quark condensates are used as variables. The two forms are equivalent, but having both versions can be useful for testing.
NJL model parameters
-
double L¶
The momentum cutoff, \( \Lambda \) (in \( \mathrm{fm}^{-1} \))
-
double G¶
The four-fermion coupling (in \( \mathrm{fm}^{2} \))
-
double K¶
The ‘t Hooft six-fermion interaction coupling (in \( \mathrm{fm}^{5} \))
-
double B0¶
The bag constant (in \( \mathrm{fm}^{-4} \))
-
virtual int set_parameters(double lambda = 0.0, double fourferm = 0.0, double sixferm = 0.0)¶
Set the parameters and the bag constant
B0
.This function allows the user to specify the momentum cutoff,
lambda
, the four-fermion couplingfourferm
and the six-fermion coupling from the ‘t Hooft interactionsixferm
. If 0.0 is given for any of the values, then the default is used ( \( \Lambda=602.3/(\hbar c), G=1.835/\Lambda^2, K=12.36/\Lambda^5 \)).The value of the shift in the bag constant
B0
is automatically calculated to ensure that the energy density and the pressure of the vacuum are zero. The functions set_quarks() and set_thermo() can be used before hand to specify the quark and thermo objects.
The default quark masses (in inverse femtometers)
These default masses are taken from [Buballa99], where they were used to fix the pion and kaon decay constants, and the pion, kaon, and eta prime masses.
They are set in the constructor. The default values are 5.5 MeV for the up and down quark and 140.7 MeV for the strange quark (then divided by o2scl_const::hc_mev_fm for the conversion).
-
double up_default_mass¶
-
double down_default_mass¶
-
double strange_default_mass¶
-
int set_quarks(quark &u, quark &d, quark &s)¶
Set the quark objects to use.
The quark objects are used in gap_func_ms(), gap_func_qq(), gap_func_ms_T(), gap_func_qq_T(), and B0_func().
-
inline virtual const char *type()¶
Return string denoting type (“eos_quark_njl”)
Numerical methods
-
mroot_hybrids<mm_funct, boost::numeric::ublas::vector<double>, boost::numeric::ublas::matrix<double>, jac_funct> def_solver¶
The default solver.
-
inte_qag_gsl def_it¶
The default integrator.
-
inline virtual int set_solver(mroot<mm_funct, boost::numeric::ublas::vector<double>, jac_funct> &s)¶
Set solver to use in set_parameters()
Protected functions and variables
-
mroot<mm_funct, boost::numeric::ublas::vector<double>, jac_funct> *solver¶
The solver to use for set_parameters()
-
int B0_func(size_t nv, const ubvector &x, ubvector &y, o2scl::thermo &th)¶
Used by calc_B0() to compute the bag constant.
-
void njl_bag(quark &q)¶
Calculates the contribution to the bag constant from quark
q
.This function evaluates the integral
\[ I = 6 \int_0^{\Lambda} \frac{d^3 p}{(2 \pi)^3} \sqrt{m^{*2}+p^2}~dp \]This is part of the bag pressure (at zero temperature) as given in Eq. 5 of [Buballa99].
This function is used in calc_eq_p() and calc_eq_e() .
-
double integ_qq(double x, double T, double mu, double m, double ms)¶
The integrand for the quark condensate.
-
double integ_density(double x, double T, double mu, double m, double ms)¶
The integrand for the density.
-
double integ_edensity(double x, double T, double mu, double m, double ms)¶
The integrand for the energy density.
-
double integ_pressure(double x, double T, double mu, double m, double ms)¶
The integrand for the pressure.
Zero-temperature EOS
-
virtual int calc_p(quark &u, quark &d, quark &s, thermo <h)¶
Equation of state as a function of chemical potentials.
This function automatically solves the gap equations.
-
virtual int calc_eq_p(quark &u, quark &d, quark &s, double &gap1, double &gap2, double &gap3, thermo <h)¶
Equation of state and gap equations as a function of chemical potential.
-
virtual int calc_eq_e(quark &u, quark &d, quark &s, double &gap1, double &gap2, double &gap3, thermo <h)¶
Equation of state and gap equations as a function of the densities.
-
virtual double f_therm_pot(double qqu, double qqd, double qqs, double msu, double msd, double mss, bool vac_terms = true)¶
Compute the thermodynamic potential at \( T=0 \).
Finite-temperature EOS
-
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.
This function automatically solves the gap equations.
-
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.
-
virtual double f_therm_pot_T(double qqu, double qqd, double qqs, double msu, double msd, double mss, double T, bool vac_terms = true)¶
Compute the thermodynamic potential at \( T>0 \).
Gap equations
-
int gap_func_ms(size_t nv, const ubvector &x, ubvector &y, thermo &th)¶
Calculates gap equations in
y
as a function of the constituent masses inx
.The function utilizes the quark objects which can be specified in set_quarks() and the thermo object which can be specified in eos::set_thermo().
-
int gap_func_qq(size_t nv, const ubvector &x, ubvector &y, thermo &th)¶
Calculates gap equations in
y
as a function of the quark condensates inx
.The function utilizes the quark objects which can be specified in set_quarks() and the thermo object which can be specified in eos::set_thermo().
-
int gap_func_ms_T(size_t nv, const ubvector &x, ubvector &y, double T, thermo &th)¶
Calculates gap equations in
y
as a function of the constituent masses inx
.The function utilizes the quark objects which can be specified in set_quarks() and the thermo object which can be specified in eos::set_thermo().
-
int gap_func_qq_T(size_t nv, const ubvector &x, ubvector &y, double T, thermo &th)¶
Calculates gap equations in
y
as a function of the quark condensates inx
.The function utilizes the quark objects which can be specified in set_quarks() and the thermo object which can be specified in eos::set_thermo().
Public Types
-
typedef boost::numeric::ublas::vector<double> ubvector¶
Public Functions
Compute the EOS in beta-equilibrium at zero temperature.
This solves the function \ref solve_beta_eq_T0() . This function is different from \ref o2scl::nstar_cold because it is a generic interface which works for non-hadronic EOSs.
-
eos_quark_njl()¶
Class constructor.