Skyrme hadronic equation of state. More...
#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... | |
void | alt_params_saturation (double n0, double EoA, double K, double Ms_star, double a, double L, double Mv_star, double CrDr0, double CrDr1, double CrnJ0, double CrnJ1) |
Use the specified saturation properties and couplings and the function alt_params_set() to set the Skyrme coefficients. 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 double | calc_temp_mun_e (double nn, double np, double T) |
Neutron chemical potential as a function of the densities. | |
virtual double | calc_temp_mup_e (double nn, double np, double T) |
Proton chemical potential as a function of the densities. | |
virtual double | calc_temp_nn_p (double mun, double mup, double T) |
Neutron density as a function of the chemical potentials. | |
virtual double | calc_temp_np_p (double mun, double mup, double T) |
Proton density as a function of the chemical potentials. | |
double | calc_fr (double nn, double np, double T) |
Compute the free energy as a function of the temperature and the densities. | |
virtual void | f_number_suscept_T (double mun, double mup, double T, double &dPdnn, double &dPdnp, double &dPdpp) |
Compute the number susceptibilities as a function of the chemical potentials, ![]() | |
virtual void | f_inv_number_suscept_T (double mun, double mup, double T, double &dednn, double &dednp, double &dedpp) |
Compute the 'inverse' number susceptibilities as a function of the densities, ![]() | |
void | check_en (fermion &n, fermion &p, double T, thermo &th, double &en_deriv, double &en_err) |
Check the entropy by computing the derivative numerically. | |
void | check_mu_T (fermion &n, fermion &p, double T, thermo &th, double &mun_deriv, double &mup_deriv, double &mun_err, double &mup_err) |
Check the chemical potentials at finite temperature by computing the derivative numerically. | |
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 in ![]() | |
virtual double | fesym_slope (double nb, double delta=0.0) |
The symmetry energy slope parameter in ![]() | |
virtual double | fesym_curve (double nb, double delta=0.0) |
The curvature of the symmetry energy in ![]() | |
virtual double | fesym_skew (double nb, double delta=0.0) |
The skewness of the symmetry energy in ![]() | |
virtual double | fesym_diff (double nb) |
Calculate symmetry energy of matter as energy of neutron matter minus the energy of nuclear matter in ![]() | |
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 in ![]() | |
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 (reduced) effective mass. | |
virtual double | f_effm_prot (double nb, double delta=0.0) |
Proton (reduced) 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=1.0) |
Vector effective mass. More... | |
virtual double | fn0 (double delta, double &leoa) |
Calculate saturation density using calc_e() More... | |
virtual void | f_number_suscept (double mun, double mup, double &dPdnn, double &dPdnp, double &dPdpp) |
Compute the number susceptibilities as a function of the chemical potentials, ![]() | |
virtual void | f_inv_number_suscept (double mun, double mup, double &dednn, double &dednp, double &dedpp) |
Compute the 'inverse' number susceptibilities as a function of the densities, ![]() | |
virtual void | saturation () |
Calculates some of the EOS properties at the saturation density. More... | |
double | calc_mun_e (double nn, double np) |
Compute the neutron chemical potential at fixed density. More... | |
double | calc_ed (double nn, double np) |
Compute the energy density as a function of the nucleon densities. | |
double | calc_pr (double nn, double np) |
Compute the pressure as a function of the nucleon chemical potentials. | |
double | calc_mup_e (double nn, double np) |
Compute the proton chemical potential at fixed density. More... | |
double | calc_nn_p (double mun, double mup) |
Compute the neutron density at fixed chemical potential. More... | |
double | calc_np_p (double mun, double mup) |
Compute the proton density at fixed chemical potential. 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... | |
void | check_mu (fermion &n, fermion &p, thermo &th, double &mun_deriv, double &mup_deriv, double &mun_err, double &mup_err) |
Check the chemical potentials by computing the derivatives numerically. | |
void | check_den (fermion &n, fermion &p, thermo &th, double &nn_deriv, double &np_deriv, double &nn_err, double &np_err) |
Check the densities by computing the derivatives numerically. | |
![]() | |
virtual void | set_thermo (thermo &th) |
Set class thermo object. | |
virtual const thermo & | get_thermo () |
Get class thermo object. | |
Public Attributes | |
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... | |
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 (without the rest mass) in ![]() | |
double | comp |
Compression modulus in ![]() | |
double | esym |
Symmetry energy in ![]() | |
double | n0 |
Saturation density in ![]() | |
double | msom |
Effective mass (neutron) | |
double | kprime |
Skewness in ![]() | |
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(). | |
Equation of state of nucleonic matter based on the Skryme interaction from Skyrme59 .
The Hamiltonian is defined (using the notation of Steiner05b ) as
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, Danielewicz09, 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
.
part::non_interacting
for neutrons and protons are set to false in many of the functions.
calc_temp_p()
at very low densities. I have had problems, for example, with mun=5.0, mup=6.5
at T=1.0/197.33
.
Definition at line 228 of file eos_had_skyrme.h.
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 | ||
) |
The parameters will have the following units
Crr00
: Crr10
: Crr0D
: Crr1D
: Crt0
: Crt1
: CrDr0
: CrDr1
: CrnJ0
: CrnJ1
: alpha2
: unitlessvoid o2scl::eos_had_skyrme::alt_params_saturation | ( | double | n0, |
double | EoA, | ||
double | K, | ||
double | Ms_star, | ||
double | a, | ||
double | L, | ||
double | Mv_star, | ||
double | CrDr0, | ||
double | CrDr1, | ||
double | CrnJ0, | ||
double | CrnJ1 | ||
) |
This function uses the relations in Kortelainen10 . The parameters should have the following units
n0
: EoA
: K
: Ms_star
: unitlessa
: L
: Mv_star
: unitlessCrDr0
: CrDr1
: CrnJ0
: CrnJ1
: Kortelainen10 assumed equal neutron and proton masses, so this function uses and the neutron and proton masses in eos_had_base::def_neutron and eos_had_base::def_proton, respectively. To obtain the results in the original paper, set neutron and proton masses to ensure that
.
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
The parameters should have the following units
Crr00
: Crr10
: Crr0D
: Crr1D
: Crt0
: Crt1
: CrDr0
: CrDr1
: CrnJ0
: CrnJ1
: alpha2
: unitless
|
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 381 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 262 of file eos_had_skyrme.h.
Documentation generated with Doxygen. Provided under the
GNU Free Documentation License (see License Information).