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 381 virtual double fcomp(
double nb,
double delta=0.0);
388 virtual double fcomp_err(
double nb,
double delta,
double &unc);
397 virtual double feoa(
double nb,
double delta=0.0);
413 virtual double fesym(
double nb,
double delta=0.0);
423 virtual double fesym_err(
double nb,
double delta,
double &unc);
433 virtual double fesym_slope(
double nb,
double delta=0.0);
438 virtual double fesym_curve(
double nb,
double delta=0.0);
443 virtual double fesym_skew(
double nb,
double delta=0.0);
460 virtual double feta(
double nb);
477 virtual double fkprime(
double nb,
double delta=0.0);
489 virtual double fmsom(
double nb,
double delta=0.0);
493 virtual double f_effm_neut(
double nb,
double delta=0.0);
497 virtual double f_effm_prot(
double nb,
double delta=0.0);
543 virtual double fn0(
double delta,
double &leoa);
550 double &dPdnp,
double &dPdpp);
557 double &dednp,
double &dedpp);
588 double calc_ed(
double nn,
double np);
593 double calc_pr(
double nn,
double np);
609 double calc_nn_p(
double mun,
double mup);
617 double calc_np_p(
double mun,
double mup);
653 double &dednb_pf,
double &dPdnb_pf);
691 int nuc_matter_p(
size_t nv,
const ubvector &x, ubvector &y,
692 double nn0,
double np0);
707 int nuc_matter_e(
size_t nv,
const ubvector &x, ubvector &y,
708 double mun0,
double mup0);
877 double &qnn,
double &qnp,
double &qpp,
878 double &dqnndnn,
double &dqnndnp,
879 double &dqnpdnn,
double &dqnpdnp,
880 double &dqppdnn,
double &dqppdnp);
883 virtual const char *
type() {
return "eos_had_base"; }
894 double &mun_err,
double &mup_err);
900 double &nn_deriv,
double &np_deriv,
901 double &nn_err,
double &np_err);
904 #ifndef DOXYGEN_INTERNAL 912 double t2_fun(
double barn);
969 #ifndef DOXYGEN_INTERNAL 977 int nuc_matter_temp_e(
size_t nv,
const ubvector &x,
978 ubvector &y,
double nn0,
double np0,
double T);
981 int nuc_matter_temp_p(
size_t nv,
const ubvector &x,
982 ubvector &y,
double mun0,
double mup0,
double T);
987 int liqgas_dens_solve(
size_t nv,
const ubvector &x,
995 int liqgas_solve(
size_t nv,
const ubvector &x,
998 double Ye0,
double T,
1004 int liqgas_beta_solve(
size_t nv,
const ubvector &x,
1007 double nB0,
double T,
1012 double calc_entropy_delta(
double delta,
double nb,
double T);
1017 double calc_dmu_delta_T(
double delta,
double nb,
double T);
1076 virtual int calc_liqgas_dens_temp_e
1091 virtual int calc_liqgas_temp_e
1093 double nB,
double Ye,
double T,
thermo &th1,
thermo &th2,
1108 virtual int calc_liqgas_beta_temp_e
1111 double &Ye,
double &chi);
1118 virtual double fesym_T(
double nb,
double T,
double delta=0.0);
1122 virtual double fsyment_T(
double nb,
double T,
double delta=0.0);
1128 virtual double calc_temp_mun_e(
double nn,
double np,
double T);
1130 virtual double calc_temp_mup_e(
double nn,
double np,
double T);
1132 virtual double calc_temp_nn_p(
double mun,
double mup,
double T);
1134 virtual double calc_temp_np_p(
double mun,
double mup,
double T);
1139 double calc_fr(
double nn,
double np,
double T);
1148 virtual void f_number_suscept_T
1149 (
double mun,
double mup,
double T,
double &dPdnn,
1150 double &dPdnp,
double &dPdpp);
1156 virtual void f_inv_number_suscept_T
1157 (
double mun,
double mup,
double T,
double &dednn,
1158 double &dednp,
double &dedpp);
1167 double &en_deriv,
double &en_err);
1173 double &mun_deriv,
double &mup_deriv,
1174 double &mun_err,
double &mup_err);
1242 #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 .
virtual int saturation()
Calculates some of the EOS properties at the saturation density.
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 .
bool err_nonconv
If true, call the error handler if msolve() or msolve_de() does not converge (default true) ...
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...
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.