Class eos_quark_njl (o2scl)

O2scl : Class List

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 to false.

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 than exp(-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 coupling fourferm and the six-fermion coupling from the ‘t Hooft interaction sixferm . 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().

The default quark objects

The masses are automatically set in the constructor to up_default_mass, down_default_mass, and strange_default_mass.c

quark def_up
quark def_down
quark def_strange
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()

inline virtual int set_inte(inte<> &i)

Set integration object.

Protected functions and variables

inte *it

The integrator for finite temperature integrals.

mroot<mm_funct, boost::numeric::ublas::vector<double>, jac_funct> *solver

The solver to use for set_parameters()

quark *up

The up quark.

quark *down

The down quark.

quark *strange

The strange quark.

int B0_func(size_t nv, const ubvector &x, ubvector &y)

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 &lth)

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 &lth)

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 &lth)

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)

Calculates gap equations in y as a function of the constituent masses in x.

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)

Calculates gap equations in y as a function of the quark condensates in x.

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)

Calculates gap equations in y as a function of the constituent masses in x.

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)

Calculates gap equations in y as a function of the quark condensates in x.

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

eos_quark_njl()

Class constructor.