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

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 (double nb)
 Calculate compressibility of nuclear matter using calc_e().
virtual double feoa (double nb, double pf=0.5)
 Calculate binding energy using calc_e().
virtual double fesym (double nb, double pf=0.5)
 Calculate symmetry energy of matter using calc_e().
virtual double fesym_slope (double nb, bool alt_sym=false)
 The symmetry energy slope parameter.
virtual double fesym_diff (double nb)
 Calculate symmetry energy of matter as energy of neutron matter minus the energy of nuclear matter.
virtual double fsprime (double nb, double pf=0.5)
 Calculate $ S^{\prime} $ in matter using calc_e().
virtual double fkprime (double nb)
 Calculate skewness of nuclear matter using calc_e().
virtual double fmsom (double nb, double pf=0.5)
 Calculate reduced neutron effective mass using calc_e().
virtual double fn0 (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 the second 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 
)

Used by fesym(), pa is unused.

double calc_esym ( double  nb,
bool &  alt 
)

Used by fesym_slope().

double calc_esym ( double  nb,
int &  pa 
)

Used by fsprime(), pa is unused.

double calc_press_on2 ( double  nb,
int &  pa 
)

Used by fkprime(), pa is unused.

double calc_pressure ( double  nb,
int &  pa 
)

Used by fcomp(), pa is unused.

virtual double fcomp ( double  nb  )  [virtual]

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 ( double  nb,
double  pf = 0.5 
) [virtual]

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

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

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 ( double  nb  )  [virtual]

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 ( double  nb,
bool  alt_sym = false 
) [virtual]

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 ( double  nb  )  [virtual]

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 ( double  nb,
double  pf = 0.5 
) [virtual]

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 ( double  protfrac,
double &  leoa 
) [virtual]

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 ( double  nb,
double  pf = 0.5 
) [virtual]

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 
)

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 
)

Used by fn0().

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

Computing the slope of the symmetry energy at the saturation density requires two derivative objects, because it has to take an isospin derivative and a density derivative. Thus this second deriv object is used in the function fesym_slope().


Field Documentation

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

Definition at line 419 of file hadronic_eos.h.

gsl_deriv<bool,funct<bool> > def_deriv2

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

Definition at line 427 of file hadronic_eos.h.

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

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 435 of file hadronic_eos.h.

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

Definition at line 443 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