hadronic_eos Class Reference

Hadronic equation of state [abstract base]. More...

#include <hadronic_eos.h>

Inheritance diagram for hadronic_eos:

eos hadronic_eos_eden hadronic_eos_pres hadronic_eos_temp ddc_eos gen_potential_eos schematic_eos sym4_eos tabulated_eos hadronic_eos_temp_eden hadronic_eos_temp_pres mdi4_eos apr_eos skyrme_eos rmf_eos apr4_eos skyrme4_eos rmf4_eos rmf_delta_eos

Detailed Description

Hadronic equation of state [abstract base].

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.

Idea for future:
Could write a function to compute the "symmetry free energy" or the "symmetry entropy"

Definition at line 66 of file hadronic_eos.h.


Public Member Functions

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)=0
 Equation of state as a function of the chemical potentials.
virtual int calc_e (fermion &n, fermion &p, thermo &th)=0
 Equation of state as a function of density.
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, int &pa)
 Calculate pressure of nuclear matter as a function of baryon density.
double calc_press_on2 (double nb, int &pa)
 Calculate pressure / baryon density squared in nuclear matter as a function of baryon density.
double calc_edensity (double delta, int &pa)
 Calculate energy density as a function of 'delta'.
double calc_esym (double nb, int &pa)
 Calculate symmetry energy as a function of 'delta'.
double calc_esym (double nb, bool &alt)
 Return the symmetry energy at density nb.
int saturation_matter_e (double x, double &y, int &pa)
 Solve for zero pressure as a function of baryon density.
Other functions
int nuc_matter_p (size_t nv, const ovector_base &x, ovector_base &y, double *&pa)
 Nucleonic matter from calc_p().
int nuc_matter_e (size_t nv, const ovector_base &x, ovector_base &y, double *&pa)
 Nucleonic matter from calc_e().
Set auxilliary objects
virtual int set_mroot (mroot< double *, mm_funct< double * > > &mr)
 Set class mroot object for use in calculating chemical potentials from densities.
virtual int set_sat_root (root< int, funct< int > > &mr)
 Set class mroot object for use calculating saturation density.
virtual int set_sat_deriv (deriv< int, funct< int > > &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.
fermion def_neutron
 The defaut neutron.
fermion def_proton
 The defaut proton.
Default solvers and derivative classes
gsl_deriv< int, funct< int > > def_deriv
 The default object for derivatives.
gsl_deriv< bool, funct< bool > > def_deriv2
 The second default object for derivatives.
gsl_mroot_hybrids< double
*, mm_funct< double * > > 
def_mroot
 The default solver.
cern_mroot_root< int, funct
< int > > 
def_sat_root
 The default solver for calculating the saturation density.

Protected Member Functions

double t1_fun (double barn, int &vp)
 Compute t1 for gradient_qij().
double t2_fun (double barn, int &vp)
 Compute t2 for gradient_qij().

Protected Attributes

mroot< double *, mm_funct
< double * > > * 
eos_mroot
 The EOS solver.
root< int, funct< int > > * sat_root
 The solver to compute saturation properties.
deriv< int, funct< int > > * 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

double calc_edensity ( double  delta,
int &  pa 
)

Calculate energy density as a function of 'delta'.

Used by fesym(), pa is unused.

double calc_esym ( double  nb,
bool &  alt 
)

Return the symmetry energy at density nb.

Used by fesym_slope().

double calc_esym ( double  nb,
int &  pa 
)

Calculate symmetry energy as a function of 'delta'.

Used by fsprime(), pa is unused.

double calc_press_on2 ( double  nb,
int &  pa 
)

Calculate pressure / baryon density squared in nuclear matter as a function of baryon density.

Used by fkprime(), pa is unused.

double calc_pressure ( double  nb,
int &  pa 
)

Calculate pressure of nuclear matter as a function of baryon density.

Used by fcomp(), pa is unused.

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_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 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}}{\partial 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 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 $

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

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.

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

Solve for zero pressure as a function of baryon density.

Used by fn0().

virtual int set_sat_deriv2 ( deriv< bool, funct< bool > > &  de  )  [virtual]

Set deriv object to use to find saturation properties.

Todo:
Document the distinction between this and set_sat_deriv().


Field Documentation

The default object for derivatives.

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

Definition at line 414 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 422 of file hadronic_eos.h.

gsl_mroot_hybrids<double *,mm_funct<double *> > def_mroot

The default solver.

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

Definition at line 430 of file hadronic_eos.h.

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 438 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.

Project hosting provided by SourceForge.net Logo, O2scl Sourceforge Project Page