EOS from Akmal, Pandharipande, and Ravenhall. More...
#include <eos_had_apr.h>
The EOS of Akmal, Pandharipande, and Ravenhall, from Akmal98eo (APR).
The Hamiltonian is:
The following are definitions for in the low-density phase (LDP) or the high-density phase (HDP):
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
.
The selection between the LDP and HDP is controlled by the value of pion. The default is to use the LDP at densities below 0.16 , and for larger densities to just use whichever minimizes the energy.
The finite temperature approximations from Prakash97 are used in testing.
par[0]
is unused. This choice makes the connection between the code and the paper a bit more transparent.There might be room to improve the testing of the finite temperature part a bit.
There is some repetition between calc_e() and calc_temp_e() that possibly could be removed.
Include the analytic relations from Constantinou et al.
Definition at line 124 of file eos_had_apr.h.
Public Member Functions | |
eos_had_apr () | |
Create an EOS object with the default parameter set ( ![]() | |
Basic usage | |
virtual int | calc_e (fermion &n, fermion &p, thermo &th) |
Equation of state as a function of density. | |
virtual int | calc_temp_e (fermion &n, fermion &pr, double temper, thermo &th) |
Equation of state as a function of densities. | |
double | fcomp_nuc (double nb) |
Compute the compressibility in nuclear (isospin-symmetric matter) More... | |
double | fesym_diff (double nb) |
Calculate symmetry energy of matter as energy of neutron matter minus the energy of nuclear matter. 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_thermo (fermion_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 (double nb, double delta=0.0) |
Calculate symmetry energy of matter 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 | 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 int | 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... | |
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_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 | 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. | |
Protected Attributes | |
fermion_nonrel | nrf |
Non-relativistic fermion thermodyanmics. | |
int | choice |
The variable indicating which parameter set is to be used. | |
double | par [22] |
Storage for the parameters. | |
int | lp |
An integer to indicate which phase was used in calc_e() | |
![]() | |
fermion_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. | |
Choice of phase | |
static const int | best =0 |
use LDP for densities less than 0.16 and for higher densities, use the phase which minimizes energy (default) | |
static const int | ldp =1 |
LDP (no pion condensation) | |
static const int | hdp =2 |
HDP (pion condensation) | |
int | pion |
Choice of phase (default best) | |
int | last_phase () |
Return the phase of the most recent call to calc_e() More... | |
Model selection | |
static const int | a18_uix_deltav =1 |
With three body forces and relativistic corrections. | |
static const int | a18_uix =2 |
With three body forces. | |
static const int | a18_deltav =3 |
With relativistic corrections. | |
static const int | a18 =4 |
No three body forces or relativistic corrections. | |
void | select (int model_index=1) |
Select model. More... | |
double | get_par (size_t n) |
Get the value of one of the model parameters. | |
void | set_par (size_t n, double x) |
Set the value of one of the model parameters. | |
Other functions | |
bool | parent_method |
If true, use the methods from eos_had_base for fcomp() and fesym_diff() (default true) More... | |
int | gradient_qij2 (double nn, double np, double &qnn, double &qnp, double &qpp, double &dqnndnn, double &dqnndnp, double &dqnpdnn, double &dqnpdnp, double &dqppdnn, double &dqppdnp) |
Calculate Q's for semi-infinite nuclear matter. More... | |
virtual const char * | type () |
Return string denoting type ("eos_had_apr") | |
Additional Inherited Members | |
![]() | |
typedef boost::numeric::ublas::vector< double > | ubvector |
![]() | |
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 ![]() | |
bool | err_nonconv |
If true, call the error handler if msolve() or msolve_de() does not converge (default true) | |
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... | |
fermion | def_neutron |
The defaut neutron. More... | |
fermion | def_proton |
The defaut proton. More... | |
![]() | |
thermo | def_thermo |
The default thermo object. | |
![]() | |
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. More... | |
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. More... | |
![]() | |
double | t1_fun (double barn) |
Compute t1 for gradient_qij(). | |
double | t2_fun (double barn) |
Compute t2 for gradient_qij(). | |
double o2scl::eos_had_apr::fcomp_nuc | ( | double | nb | ) |
See general notes at eos_had_base::fcomp(). This computes the compressibility (at fixed proton fraction = 0.5) exactly, unless parent_method is true in which case the derivative is taken numerically in eos_had_base::fcomp().
|
virtual |
This function returns the energy per baryon of neutron matter minus the energy per baryon of nuclear matter. This will deviate significantly from the results from fesym() only if the dependence of the symmetry energy on is not quadratic.
Reimplemented from o2scl::eos_had_base.
int o2scl::eos_had_apr::gradient_qij2 | ( | double | nn, |
double | np, | ||
double & | qnn, | ||
double & | qnp, | ||
double & | qpp, | ||
double & | dqnndnn, | ||
double & | dqnndnp, | ||
double & | dqnpdnn, | ||
double & | dqnpdnp, | ||
double & | dqppdnn, | ||
double & | dqppdnp | ||
) |
For general discussion, see the documentation to eos_had_base::qs().
For APR, we set so that
and then
This gives
|
inline |
This function always returns either eos_had_apr::ldp or eos_had_apr::hdp .
Definition at line 170 of file eos_had_apr.h.
void o2scl::eos_had_apr::select | ( | int | model_index = 1 | ) |
Valid values for model_index
are:
1 - A18+UIX*+deltav (preferred by Akmal, et. al. - this is the default)
2 - A18+UIX*
3 - A18+deltav
4 - A18
If any other integer is given, the error handler is called.
bool o2scl::eos_had_apr::parent_method |
This can be set to true to check the difference in the compressibility and symmety energy between the exact expressions and the numerical values from class o2scl::eos_had_base.
works just as well.
Definition at line 303 of file eos_had_apr.h.
Documentation generated with Doxygen. Provided under the
GNU Free Documentation License (see License Information).