hadronic_eos Class Reference

#include <hadronic_eos.h>

Inheritance diagram for hadronic_eos:

eos apr_eos ddc_eos gen_potential_eos rmf_eos schematic_eos skyrme_eos sym4_eos tabulated_eos

Detailed Description

Hadronic equation of state.

In the method documentation below, $ n $ is baryon number density, $ \epsilon $ is energy density, and $ P $ is pressure.

See more about Svprime in the Mathematica notebook at hadronic_eos.nb, and hadronic_eos.ps.

Todo:
Need to consider using denpar versus n_baryon and proton_frac. Maybe some of this can be simplified or improved?

Definition at line 67 of file hadronic_eos.h.


Switch for overloading [protected]

The integer 'provides' needs to be set by children corresponding to which calc() functions are overloaded. Use the above integers in combination with the bitwise or '|' operator. For example, in the constructor of a descendant, you might set
        provides=(provides_calc_e | provides_calc_temp_e);
for a class which does both zero and finite temperature calculations as a function of density.

int provides
static const int provides_calc_e = 1
static const int provides_calc_p = 2
static const int provides_calc_temp_e = 4
static const int provides_calc_temp_p = 8

Public Member Functions

virtual ~hadronic_eos ()
int gradient_qij (fermion &n, fermion &p, thermo &th, double &qnn, double &qnp, double &qpp, double &dqnndnn, double &dqnndnp, double &dqnpdnn, double &dqnpdnp, double &dqppdnn, double &dqppdnp)
 Calculate coefficients for gradient part of Hamiltonian.
virtual const char * type ()
 Return string denoting type ("hadronic_eos").
Equation of state
virtual int calc_p (fermion &n, fermion &p, thermo &th)
 Equation of state as a function of the chemical potentials.
virtual int calc_temp_p (fermion &n, fermion &p, const double T, thermo &th)
 Equation of state as a function of the chemical potentials at finite temperature.
virtual int calc_e (fermion &n, fermion &p, thermo &th)
 Equation of state as a function of density.
virtual int calc_temp_e (fermion &n, fermion &p, const double T, thermo &th)
 Equation of state as a function of densities at finite temperature.
Physical properties
virtual double fcomp (const double nb)
 Calculate compressibility of nuclear matter using calc_e().
virtual double feoa (const double nb, const double pf=0.5)
 Calculate binding energy using calc_e().
virtual double fesym (const double nb, const double pf=0.5)
 Calculate symmetry energy of matter using calc_e().
virtual double fesym_slope (const double nb, bool alt_sym=false)
 The symmetry energy slope parameter.
virtual double fesym_diff (const double nb)
 Calculate symmetry energy of matter as energy of neutron matter minus the energy of nuclear matter.
virtual double fsprime (const double nb, const double pf=0.5)
 Calculate $ S^{\prime} $ in matter using calc_e().
virtual double fkprime (const double nb)
 Calculate skewness of nuclear matter using calc_e().
virtual double fmsom (const double nb, const double pf=0.5)
 Calculate reduced neutron effective mass using calc_e().
virtual double fn0 (const double protfrac, double &leoa)
 Calculate saturation density using calc_e().
virtual int saturation ()
 Calculates all of the properties at the saturation density.
Functions for calculating physical properties
double calc_pressure (double nb, void *&pa)
 Calculate pressure as a function of baryon density.
double calc_press_on2 (double nb, void *&pa)
 Calculate pressure / baryon density squared as a function of baryon density.
double calc_edensity (double delta, void *&pa)
 Calculate energy density as a function of 'delta'.
double calc_esym (double delta, void *&pa)
 Calculate symmetry energy as a function of 'delta'.
int saturation_matter_e (double x, double &y, void *&pa)
 Solve for zero pressure as a function of baryon density.
Other functions
int nuc_matter_p (size_t nv, const ovector_view &x, ovector_view &y, void *&pa)
 Nucleonic matter from calc_p().
int nuc_matter_e (size_t nv, const ovector_view &x, ovector_view &y, void *&pa)
 Nucleonic matter from calc_e().
Set auxilliary objects
virtual int set_mroot (mroot< void *, mm_funct< void * > > &mr)
 Set class mroot object for use in calculating chemical potentials from densities.
