![]() |
Equation of State Sub-Library: Version 0.910
|
Hadronic equation of state [abstract base]. More...
#include <hadronic_eos.h>
Denote the number density of neutrons as , the number density of protons as
, the total baryon density
, the asymmetry
, the nuclear saturation density as
, and the quantity
. Then the energy per baryon of nucleonic matter matter can be written as an expansion around
where represents the quartic terms
(Adapted slightly from Piekarewicz09). From this, one can compute the energy density of nuclear matter , the chemical potentials
and the pressure
. This expansion motivates the definition of several separate terms. The binding energy
of symmetric nuclear matter (
) is around 16 MeV.
The compression modulus is usually defined by . In nuclear physics it has become common to use the incompressibility (or bulk) modulus with an extra factor of 9,
and refer to
simply as the incompressibility. Here, we define the function
This quantity is computed by the function fcomp() by computing the first derivative of the pressure, which is more numerically stable than the second derivative of the energy density (and most O2scl EOSs compute the pressure exactly). This function is typically evaluated at the point and is stored in comp. This quantity is not always the same as
, defined here as
We denote and similarly for
, the quantity in Eq. 1 above. In nuclear matter at saturation, the pressure is zero and
. See Chabanat97 for a discussion of this distinction.
The symmetry energy can be defined as
and the parameter in Eq. 1 is just
. Using
this can be rewritten
where the dependence of the chemical potentials on and
is not written explicitly. This quantity is computed by function fesym(). Note that many of the functions in this class are written in terms of the proton fraction
denoted as
'pf'
instead of as functions of . Frequently,
is evaluated at
to give a univariate function of the baryon density. It is sometimes also evaluated at the point
, and this value is denoted by
above and is typically stored in esym. Alternatively, one can define the symmetry energy by
which is computed by function fesym_diff() . The functions and
are equal when
terms are zero. In this case,
is proportional to
and so
The symmetry energy slope parameter , can be defined by
This can be rewritten as
(where the derivatives can be evaluated in either order) or alternatively using
can be rewritten
The third derivative with respect to the baryon density is sometimes called the skewness. Here, we define
and this function is computed in fkprime() .
The second derivative of the symmetry energy with respect to the baryon density is
The third derivative of the symmetry energy with respect to the baryon density is
Note that solving for the baryon density for which gives, to order
(Piekarewicz09)
The quartic symmetry energy can be defined as
However, fourth derivatives are difficult numerically, and so an alternative quantity is preferable. Instead, one can evaluate the extent to which terms are important from
as described in Steiner06 . This function can be expressed either in terms of or
Evaluating this function at the saturation density gives
(Note that is referred to as
in Steiner06). Sometimes it is useful to separate out the kinetic and potential parts of the energy density when computing
, and the class sym4_eos_base is useful for this purpose.
Definition at line 248 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. | |
EOS properties | |
virtual double | fcomp (double nb, const double &alpha=0.0) |
Calculate the incompressibility in ![]() | |
virtual double | feoa (double nb, const double &alpha=0.0) |
Calculate the energy per baryon in ![]() | |
virtual double | fesym (double nb, const double &alpha=0.0) |
Calculate symmetry energy of matter in ![]() | |
virtual double | fesym_err (double nb, double &alpha, double &unc) |
Calculate symmetry energy of matter and its uncertainty. | |
virtual double | fesym_slope (double nb, const double &alpha=0.0) |
The symmetry energy slope parameter. | |
virtual double | fesym_curve (double nb, const double &alpha=0.0) |
The curvature of the symmetry energy. | |
virtual double | fesym_skew (double nb, const double &alpha=0.0) |
The skewness of the symmetry energy. | |
virtual double | fesym_diff (double nb) |
Calculate symmetry energy of matter as energy of neutron matter minus the energy of nuclear matter. | |
virtual double | feta (double nb) |
The strength parameter for quartic terms in the symmetry energy. | |
virtual double | fkprime (double nb, const double &alpha=0.0) |
Calculate skewness of nuclear matter using calc_e() | |
virtual double | fmsom (double nb, const double &alpha=0.0) |
Calculate reduced neutron effective mass using calc_e() | |
virtual double | fn0 (double alpha, double &leoa) |
Calculate saturation density using calc_e() | |
virtual int | saturation () |
Calculates some of the EOS properties at the saturation density. | |
Functions for calculating physical properties | |
double | calc_dmu_alpha (double alpha, const double &nb) |
Compute the difference between neutron and proton chemical potentials as a function of the isospin asymmetry. | |
double | calc_musum_alpha (double alpha, const double &nb) |
Compute the sum of the neutron and proton chemical potentials as a function of the isospin asymmetry. | |
double | calc_pressure_nb (double nb, const double &alpha=0.0) |
Compute the pressure as a function of baryon density at fixed isospin asymmetry. | |
double | calc_edensity_nb (double nb, const double &alpha=0.0) |
Compute the energy density as a function of baryon density at fixed isospin asymmetry. | |
void | const_pf_derivs (double nb, double pf, double &dednb_pf, double &dPdnb_pf) |
Compute derivatives at constant proton fraction. | |
double | calc_press_over_den2 (double nb, const double &alpha=0.0) |
Calculate pressure / baryon density squared in nuclear matter as a function of baryon density at fixed isospin asymmetry. | |
double | calc_edensity_alpha (double alpha, const double &nb) |
Calculate energy density as a function of the isospin asymmetry at fixed 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< mm_funct<> > &mr) |
Set class mroot object for use in calculating chemical potentials from densities. | |
virtual int | set_sat_root (root< funct > &mr) |
Set class mroot object for use calculating saturation density. | |
virtual int | set_sat_deriv (deriv< funct > &de) |
Set deriv object to use to find saturation properties. | |
virtual int | set_sat_deriv2 (deriv< funct > &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 (neutron) | |
double | kprime |
Skewness. | |
fermion | def_neutron |
The defaut neutron. | |
fermion | def_proton |
The defaut proton. | |
Default solvers and derivative classes | |
gsl_deriv< funct > | def_deriv |
The default object for derivatives. | |
gsl_deriv< funct > | def_deriv2 |
The second default object for derivatives. | |
gsl_mroot_hybrids< mm_funct<> > | def_mroot |
The default solver. | |
cern_mroot_root< funct > | def_sat_root |
The default solver for calculating the saturation density. | |
Protected Member Functions | |
double | t1_fun (double barn) |
Compute t1 for gradient_qij(). | |
double | t2_fun (double barn) |
Compute t2 for gradient_qij(). | |
Protected Attributes | |
mroot< mm_funct<> > * | eos_mroot |
The EOS solver. | |
root< funct > * | sat_root |
The solver to compute saturation properties. | |
deriv< funct > * | sat_deriv |
The derivative object for saturation properties. | |
deriv< funct > * | sat_deriv2 |
The second derivative object for saturation properties. | |
fermion * | neutron |
The neutron object. | |
fermion * | proton |
The proton object. |
virtual double hadronic_eos::fcomp | ( | double | nb, |
const double & | alpha = 0.0 |
||
) | [virtual] |
This function computes . The value of
, often referred to as the "compressibility", is stored in comp by saturation() and is about 240 MeV at saturation density.
virtual double hadronic_eos::feoa | ( | double | nb, |
const double & | alpha = 0.0 |
||
) | [virtual] |
This function computes the energy per baryon of matter without the nucleon rest masses at the specified baryon density, nb
, and isospin asymmetry alpha
.
virtual double hadronic_eos::fesym | ( | double | nb, |
const double & | alpha = 0.0 |
||
) | [virtual] |
This function computes the symmetry energy,
at the value of given in
nb
and given in
alpha
. The symmetry energy at at the saturation density and is stored in esym by saturation().
virtual double hadronic_eos::fesym_err | ( | double | nb, |
double & | alpha, | ||
double & | unc | ||
) | [virtual] |
This estimates the uncertainty due to the numerical differentiation, assuming that difference betwen the neutron and proton chemical potentials is computed exactly by calc_dmu_alpha() .
virtual double hadronic_eos::fesym_slope | ( | double | nb, |
const double & | alpha = 0.0 |
||
) | [virtual] |
This returns the value of the "slope parameter" of the symmetry energy
in inverse Fermis.
where is the baryon density. This ranges between about zero and 200 MeV for many EOSs.
virtual double hadronic_eos::fesym_diff | ( | double | nb | ) | [virtual] |
virtual double hadronic_eos::fkprime | ( | double | nb, |
const double & | alpha = 0.0 |
||
) | [virtual] |
The skewness is defined to be 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.
virtual double hadronic_eos::fmsom | ( | double | nb, |
const double & | alpha = 0.0 |
||
) | [virtual] |
Neutron effective mass (as stored in part::ms) divided by vacuum mass (as stored in part::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 hadronic_eos::fn0 | ( | double | alpha, |
double & | leoa | ||
) | [virtual] |
This function finds the baryon density for which the pressure vanishes.
virtual int hadronic_eos::saturation | ( | ) | [virtual] |
Reimplemented in rmf_eos, and rmf_delta_eos.
int hadronic_eos::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 | ||
) |
We want the gradient part of the Hamiltonian in the form
The expression for the gradient terms from Pethick95 is
This can be rewritten
or
or
Generally, for Skyrme-like interactions
for .
This function uses the assumption to calculate
and
from the neutron and proton effective masses assuming the Skyrme form. The values of
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 hadronic_eos::calc_pressure_nb | ( | double | nb, |
const double & | alpha = 0.0 |
||
) |
Used by fcomp().
double hadronic_eos::calc_edensity_nb | ( | double | nb, |
const double & | alpha = 0.0 |
||
) |
This function calls hadronic_eos::calc_e() with the internally stored neutron and proton objects.
double hadronic_eos::calc_press_over_den2 | ( | double | nb, |
const double & | alpha = 0.0 |
||
) |
Used by fkprime().
double hadronic_eos::calc_edensity_alpha | ( | double | alpha, |
const double & | nb | ||
) |
Used by fesym().
This function calls hadronic_eos::calc_e() with the internally stored neutron and proton objects.
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().
The value of gsl_deriv::h is set to in the hadronic_eos constructor.
Definition at line 608 of file hadronic_eos.h.
The value of gsl_deriv::h is set to in the hadronic_eos constructor.
Definition at line 615 of file hadronic_eos.h.
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 622 of file hadronic_eos.h.
Used by fn0() (which is called by saturation()) to solve saturation_matter_e() (1 variable).
Definition at line 630 of file hadronic_eos.h.
Documentation generated with Doxygen. Provided under the GNU Free Documentation License (see License Information).