Go to the documentation of this file.
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
363 virtual int calc_p(fermion &n, fermion &p,
thermo &th)=0;
367 virtual int calc_e(fermion &n, fermion &p,
thermo &th)=0;
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);
692 double nn0,
double np0);
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
909 double t1_fun(
double barn);
912 double t2_fun(
double barn);
942 virtual int calc_e(fermion &n, fermion &p,
thermo &th)=0;
958 virtual int calc_p(fermion &n, fermion &p,
thermo &th)=0;
969 #ifndef DOXYGEN_INTERNAL
978 ubvector &y,
double nn0,
double np0,
double T);
982 ubvector &y,
double mun0,
double mup0,
double T);
988 ubvector &y, fermion &n1, fermion &p1,
989 fermion &n2, fermion &p2,
double T,
996 ubvector &y, fermion &n1, fermion &p1,
997 fermion &n2, fermion &p2,
double nB0,
998 double Ye0,
double T,
1005 ubvector &y, fermion &n1, fermion &p1,
1006 fermion &n2, fermion &p2,
1007 double nB0,
double T,
1033 virtual int calc_e(fermion &n, fermion &p,
thermo &th)=0;
1038 virtual int calc_temp_e(fermion &n, fermion &p,
double T,
1043 virtual int calc_p(fermion &n, fermion &p,
thermo &th)=0;
1048 virtual int calc_temp_p(fermion &n, fermion &p,
double T,
1077 (fermion &n1, fermion &p1, fermion &n2, fermion &p2,
1092 (fermion &n1, fermion &p1, fermion &n2, fermion &p2,
1093 double nB,
double Ye,
double T,
thermo &th1,
thermo &th2,
1109 (fermion &n1, fermion &p1, fermion &n2, fermion &p2,
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);
1139 double calc_fr(
double nn,
double np,
double T);
1149 (
double mun,
double mup,
double T,
double &dPdnn,
1150 double &dPdnp,
double &dPdpp);
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);
1191 virtual int calc_e(fermion &n, fermion &p,
thermo &th)=0;
1196 virtual int calc_temp_e(fermion &n, fermion &p,
double T,
1201 virtual int calc_p(fermion &n, fermion &p,
thermo &th);
1206 virtual int calc_temp_p(fermion &n, fermion &p,
double T,
1223 virtual int calc_p(fermion &n, fermion &p,
thermo &th)=0;
1228 virtual int calc_temp_p(fermion &n, fermion &p,
double T,
1233 virtual int calc_e(fermion &n, fermion &p,
thermo &th);
1238 virtual int calc_temp_e(fermion &n, fermion &p,
double T,
1242 #ifndef DOXYGEN_NO_O2NS
virtual double fcomp_err(double nb, double delta, double &unc)
Compute the incompressibility and its uncertainty.
virtual double fesym_skew(double nb, double delta=0.0)
The skewness of the symmetry energy in .
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.
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.
virtual int saturation()
Calculates some of the EOS properties at the saturation density.
virtual double fmsom(double nb, double delta=0.0)
Calculate reduced neutron effective mass using calc_e()
virtual int calc_p(fermion &n, fermion &p, thermo &th)=0
Equation of state as a function of the chemical potentials.
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.
virtual double fesym_T(double nb, double T, double delta=0.0)
Compute the symmetry energy at finite temperature.
double kprime
Skewness in .
double calc_entropy_delta(double delta, double nb, double T)
Compute the entropy.
root * sat_root
The solver to compute saturation properties.
virtual int calc_e(fermion &n, fermion &p, thermo &th)
Equation of state as a function of density.
double calc_np_p(double mun, double mup)
Compute the proton density at fixed chemical potential.
double calc_mun_e(double nn, double np)
Compute the neutron chemical potential at fixed density.
virtual double fkprime(double nb, double delta=0.0)
Calculate skewness of nuclear matter in using calc_e()
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...
mroot_hybrids def_mroot
The default solver.
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() .
mroot * eos_mroot
The EOS solver.
A hadronic EOS at finite temperature based on a function of the densities [abstract base].
virtual int calc_temp_e(fermion &n, fermion &p, double T, thermo &th)=0
Equation of state as a function of densities at finite temperature.
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.
virtual void set_sat_deriv2(deriv_base<> &de)
Set the second deriv_base object to use to find saturation properties.
virtual double calc_temp_mun_e(double nn, double np, double T)
Neutron chemical potential as a function of the densities.
virtual double feoa(double nb, double delta=0.0)
Calculate the energy per baryon in using calc_e()
virtual int calc_p(fermion &n, fermion &p, thermo &th)
Equation of state as a function of the chemical potentials.
double msom
Effective mass (neutron)
virtual int calc_e(fermion &n, fermion &p, thermo &th)=0
Equation of state as a function of density.
virtual double fn0(double delta, double &leoa)
Calculate saturation density using calc_e()
virtual double f_effm_neut(double nb, double delta=0.0)
Neutron (reduced) effective mass.
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, at a fixed temperature...
virtual int calc_e(fermion &n, fermion &p, thermo &th)=0
Equation of state as a function of density.
virtual void set_mroot(mroot<> &mr)
Set class mroot object for use in calculating chemical potentials from densities.
double calc_edensity_delta(double delta, double nb)
Calculate energy density as a function of the isospin asymmetry at fixed baryon density.
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.
double n0
Saturation density in .
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.
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() .
virtual int calc_p(fermion &n, fermion &p, thermo &th)=0
Equation of state as a function of the chemical potentials.
virtual int calc_temp_e(fermion &n, fermion &p, double T, thermo &th)
Equation of state as a function of densities at finite temperature.
virtual double fcomp(double nb, double delta=0.0)
Calculate the incompressibility in using calc_e()
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.
deriv_gsl def_deriv2
The second default object for derivatives.
double t2_fun(double barn)
Compute t2 for gradient_qij().
virtual int calc_e(fermion &n, fermion &p, thermo &th)
Equation of state as a function of density.
double t1_fun(double barn)
Compute t1 for gradient_qij().
A finite temperature hadronic EOS [abstract base].
void const_pf_derivs(double nb, double pf, double &dednb_pf, double &dPdnb_pf)
Compute derivatives at constant proton fraction.
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 f_number_suscept(double mun, double mup, double &dPdnn, double &dPdnp, double &dPdpp)
Compute the number susceptibilities 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 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() .
A hadronic EOS based on a function of the chemical potentials [abstract base].
virtual int calc_temp_e(fermion &n, fermion &p, double T, thermo &th)=0
Equation of state as a function of densities at finite temperature.
deriv_base * sat_deriv2
The second derivative object for saturation properties.
virtual double fesym(double nb, double delta=0.0)
Calculate symmetry energy of matter in using calc_dmu_delta() .
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_temp_p(fermion &n, fermion &p, double T, thermo &th)=0
Equation of state as a function of the chemical potentials at finite temperature.
double esym
Symmetry energy in .
double calc_nn_p(double mun, double mup)
Compute the neutron density at fixed chemical potential.
virtual int calc_e(fermion &n, fermion &p, thermo &th)=0
Equation of state as a function of density.
A hadronic EOS at finite temperature based on a function of the chemical potentials [abstract base].
bool err_nonconv
If true, call the error handler if msolve() or msolve_de() does not converge (default true)
virtual double calc_temp_mup_e(double nn, double np, double T)
Proton chemical potential as a function of the densities.
virtual double fesym_slope(double nb, double delta=0.0)
The symmetry energy slope parameter 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 const char * type()
Return string denoting type ("eos_had_base")
deriv_base * sat_deriv
The derivative object for saturation properties.
virtual double f_effm_scalar(double nb, double delta=0.0)
Scalar effective mass.
double eoa
Binding energy (without the rest mass) in .
double calc_pr(double nn, double np)
Compute the pressure as a function of the nucleon chemical potentials.
virtual double feta(double nb)
The strength parameter for quartic terms in the symmetry energy.
virtual double fesym_curve(double nb, double delta=0.0)
The curvature of the symmetry energy in .
virtual int calc_e(fermion &n, fermion &p, thermo &th)=0
Equation of state as a function of density.
virtual int calc_p(fermion &n, fermion &p, thermo &th)
Equation of state as a function of the chemical potentials.
fermion_thermo * fet
Fermion thermodynamics (default is def_fet)
virtual void set_sat_root(root<> &mr)
Set class mroot object for use calculating saturation 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.
double calc_edensity_nb(double nb, double delta=0.0)
Compute the energy density as a function of baryon density at fixed isospin asymmetry.
int nuc_matter_e(size_t nv, const ubvector &x, ubvector &y, double mun0, double mup0)
Solve for the densities given the chemical potentials.
virtual int calc_p(fermion &n, fermion &p, thermo &th)=0
Equation of state as a function of the chemical potentials.
double calc_mup_e(double nn, double np)
Compute the proton chemical potential at fixed density.
int nuc_matter_p(size_t nv, const ubvector &x, ubvector &y, double nn0, double np0)
Solve for the chemical potentials given the densities.
fermion * neutron
The neutron object.
root_cern def_sat_root
The default solver for calculating the saturation density.
virtual double fesym_err(double nb, double delta, double &unc)
Calculate symmetry energy of matter and its uncertainty in .
virtual void set_n_and_p(fermion &n, fermion &p)
Set neutron and proton.
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.
fermion_eff def_fet
Default fermion thermodynamics object.
fermion def_neutron
The defaut neutron.
double comp
Compression modulus in .
virtual int calc_p(fermion &n, fermion &p, thermo &th)=0
Equation of state as a function of the chemical potentials.
virtual double calc_temp_nn_p(double mun, double mup, double T)
Neutron density as a function of the chemical potentials.
fermion * proton
The proton object.
virtual void set_fermion_thermo(fermion_thermo &f)
Computing finite-temperature integrals.
fermion def_proton
The defaut proton.
virtual double feta_prime(double nb)
The derivative of the strength parameter for quartic terms in the symmetry energy.
deriv_gsl def_deriv
The default object for derivatives.
Hadronic equation of state [abstract base].
Equation of state base class.
virtual void set_sat_deriv(deriv_base<> &de)
Set deriv_base object to use to find saturation properties.
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.
virtual double fsyment_T(double nb, double T, double delta=0.0)
Compute the symmetry entropy at finite temperature.
virtual double f_effm_prot(double nb, double delta=0.0)
Proton (reduced) effective mass.
double calc_dmu_delta_T(double delta, double nb, double T)
Compute the difference between the neutron and proton chemical potentials.
double calc_ed(double nn, double np)
Compute the energy density as a function of the nucleon densities.
virtual double calc_temp_np_p(double mun, double mup, double T)
Proton density as a function of the chemical potentials.
double calc_dmu_delta(double delta, double nb)
Compute the difference between neutron and proton chemical potentials as a function of the isospin as...
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.
A hadronic EOS based on a function of the densities [abstract base].
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, at a fixed temperature...
double calc_pressure_nb(double nb, double delta=0.0)
Compute the pressure as a function of baryon density at fixed isospin asymmetry.
virtual int calc_temp_p(fermion &n, fermion &p, double T, thermo &th)=0
Equation of state as a function of the chemical potentials at finite temperature.
Documentation generated with Doxygen. Provided under the
GNU Free Documentation License (see License Information).