virtual int set_sat_root (root< void *, funct< void * > > &mr)
 Set class mroot object for use calculating saturation density.
virtual int set_sat_deriv (deriv< void *, funct< void * > > &de)
 Set deriv object to use to find saturation properties.
virtual int set_sat_deriv2 (deriv< bool, funct< bool > > &de)
 Set deriv object to use to find saturation properties.
virtual int set_n_and_p (fermion &n, fermion &p)
 Set neutron and proton.

Data Fields

double eoa
 Binding energy.
double comp
 Compressibility.
double esym
 Symmetry energy.
double n0
 Saturation density.
double msom
 Effective mass.
double kprime
 Skewness.
double sprime
 Symmetry energy derivative.
gsl_deriv< void *,
funct< void * > > 
def_deriv
 The default object for derivatives.
gsl_deriv< bool,
funct< bool > > 
def_deriv2
 The second default object for derivatives.
fermion def_neutron
 The defaut neutron.
fermion def_proton
 The defaut proton.
gsl_mroot_hybrids
< void *, mm_funct
< void * > > 
def_mroot
 The default solver.
cern_mroot_root
< void *, funct
< void * > > 
def_sat_root
 The default solver for calculating the saturation density.

Protected Member Functions

double t1_fun (double barn, void *&vp)
 Compute t1 for gradient_qij().
double t2_fun (double barn, void *&vp)
 Compute t2 for gradient_qij().
double calc_esym (double nb, bool &alt)
 Return the symmetry energy at density nb.

Protected Attributes

mroot< void *,
mm_funct< void * > > * 
eos_mroot
 The EOS solver.
root< void *, funct
< void * > > * 
sat_root
 The solver to compute saturation properties.
deriv< void *, funct
< void * > > * 
sat_deriv
 The derivative object for saturation properties.
deriv< bool, funct
< bool > > * 
sat_deriv2
 The second derivative object for saturation properties.
fermionneutron
 The neutron object.
fermionproton
 The proton object.
double proton_frac
 Temporary proton fraction.
double n_baryon
 Temporary baryon number.

Member Function Documentation

virtual double fcomp ( const double  nb  )  [virtual]

Calculate compressibility of nuclear matter using calc_e().

The compression modulus is defined here by: $ \chi = -1/V (dV/dP) = 1/n (dP/dn)^{-1} $ It is customary to use the incompressibility modulus $ K=9/(n \chi) $ . This is the value denoted comp in the code and can be written: $ K = 9 n d^2 \epsilon /(d n^2) = 9 d P / (d n) $ . It is often referred to as the "compressibility" and is about 220 MeV at saturation density. (Taken from Chabanat, et. al. NPA 627 (1997) 710.) Note that this differs from $ K_2 = 9 n^2 d^2(\epsilon/n) / (d n^2) $ by $ 18 P/n $ at any density except the saturation density.

Reimplemented in apr_eos, and skyrme_eos.

virtual double feoa ( const double  nb,
const double  pf = 0.5 
) [virtual]

Calculate binding energy using calc_e().

eoa = (energy density/baryon number density-nucleon mass) at $ n=n_0 $ . $ E_b \approx -16/(\hbar c) $

virtual double fesym ( const double  nb,
const double  pf = 0.5 
) [virtual]

Calculate symmetry energy of matter using calc_e().

esym =

\[ \left(\frac{1}{2 n}\frac{d^2 \epsilon}{d \delta^2} \right)_{n=n_B,\delta=\delta_0} \]

where $ \delta=1-2 x $ , $ \delta_0=1-2 x $ and $ x $ is the proton fraction (for x=0.5 at saturation density, esym $ \approx 32/ \hbar c $ )

Reimplemented in skyrme_eos.

virtual double fesym_slope ( const double  nb,
bool  alt_sym = false 
) [virtual]

The symmetry energy slope parameter.

This returns the value of the "slope parameter" of the symmetry energy

\[ L=3 n_{B} \left(\frac{\partial E_{sym}}{n_{B}}\right) \]

in inverse Fermis.

where $ n_B $ is the baryon density. This ranges between about zero and 200 MeV for many EOSs. If alt_sym is false (the default), then fesym() is used to compute the symmetry energy, otherwise fesym_diff() is used.

