Skyrme hadronic equation of state. More...
Equation of state of nucleonic matter based on the Skryme interaction from Skyrme59 .
The Hamiltonian is defined (using the notation of Steiner05b )
The kinetic terms are:
where is the Fermi gas energy density of particle
.
The potential terms are:
The gradient terms are displayed here for completeness even though they are not computed in the code:
The values give the standard definition of the Skyrme Hamiltonian Skyrme59, while
contains the modifications suggested by Onsi94.
The spin-orbit term is (following Steiner05)
where sometimes the terms are not included. Alternatively, one can separate the isoscalar and isovector parts in the first term
then the earlier Skyrme interactions have . For example, for SLy4,
.
Also, couple useful definitions
and
Quantities which have units containing powers of energy are divided by to ensure all quantities are in units of
. The
and
are unitless, while the original units of the
are:
These are stored internally with units of:
The functions for the usual saturation properties are based partly on Brack85.
Models are taken from the references: Bartel79, Beiner75, Chabanat95, Chabanat97, Danielewicz08, Dobaczewski94, Dutta86, Friedrich86, Onsi94, Reinhard95, and Tondeur84, and VanGiai81 .
The variables and
contain the expressions
and
respectively, where
is the potential part of the single particle energy for particle i (i.e. the derivative of the Hamiltonian w.r.t. density while energy density held constant). Equivalently,
is just
.
Definition at line 224 of file eos_had_skyrme.h.
#include <eos_had_skyrme.h>
Public Member Functions | |
int | calpar (double gt0=-10.0, double gt3=70.0, double galpha=0.2, double gt1=2.0, double gt2=-1.0) |
Calculate ![]() ![]() | |
int | check_landau (double nb, double m) |
Check the Landau parameters for instabilities. More... | |
void | landau_nuclear (double n0, double m, double &f0, double &g0, double &f0p, double &g0p, double &f1, double &g1, double &f1p, double &g1p) |
Calculate the Landau parameters for nuclear matter. More... | |
void | landau_neutron (double n0, double m, double &f0, double &g0, double &f1, double &g1) |
Calculate the Landau parameters for neutron matter. More... | |
virtual const char * | type () |
Return string denoting type ("eos_had_skyrme") | |
void | alt_params_set (double Crr00, double Crr10, double Crr0D, double Crr1D, double Crt0, double Crt1, double CrDr0, double CrDr1, double CrnJ0, double CrnJ1, double alpha2) |
Set using alternate parameterization. More... | |
void | alt_params_get (double &Crr00, double &Crr10, double &Crr0D, double &Crr1D, double &Crt0, double &Crt1, double &CrDr0, double &CrDr1, double &CrnJ0, double &CrnJ1, double &alpha2) |
Get alternate parameterization. More... | |
Basic usage | |
eos_had_skyrme () | |
Create a blank Skyrme EOS. | |
virtual | ~eos_had_skyrme () |
Destructor. | |
virtual int | calc_temp_e (fermion &ne, fermion &pr, double temper, thermo &th) |
Equation of state as a function of densities. More... | |
virtual int | calc_e (fermion &ne, fermion &pr, thermo <) |
Equation of state as a function of density. | |
Saturation properties | |
These calculate the various saturation properties exactly from the parameters at any density. These routines often assume that the neutron and proton masses are equal. | |
virtual double | feoa (double nb) |
Calculate binding energy. More... | |
virtual double | fmsom (double nb) |
Calculate effective mass. More... | |
virtual double | fcomp (double nb) |
Calculate compressibility. More... | |
virtual double | fesym (double nb, double alpha=0.0) |
Calculate symmetry energy. More... | |
virtual double | fkprime (double nb) |
skewness More... | |
![]() | |
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, double T, thermo &th) |
Equation of state as a function of the chemical potentials at finite temperature. | |
![]() | |
virtual int | calc_liqgas_dens_temp_e (fermion &n1, fermion &p1, fermion &n2, fermion &p2, double T, thermo &th1, thermo &th2) |
Compute liquid-gas phase transition densities using eos_had_temp_base::calc_temp_e() . More... | |
virtual int | calc_liqgas_temp_e (fermion &n1, fermion &p1, fermion &n2, fermion &p2, double nB, double Ye, double T, thermo &th1, thermo &th2, double &chi) |
Compute the liquid-gas phase transition using eos_had_temp_base::calc_temp_e() . More... | |
virtual int | calc_liqgas_beta_temp_e (fermion &n1, fermion &p1, fermion &n2, fermion &p2, double nB, double T, thermo &th1, thermo &th2, double &Ye, double &chi) |
Compute the liquid-gas phase transition in beta-equilibrium using eos_had_temp_base::calc_temp_e() . More... | |
virtual double | fesym_T (double nb, double T, double delta=0.0) |
Compute the symmetry energy at finite temperature. | |
virtual double | fsyment_T (double nb, double T, double delta=0.0) |
Compute the symmetry entropy at finite temperature. | |
virtual void | set_fermion_eval_thermo (fermion_eval_thermo &f) |
Computing finite-temperature integrals. More... | |
![]() | |
virtual double | fcomp (double nb, double delta=0.0) |
Calculate the incompressibility in ![]() | |
virtual double | fcomp_err (double nb, double delta, double &unc) |
Compute the incompressibility and its uncertainty. More... | |
virtual double | feoa (double nb, double delta=0.0) |
Calculate the energy per baryon in ![]() | |
virtual double | fesym_err (double nb, double delta, double &unc) |
Calculate symmetry energy of matter and its uncertainty. More... | |
virtual double | fesym_slope (double nb, double delta=0.0) |
The symmetry energy slope parameter. More... | |
virtual double | fesym_curve (double nb, double delta=0.0) |
The curvature of the symmetry energy. | |
virtual double | fesym_skew (double nb, double delta=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. More... | |
virtual double | feta (double nb) |
The strength parameter for quartic terms in the symmetry energy. | |
virtual double | feta_prime (double nb) |
The derivative of the strength parameter for quartic terms in the symmetry energy. | |
virtual double | fkprime (double nb, double delta=0.0) |
Calculate skewness of nuclear matter using calc_e() More... | |
virtual double | fmsom (double nb, double delta=0.0) |
Calculate reduced neutron effective mass using calc_e() More... | |
virtual double | f_effm_neut (double nb, double delta=0.0) |
Neutron effective mass. | |
virtual double | f_effm_prot (double nb, double delta=0.0) |
Proton effective mass. | |
virtual double | f_effm_scalar (double nb, double delta=0.0) |
Scalar effective mass. More... | |
virtual double | f_effm_vector (double nb, double delta=0.0) |
Vector effective mass. More... | |
virtual double | fn0 (double delta, double &leoa) |
Calculate saturation density using calc_e() More... | |
virtual void | saturation () |
Calculates some of the EOS properties at the saturation density. More... | |
double | calc_dmu_delta (double delta, double nb) |
Compute the difference between neutron and proton chemical potentials as a function of the isospin asymmetry. More... | |
double | calc_musum_delta (double delta, double nb) |
Compute the sum of the neutron and proton chemical potentials as a function of the isospin asymmetry. More... | |
double | calc_pressure_nb (double nb, double delta=0.0) |
Compute the pressure as a function of baryon density at fixed isospin asymmetry. More... | |
double | calc_edensity_nb (double nb, double delta=0.0) |
Compute the energy density as a function of baryon density at fixed isospin asymmetry. More... | |
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, double delta=0.0) |
Calculate pressure / baryon density squared in nuclear matter as a function of baryon density at fixed isospin asymmetry. More... | |
double | calc_edensity_delta (double delta, double nb) |
Calculate energy density as a function of the isospin asymmetry at fixed baryon density. More... | |
int | nuc_matter_p (size_t nv, const ubvector &x, ubvector &y, double nn0, double np0) |
Solve for the chemical potentials given the densities. More... | |
int | nuc_matter_e (size_t nv, const ubvector &x, ubvector &y, double mun0, double mup0) |
Solve for the densities given the chemical potentials. More... | |
virtual void | set_mroot (mroot<> &mr) |
Set class mroot object for use in calculating chemical potentials from densities. More... | |
virtual void | set_sat_root (root<> &mr) |
Set class mroot object for use calculating saturation density. More... | |
virtual void | set_sat_deriv (deriv_base<> &de) |
Set deriv_base object to use to find saturation properties. | |
virtual void | set_sat_deriv2 (deriv_base<> &de) |
Set the second deriv_base object to use to find saturation properties. More... | |
virtual void | set_n_and_p (fermion &n, fermion &p) |
Set neutron and proton. | |
void | 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. More... | |
![]() | |
virtual void | set_thermo (thermo &th) |
Set class thermo object. | |
virtual const thermo & | get_thermo () |
Get class thermo object. | |
Data Fields | |
double | W0 |
Spin-orbit splitting (in ![]() | |
double | b4 |
Isoscalar spin-orbit term (in ![]() | |
double | b4p |
Isovector spin-orbit term (in ![]() | |
std::string | reference |
Bibliographic reference. | |
bool | parent_method |
Use eos_had_base methods for saturation properties. More... | |
bool | mu_at_zero_density |
If true, compute the chemical potentials even at zero density. | |
Basic Skyrme model parameters | |
double | t0 |
double | t1 |
double | t2 |
double | t3 |
double | x0 |
double | x1 |
double | x2 |
double | x3 |
double | alpha |
double | a |
double | b |
![]() | |
fermion_eff | def_fet |
Default fermion thermodynamics object. | |
![]() | |
double | eoa |
Binding energy. | |
double | comp |
Compression modulus. | |
double | esym |
Symmetry energy. | |
double | n0 |
Saturation density. | |
double | msom |
Effective mass (neutron) | |
double | kprime |
Skewness. | |
fermion | def_neutron |
The defaut neutron. More... | |
fermion | def_proton |
The defaut proton. More... | |
deriv_gsl | def_deriv |
The default object for derivatives. More... | |
deriv_gsl | def_deriv2 |
The second default object for derivatives. More... | |
mroot_hybrids | def_mroot |
The default solver. More... | |
root_cern | def_sat_root |
The default solver for calculating the saturation density. More... | |
![]() | |
thermo | def_thermo |
The default thermo object. | |
Protected Attributes | |
fermion_nonrel | nrf |
Thermodynamics of non-relativistic fermions. | |
![]() | |
fermion_eval_thermo * | fet |
Fermion thermodynamics (default is def_fet) | |
![]() | |
mroot * | eos_mroot |
The EOS solver. | |
root * | sat_root |
The solver to compute saturation properties. | |
deriv_base * | sat_deriv |
The derivative object for saturation properties. | |
deriv_base * | sat_deriv2 |
The second derivative object for saturation properties. | |
fermion * | neutron |
The neutron object. | |
fermion * | proton |
The proton object. | |
![]() | |
thermo * | eos_thermo |
A pointer to the thermo object. | |
Functions and parameters for calpar() | |
double | fixn0 |
double | fixeoa |
double | fixesym |
double | fixcomp |
double | fixmsom |
int | calparfun (size_t nv, const ubvector &x, ubvector &y) |
int | calparfun2 (size_t nv, const ubvector &x, ubvector &y) |
Additional Inherited Members | |
![]() | |
typedef boost::numeric::ublas::vector < double > | ubvector |
![]() | |
int | nuc_matter_temp_e (size_t nv, const ubvector &x, ubvector &y, double nn0, double np0, double T) |
Solve for nuclear matter at finite temperature given density. | |
int | nuc_matter_temp_p (size_t nv, const ubvector &x, ubvector &y, double mun0, double mup0, double T) |
Solve for nuclear matter at finite temperature given mu. | |
int | liqgas_dens_solve (size_t nv, const ubvector &x, ubvector &y, fermion &n1, fermion &p1, fermion &n2, fermion &p2, double T, thermo &th1, thermo &th2) |
Solve for the liquid gas phase transition as a function of the densities. | |
int | liqgas_solve (size_t nv, const ubvector &x, ubvector &y, fermion &n1, fermion &p1, fermion &n2, fermion &p2, double nB0, double Ye0, double T, thermo &th1, thermo &th2) |
Solve for the liquid-gas phase transition at fixed baryon density and electron fraction. | |
int | liqgas_beta_solve (size_t nv, const ubvector &x, ubvector &y, fermion &n1, fermion &p1, fermion &n2, fermion &p2, double nB0, double T, thermo &th1, thermo &th2, fermion &e) |
Solve for the liquid-gas phase transition in beta-equilibrium. | |
double | calc_entropy_delta (double delta, double nb, double T) |
Compute the entropy. | |
double | calc_dmu_delta_T (double delta, double nb, double T) |
Compute the difference between the neutron and proton chemical potentials. | |
![]() | |
double | t1_fun (double barn) |
Compute t1 for gradient_qij(). | |
double | t2_fun (double barn) |
Compute t2 for gradient_qij(). | |
void o2scl::eos_had_skyrme::alt_params_get | ( | double & | Crr00, |
double & | Crr10, | ||
double & | Crr0D, | ||
double & | Crr1D, | ||
double & | Crt0, | ||
double & | Crt1, | ||
double & | CrDr0, | ||
double & | CrDr1, | ||
double & | CrnJ0, | ||
double & | CrnJ1, | ||
double & | alpha2 | ||
) |
void o2scl::eos_had_skyrme::alt_params_set | ( | double | Crr00, |
double | Crr10, | ||
double | Crr0D, | ||
double | Crr1D, | ||
double | Crt0, | ||
double | Crt1, | ||
double | CrDr0, | ||
double | CrDr1, | ||
double | CrnJ0, | ||
double | CrnJ1, | ||
double | alpha2 | ||
) |
From Bender03 as in, e.g. Kortelainen14
|
virtual |
temper
is less than or equal to zero. Implements o2scl::eos_had_temp_eden_base.
int o2scl::eos_had_skyrme::calpar | ( | double | gt0 = -10.0 , |
double | gt3 = 70.0 , |
||
double | galpha = 0.2 , |
||
double | gt1 = 2.0 , |
||
double | gt2 = -1.0 |
||
) |
In nuclear matter:
(the
dependence vanishes)
(the
dependence cancels),
To fix the couplings from the saturation properties, we take as inputs, and we can fix
from the first three relations, then use
to fix
and
. The separation into two solution steps should make for better convergence. All of the x's are free parameters and should be set before the function call.
The arguments gt0
, gt3
, galpha
, gt1
, and gt2
are used as initial guesses for skyme_eos::t0, eos_had_skyrme::t3, eos_had_skyrme::alpha, eos_had_skyrme::t1, and eos_had_skyrme::t2 respectively.
int o2scl::eos_had_skyrme::check_landau | ( | double | nb, |
double | m | ||
) |
This returns zero if there are no instabilities.
|
virtual |
|
virtual |
|
virtual |
If pf=0.5, then the exact expression below is used. Otherwise, the method from class eos_had_base is used.
Reimplemented from o2scl::eos_had_base.
|
virtual |
|
virtual |
void o2scl::eos_had_skyrme::landau_neutron | ( | double | n0, |
double | m, | ||
double & | f0, | ||
double & | g0, | ||
double & | f1, | ||
double & | g1 | ||
) |
Given 'n0' and 'm', this calculates the Landau parameters in neutron matter as given in Margueron02
(Checked once on 11/05/03)
void o2scl::eos_had_skyrme::landau_nuclear | ( | double | n0, |
double | m, | ||
double & | f0, | ||
double & | g0, | ||
double & | f0p, | ||
double & | g0p, | ||
double & | f1, | ||
double & | g1, | ||
double & | f1p, | ||
double & | g1p | ||
) |
Given n0
and m
, this calculates the Landau parameters in nuclear matter as given in Margueron02
(Checked once on 11/05/03)
bool o2scl::eos_had_skyrme::parent_method |
This can be set to true to check the difference between the exact expressions and the numerical values from class eos_had_base.
Definition at line 378 of file eos_had_skyrme.h.
double o2scl::eos_had_skyrme::W0 |
This is unused, but included for possible future use and present in the internally stored models.
Definition at line 258 of file eos_had_skyrme.h.
Documentation generated with Doxygen. Provided under the
GNU Free Documentation License (see License Information).
Hosted at
.