26 #ifndef O2SCL_HADRONIC_EOS_H 27 #define O2SCL_HADRONIC_EOS_H 32 #include <boost/numeric/ublas/vector.hpp> 34 #include <o2scl/deriv_gsl.h> 35 #include <o2scl/mroot.h> 36 #include <o2scl/mroot_hybrids.h> 37 #include <o2scl/mm_funct.h> 38 #include <o2scl/eos_base.h> 39 #include <o2scl/fermion_eff.h> 40 #include <o2scl/part.h> 41 #include <o2scl/lib_settings.h> 43 #ifndef DOXYGEN_NO_O2NS 376 virtual double fcomp(
double nb,
double delta=0.0);
383 virtual double fcomp_err(
double nb,
double delta,
double &unc);
392 virtual double feoa(
double nb,
double delta=0.0);
408 virtual double fesym(
double nb,
double delta=0.0);
418 virtual double fesym_err(
double nb,
double delta,
double &unc);
428 virtual double fesym_slope(
double nb,
double delta=0.0);
433 virtual double fesym_curve(
double nb,
double delta=0.0);
438 virtual double fesym_skew(
double nb,
double delta=0.0);
455 virtual double feta(
double nb);
472 virtual double fkprime(
double nb,
double delta=0.0);
484 virtual double fmsom(
double nb,
double delta=0.0);
488 virtual double f_effm_neut(
double nb,
double delta=0.0);
492 virtual double f_effm_prot(
double nb,
double delta=0.0);
538 virtual double fn0(
double delta,
double &leoa);
545 double &dPdnp,
double &dPdpp);
552 double &dednp,
double &dedpp);
583 double calc_ed(
double nn,
double np);
588 double calc_pr(
double nn,
double np);
604 double calc_nn_p(
double mun,
double mup);
612 double calc_np_p(
double mun,
double mup);
648 double &dednb_pf,
double &dPdnb_pf);
686 int nuc_matter_p(
size_t nv,
const ubvector &x, ubvector &y,
687 double nn0,
double np0);
702 int nuc_matter_e(
size_t nv,
const ubvector &x, ubvector &y,
703 double mun0,
double mup0);
872 double &qnn,
double &qnp,
double &qpp,
873 double &dqnndnn,
double &dqnndnp,
874 double &dqnpdnn,
double &dqnpdnp,
875 double &dqppdnn,
double &dqppdnp);
878 virtual const char *
type() {
return "eos_had_base"; }
889 double &mun_err,
double &mup_err);
895 double &nn_deriv,
double &np_deriv,
896 double &nn_err,
double &np_err);
899 #ifndef DOXYGEN_INTERNAL 907 double t2_fun(
double barn);
964 #ifndef DOXYGEN_INTERNAL 972 int nuc_matter_temp_e(
size_t nv,
const ubvector &x,
973 ubvector &y,
double nn0,
double np0,
double T);
976 int nuc_matter_temp_p(
size_t nv,
const ubvector &x,
977 ubvector &y,
double mun0,
double mup0,
double T);
982 int liqgas_dens_solve(
size_t nv,
const ubvector &x,
990 int liqgas_solve(
size_t nv,
const ubvector &x,
993 double Ye0,
double T,
999 int liqgas_beta_solve(
size_t nv,
const ubvector &x,
1002 double nB0,
double T,
1007 double calc_entropy_delta(
double delta,
double nb,
double T);
1012 double calc_dmu_delta_T(
double delta,
double nb,
double T);
1071 virtual int calc_liqgas_dens_temp_e
1086 virtual int calc_liqgas_temp_e
1088 double nB,
double Ye,
double T,
thermo &th1,
thermo &th2,
1103 virtual int calc_liqgas_beta_temp_e
1106 double &Ye,
double &chi);
1113 virtual double fesym_T(
double nb,
double T,
double delta=0.0);
1117 virtual double fsyment_T(
double nb,
double T,
double delta=0.0);
1123 virtual double calc_temp_mun_e(
double nn,
double np,
double T);
1125 virtual double calc_temp_mup_e(
double nn,
double np,
double T);
1127 virtual double calc_temp_nn_p(
double mun,
double mup,
double T);
1129 virtual double calc_temp_np_p(
double mun,
double mup,
double T);
1134 double calc_fr(
double nn,
double np,
double T);
1143 virtual void f_number_suscept_T
1144 (
double mun,
double mup,
double T,
double &dPdnn,
1145 double &dPdnp,
double &dPdpp);
1151 virtual void f_inv_number_suscept_T
1152 (
double mun,
double mup,
double T,
double &dednn,
1153 double &dednp,
double &dedpp);
1162 double &en_deriv,
double &en_err);
1168 double &mun_deriv,
double &mup_deriv,
1169 double &mun_err,
double &mup_err);
1237 #ifndef DOXYGEN_NO_O2NS root_cern def_sat_root
The default solver for calculating the saturation density.
virtual double fesym_skew(double nb, double delta=0.0)
The skewness of the symmetry energy in .
virtual void set_sat_deriv(deriv_base<> &de)
Set deriv_base object to use to find saturation properties.
virtual void set_fermion_eval_thermo(fermion_eval_thermo &f)
Computing finite-temperature integrals.
virtual double feta_prime(double nb)
The derivative of the strength parameter for quartic terms in the symmetry energy.
double calc_ed(double nn, double np)
Compute the energy density as a function of the nucleon densities.
fermion_eval_thermo * fet
Fermion thermodynamics (default is def_fet)
Equation of state base class.
double comp
Compression modulus in .
double calc_np_p(double mun, double mup)
Compute the proton density at fixed chemical potential.
virtual double fkprime(double nb, double delta=0.0)
Calculate skewness of nuclear matter in using calc_e()
deriv_gsl def_deriv
The default object for derivatives.
virtual double f_effm_neut(double nb, double delta=0.0)
Neutron (reduced) effective mass.
double t1_fun(double barn)
Compute t1 for gradient_qij().
void const_pf_derivs(double nb, double pf, double &dednb_pf, double &dPdnb_pf)
Compute derivatives at constant proton fraction.
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.
virtual double fmsom(double nb, double delta=0.0)
Calculate reduced neutron effective mass using calc_e()
double calc_mun_e(double nn, double np)
Compute the neutron chemical potential at fixed density.
double calc_pressure_nb(double nb, double delta=0.0)
Compute the pressure as a function of baryon density at fixed isospin asymmetry.
mroot * eos_mroot
The EOS solver.
virtual double fcomp(double nb, double delta=0.0)
Calculate the incompressibility in using calc_e()
virtual double f_effm_scalar(double nb, double delta=0.0)
Scalar effective mass.
virtual double fn0(double delta, double &leoa)
Calculate saturation density using calc_e()
double esym
Symmetry energy in .
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 double fesym_diff(double nb)
Calculate symmetry energy of matter as energy of neutron matter minus the energy of nuclear matter in...
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.
A hadronic EOS at finite temperature based on a function of the densities [abstract base]...
A finite temperature hadronic EOS [abstract base].
virtual const char * type()
Return string denoting type ("eos_had_base")
deriv_base * sat_deriv
The derivative object for saturation properties.
double n0
Saturation density in .
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 fixe...
double calc_nn_p(double mun, double mup)
Compute the neutron density at fixed chemical potential.
root * sat_root
The solver to compute saturation properties.
virtual int calc_p(fermion &n, fermion &p, thermo &th)=0
Equation of state as a function of the chemical potentials.
virtual void set_sat_root(root<> &mr)
Set class mroot object for use calculating saturation density.
A hadronic EOS at finite temperature based on a function of the chemical potentials [abstract base]...
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 gradient part part of Hamiltonian.
double t2_fun(double barn)
Compute t2 for gradient_qij().
double calc_mup_e(double nn, double np)
Compute the proton chemical potential at fixed density.
fermion * proton
The proton object.
deriv_gsl def_deriv2
The second default object for derivatives.
double calc_edensity_delta(double delta, double nb)
Calculate energy density as a function of the isospin asymmetry at fixed baryon density.
A hadronic EOS based on a function of the densities [abstract base].
virtual double f_effm_vector(double nb, double delta=1.0)
Vector effective mass.
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...
deriv_base * sat_deriv2
The second derivative object for saturation properties.
int nuc_matter_e(size_t nv, const ubvector &x, ubvector &y, double mun0, double mup0)
Solve for the densities given the chemical potentials.
Hadronic equation of state [abstract base].
A hadronic EOS based on a function of the chemical potentials [abstract base].
virtual double fcomp_err(double nb, double delta, double &unc)
Compute the incompressibility and its uncertainty.
double calc_edensity_nb(double nb, double delta=0.0)
Compute the energy density as a function of baryon density at fixed isospin asymmetry.
virtual int calc_e(fermion &n, fermion &p, thermo &th)=0
Equation of state as a function of density.
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, .
fermion def_proton
The defaut proton.
virtual double feta(double nb)
The strength parameter for quartic terms in the symmetry energy.
virtual double fesym(double nb, double delta=0.0)
Calculate symmetry energy of matter in using calc_dmu_delta() .
double kprime
Skewness in .
virtual double fesym_err(double nb, double delta, double &unc)
Calculate symmetry energy of matter and its uncertainty in .
virtual double f_effm_prot(double nb, double delta=0.0)
Proton (reduced) effective mass.
virtual double fesym_slope(double nb, double delta=0.0)
The symmetry energy slope parameter in .
int nuc_matter_p(size_t nv, const ubvector &x, ubvector &y, double nn0, double np0)
Solve for the chemical potentials given the densities.
double calc_pr(double nn, double np)
Compute the pressure as a function of the nucleon chemical potentials.
fermion * neutron
The neutron object.
mroot_hybrids def_mroot
The default solver.
virtual double feoa(double nb, double delta=0.0)
Calculate the energy per baryon in using calc_e()
double msom
Effective mass (neutron)
double calc_dmu_delta(double delta, double nb)
Compute the difference between neutron and proton chemical potentials as a function of the isospin as...
virtual void saturation()
Calculates some of the EOS properties at the saturation density.
double eoa
Binding energy (without the rest mass) in .
fermion_eff def_fet
Default fermion thermodynamics object.
virtual double fesym_curve(double nb, double delta=0.0)
The curvature of the symmetry energy in .
virtual void set_sat_deriv2(deriv_base<> &de)
Set the second deriv_base object to use to find saturation properties.
virtual void set_mroot(mroot<> &mr)
Set class mroot object for use in calculating chemical potentials from densities. ...
virtual void set_n_and_p(fermion &n, fermion &p)
Set neutron and proton.
fermion def_neutron
The defaut neutron.