virtual double fesym_diff ( const double  nb  )  [virtual]

Calculate symmetry energy of matter as energy of neutron matter minus the energy of nuclear matter.

This function returns the energy per baryon of neutron matter minus the energy per baryon of nuclear matter. This will deviate significantly from the results from fesym() only if the dependence of the symmetry energy on $ \delta $ is not quadratic.

Reimplemented in apr_eos.

virtual double fsprime ( const double  nb,
const double  pf = 0.5 
) [virtual]

Calculate $ S^{\prime} $ in matter using calc_e().

sprime =

\[ \left[n \frac{d}{d n} \left(\frac{1}{2 n}\frac{d^2 \epsilon}{d \delta^2} \right)\right]_{n=n_B,\delta=\delta_0} \]

where $ \delta=1-2 x $ , $ \delta_0=1-2 (\mathrm{pf}) $ and $ x $ is the proton fraction

virtual double fkprime ( const double  nb  )  [virtual]

Calculate skewness of nuclear matter using calc_e().

The skewness is defined to be $ 27 n^3 d^3 (\epsilon/n)/(d n^3) = 27 n^3 d^2 (P/n^2) / (d n^2) $

and is denoted 'kprime'. This definition seems to be ambiguous for densities other than the saturation density and is not quite analogous to the compressibility.

Reimplemented in skyrme_eos.

virtual double fmsom ( const double  nb,
const double  pf = 0.5 
) [virtual]

Calculate reduced neutron effective mass using calc_e().

Neutron effective mass (n.ms) divided by vacuum mass (n.m) in nuclear matter at saturation density. Note that this simply uses the value of n.ms from calc_e(), so that this effective mass could be either the Landau or Dirac mass depending on the context. Note that this may not be equal to the reduced proton effective mass.

virtual double fn0 ( const double  protfrac,
double &  leoa 
) [virtual]

Calculate saturation density using calc_e().

This function finds the density for which the pressure vanishes in matter with $ n_n=n_p $ .

$ n_0 $ = baryon number density at which $ P=0, n_0 \approx 0.16 $

int gradient_qij ( fermion n,
fermion p,
thermo th,
double &  qnn,
double &  qnp,
double &  qpp,
double &  dqnndnn,
double &  dqnndnp,
double &  dqnpdnn,
double &  dqnpdnp,
double &  dqppdnn,
double &  dqppdnp 
)

Calculate coefficients for gradient part of Hamiltonian.

Note:
This is still somewhat experimental.
We want the gradient part of the Hamiltonian in the form

\[ {\cal H}_{\mathrm{grad}} = \frac{1}{2} \sum_{i=n,p} \sum_{j=n,p} Q_{ij} \vec{\nabla} n_i \cdot \vec{\nabla} n_j \]

The expression for the gradient terms from Pethick95 is

\begin{eqnarray*} {\cal H}_{\mathrm{grad}}&=&-\frac{1}{4} \left(2 P_1 + P_{1;f}-P_{2;f}\right) \nonumber \\ && +\frac{1}{2} \left( Q_1+Q_2 \right) \left(n_n \nabla^2 n_n+n_p \nabla^2 n_p\right) \nonumber \\ && + \frac{1}{4}\left( Q_1-Q_2 \right) \left[\left(\nabla n_n\right)^2+\left(\nabla n_p\right)^2 \right] \nonumber \\ && + \frac{1}{2} \frac{d Q_2}{d n} \left( n_n \nabla n_n + n_p \nabla n_p \right) \cdot \nabla n \end{eqnarray*}

This can be rewritten

\begin{eqnarray*} {\cal H}_{\mathrm{grad}}&=&\frac{1}{2}\left(\nabla n\right)^2 \left[ \frac{3}{2} P_1+n \frac{d P_1}{d n}\right] \nonumber \\ && - \frac{3}{4} \left[ \left( \nabla n_n\right)^2 + \left( \nabla n_p \right)^2 \right] \nonumber \\ && -\frac{1}{2} \left[ \right] \cdot \nabla n \frac{d Q_1}{d n} \nonumber \\ && - \frac{1}{4} \left( \nabla n\right)^2 P_2 - \frac{1}{4} \left[ \left( \nabla n_n\right)^2 + \left( \nabla n_p \right)^2 \right] Q_2 \end{eqnarray*}

or

\begin{eqnarray*} {\cal H}_{\mathrm{grad}}&=&\frac{1}{4} \left( \nabla n\right)^2 \left[3 P_1 + 2 n \frac{d P_1}{d n}-P_2\right] \nonumber \\ && - \frac{1}{4} \left( 3 Q_1+Q_2 \right) \left[ \left( \nabla n_n\right)^2 + \left( \nabla n_p \right)^2 \right] \nonumber \\ && - \frac{1}{2} \frac{d Q_1}{d n} \left[ n_n \nabla n_n + n_p \nabla n_p \right] \cdot \nabla n \end{eqnarray*}

or

\begin{eqnarray*} {\cal H}_{\mathrm{grad}}&=&\frac{1}{4} \left( \nabla n\right)^2 \left[3 P_1 + 2 n \frac{d P_1}{d n}-P_2\right] \nonumber \\ && - \frac{1}{4} \left( 3 Q_1+Q_2 \right) \left[ \left( \nabla n_n\right)^2 + \left( \nabla n_p \right)^2 \right] \nonumber \\ && - \frac{1}{2} \frac{d Q_1}{d n} \left[ n_n \left( \nabla n_n \right)^2 + n_p \left( \nabla n_p \right)^2 + n \nabla n_n \cdot \nabla n_p \right] \end{eqnarray*}

Generally, for Skyrme-like interactions

\begin{eqnarray*} P_i &=& \frac{1}{4} t_i \left(1+\frac{1}{2} x_i \right) \nonumber \\ Q_i &=& \frac{1}{4} t_i \left(\frac{1}{2} + x_i \right) \, . \end{eqnarray*}

for $ i=1,2 $ .

This function uses the assumption $ x_1=x_2=0 $ to calculate $ t_1 $ and $ t_2 $ from the neutron and proton effective masses assuming the Skyrme form. The values of $ Q_{ij} $ and their derivatives are then computed.

The functions set_n_and_p() and set_thermo() will be called by gradient_qij(), to facilitate the use of the n, p, and th parameters.

double calc_pressure ( double  nb,
void *&  pa 
)

Calculate pressure as a function of baryon density.

Used by fcomp().

double calc_press_on2 ( double  nb,
void *&  pa 
)

Calculate pressure / baryon density squared as a function of baryon density.

Used by fkprime().

double calc_edensity ( double  delta,
void *&  pa 
)

Calculate energy density as a function of 'delta'.

Used by fesym().

double calc_esym ( double  delta,
void *&  pa 
)

Calculate symmetry energy as a function of 'delta'.

Used by fsprime().

int saturation_matter_e ( double  x,
double &  y,
void *&  pa 
)

Solve for zero pressure as a function of baryon density.

Used by fn0().

double calc_esym ( double  nb,
bool &  alt 
) [protected]

Return the symmetry energy at density nb.

Used by fesym_slope().


Field Documentation

gsl_deriv<void *,funct<void *> > def_deriv

The default object for derivatives.

The value of gsl_deriv::h is set to $ 10^{-3} $ in the hadronic_eos constructor.

Definition at line 409 of file hadronic_eos.h.

gsl_deriv<bool,funct<bool> > def_deriv2

The second default object for derivatives.

The value of gsl_deriv::h is set to $ 10^{-3} $ in the hadronic_eos constructor.

Definition at line 417 of file hadronic_eos.h.

gsl_mroot_hybrids<void *,mm_funct<void *> > def_mroot

The default solver.

Used by calc_e() and calc_temp_e() to solve nuc_matter_p() (2 variables) and by calc_p() and calc_temp_p() to solve nuc_matter_e() (2 variables).

Definition at line 432 of file hadronic_eos.h.

cern_mroot_root<void *,funct<void *> > def_sat_root

The default solver for calculating the saturation density.

Used by fn0() (which is called by saturation()) to solve saturation_matter_e() (1 variable).

Definition at line 440 of file hadronic_eos.h.


The documentation for this class was generated from the following file:
Documentation generated with Doxygen and provided under the GNU Free Documentation License. See License Information for details.