#include <rmf_eos.h>
Before sending neutrons and protons to these member functions, the masses should be set to their vacuum values and the degeneracy factor should be 2. If an internal model is used (using load()), then the neutron and proton masses should be set to mnuc.
It is important to point out that expressions for the energy densities are often simplified in the literature using the field equations. These expressions are not used in this code since they are only applicable in infinite matter where the field equations hold, and are not suitable for use in applications (such as to finite nuclei) where the spatial derivatives of the fields are non-zero. Notice that in the proper expressions for the energy density the similarity between terms in the pressure up to a sign. This procedure allows one to verify the thermodynamic identity even if the field equations are not solved and allows the user to add gradient terms to the energy density and pressure.
Background
The full Lagragian is:
The coefficients and
are related to the somewhat standard
and
by:
The function is the coefficient of
where the notation from Horowitz01 is:
This implies and
The field equations are:
When the variable zm_mode is true, the effective mass is fixed using the approach of Zimanyi90 .
Defining
the binding energy per particle in symmetric matter at equilibrium is given by
where the Dirac effective mass is . The compressibility is given by
The symmetry energy of bulk matter is given by
In the above equations, the subscipt `` '' denotes the mean field values of
and
. For the case
, the symmetry energy varies linearly with the density at large densities. The function
permits variations in the density dependence of the symmetry energy above nuclear matter density.
Definition at line 212 of file rmf_eos.h.
Public Member Functions | |
int | load (std::string model, bool external=false) |
Load parameters for model named 'model'. | |
int | calc_temp_e (fermion &ne, fermion &pr, const double T, thermo <h) |
Equation of state as a function of densities at finite temperature. | |
int | fix_saturation (double guess_cs=4.0, double guess_cw=3.0, double guess_b=0.001, double guess_c=-0.001) |
Calculate cs, cw, cr, b, and c from the saturation properties. | |
virtual int | saturation () |
Calculate properties for nuclear matter at the saturation density. | |
double | fesym_fields (double sig, double ome, double nb) |
Calculate symmetry energy assuming the field equations have already been solved. | |
double | fcomp_fields (double sig, double ome, double nb) |
Calculate the compressibility assuming the field equations have already been solved. | |
int | fkprime_fields (double sig, double ome, double nb, double &k, double &kprime) |
Calculate compressibilty and kprime assuming the field equations have already been solved. | |
int | field_eqs (size_t nv, const ovector_view &x, ovector_view &y, void *&pa) |
A function for solving the field equations. | |
int | field_eqsT (size_t nv, const ovector_view &x, ovector_view &y, void *&pa) |
A function for solving the field equations at finite temperature. | |
virtual int | set_fields (double sig, double ome, double lrho) |
Set a guess for the fields for the next call to calc_e(), calc_p(), or saturation(). | |
int | get_fields (double &sig, double &ome, double &lrho) |
Return the most recent values of the meson fields. | |
virtual const char * | type () |
Return string denoting type ("rmf_eos"). | |
int | check_naturalness (rmf_eos &re) |
Set the coefficients of a rmf_eos object to their limits from naturalness. | |
int | naturalness_limits (double value, rmf_eos &re) |
Provide the maximum values of the couplings assuming a limit on naturalness. | |
virtual int | set_sat_mroot (mroot< void *, mm_funct< void * > > &mrx) |
Set class mroot object for use calculating saturation density. | |
Compute EOS from densities at zero temperature | |
virtual int | calc_e (fermion &ne, fermion &pr, thermo <h) |
Equation of state as a function of density. | |
virtual int | calc_e (fermion &ne, fermion &pr, thermo <h, double &sig, double &ome, double &rho) |
Equation of state as a function of density. | |
Compute EOS from chemical at zero temperature | |
virtual int | calc_p (fermion &ne, fermion &pr, thermo <h) |
Equation of state as a function of chemical potential. | |
virtual int | calc_eq_p (fermion &neu, fermion &p, double sig, double ome, double rho, double &f1, double &f2, double &f3, thermo &th) |
Equation of state and meson field equations as a function of chemical potentials. | |
Compute EOS from chemical potentials at finite temperature | |
virtual int | calc_eq_temp_p (fermion &ne, fermion &pr, const double temper, double sig, double ome, double rho, double &f1, double &f2, double &f3, thermo &th) |
Equation of state and meson field equations as a function of chemical potentials. | |
virtual int | calc_temp_p (fermion &ne, fermion &pr, const double T, thermo <h) |
Equation of state as a function of chemical potential. | |
Data Fields | |
bool | zm_mode |
Modifies method of calculating effective masses. | |
gsl_mroot_hybrids< void *, mm_funct< void * > > | def_sat_mroot |
The default solver for calculating the saturation density. | |
Masses | |
double | mnuc |
nucleon mass | |
double | ms |
![]() ![]() | |
double | mw |
![]() ![]() | |
double | mr |
![]() ![]() | |
Standard couplings (including nonlinear sigma terms) | |
double | cs |
double | cw |
double | cr |
double | b |
double | c |
Non-linear terms for omega and rho. | |
double | zeta |
double | xi |
Additional isovector couplings | |
double | a1 |
double | a2 |
double | a3 |
double | a4 |
double | a5 |
double | a6 |
double | b1 |
double | b2 |
double | b3 |
Protected Member Functions | |
int | fix_saturation_fun (size_t nv, const ovector_view &x, ovector_view &y, void *&pa) |
The function for fix_saturation(). | |
virtual int | zero_pressure (size_t nv, const ovector_view &ex, ovector_view &ey, void *&pa) |
Compute matter at zero pressure (for saturation()). | |
virtual int | calc_e_solve_fun (size_t nv, const ovector_view &ex, ovector_view &ey, void *&pa) |
The function for calc_e(). | |
virtual int | calc_temp_e_solve_fun (size_t nv, const ovector_view &ex, ovector_view &ey, void *&pa) |
The function for calc_temp_e(). | |
int | calc_cr (double sig, double ome, double nb) |
Calculate the cr coupling given sig and ome at the density 'nb'. | |
Protected Attributes | |
double | n_charge |
Temporary charge density. | |
double | fe_temp |
Temperature for solving field equations at finite temperature. | |
bool | ce_neut_matter |
For calc_e(), if true, then solve for neutron matter. | |
bool | ce_prot_matter |
For calc_e(), if true, then solve for proton matter. | |
bool | guess_set |
True if a guess for the fields has been given. | |
mroot< void *, mm_funct< void * > > * | sat_mroot |
The solver to compute saturation properties. | |
double | ce_temp |
The meson fields | |
double | sigma |
double | omega |
double | rho |
int load | ( | std::string | model, | |
bool | external = false | |||
) |
Load parameters for model named 'model'.
Presently accepted values from file rmfdata/model_list:
word[] models 46 BMPI BMPII FPWC FSUGold L-BF L-HS L-W L-Z L1 L2 L3 NL-06 NL-065 NL-07 NL-075 NL-B1 NL-B2 NL-SH NL-Z NL1 NL2 NL3 NL4 PL-40 PL-Z RAPR RAPRhdp S271 SR1 SR2 SR3 TM1 TM2 Z271 es25 es25n15 es275 es275n15 es30 es30n15 es325 es325n15 es35 es35n15 es25small es25new es275new es30new # # Comments: # PL-40 and PL-Z have a special m_infinity parameter that is # described in P.-G. Reinhard, Rep. Prog. Phys., 52 (1989) 439 that # I don't quite understand. For spher1d, these need to be run manually # using the input files in ~/spher1d/data. # #
In these files, the nucleon and meson masses are by default specified in MeV, and cs, cw, and cr are given in fm. The parameters b and c are both unitless. If the bool 'oakstyle' is true, then load() assumes that gs, gw, and gr have been given where gs and gw are as usual, but gr is a factor of two smaller than usual, and g2 and g3 have been given where g2 = -b M gs^3 and g3 = c gs^4. If tokistyle is true, then it is additionally assumed that c3 is given where c3=zeta/6*gw^4.
If external
is true, then model is the filename (relative to the current directory) of the file containing the model parameters. Otherwise, the model is assumed to be present in the O2scl library data directory.
Equation of state as a function of density.
Initial guesses for the chemical potentials are taken from the user-given values. Initial guesses for the fields can be set by set_fields(), or default values will be used. After the call to calc_e(), the final values of the fields can be accessed through get_fields().
This is a little more robust than the standard version in the parent hadronic_eos.
Reimplemented from hadronic_eos.
Reimplemented in rmf_delta_eos.
Equation of state as a function of chemical potential.
Solves for the field equations automatically.
Reimplemented from hadronic_eos.
virtual int calc_eq_p | ( | fermion & | neu, | |
fermion & | p, | |||
double | sig, | |||
double | ome, | |||
double | rho, | |||
double & | f1, | |||
double & | f2, | |||
double & | f3, | |||
thermo & | th | |||
) | [virtual] |
Equation of state and meson field equations as a function of chemical potentials.
This calculates the pressure and energy density as a function of . When the field equations have been solved,
f1
, f2
, and f3
are all zero.
The thermodynamic identity is satisfied even when the field equations are not solved.
Equation of state as a function of chemical potential.
Solves for the field equations automatically.
Reimplemented from hadronic_eos.
int fix_saturation | ( | double | guess_cs = 4.0 , |
|
double | guess_cw = 3.0 , |
|||
double | guess_b = 0.001 , |
|||
double | guess_c = -0.001 | |||
) |
Calculate cs, cw, cr, b, and c from the saturation properties.
Note that the meson masses and mnuc must be specified before calling this function.
This function does not give correct results when bool zm_mode is true.
guess_cs
, guess_cw
, guess_b
, and guess_c
are initial guesses for cs
, cw
, b
, and c
respectively.
virtual int saturation | ( | ) | [virtual] |
Calculate properties for nuclear matter at the saturation density.
This requires initial guesses to the chemical potentials, etc.
Reimplemented from hadronic_eos.
Reimplemented in rmf_delta_eos.
double fesym_fields | ( | double | sig, | |
double | ome, | |||
double | nb | |||
) |
Calculate symmetry energy assuming the field equations have already been solved.
This may only work at saturation density. Used by saturation().
double fcomp_fields | ( | double | sig, | |
double | ome, | |||
double | nb | |||
) |
Calculate the compressibility assuming the field equations have already been solved.
This may only work at saturation density.
int fkprime_fields | ( | double | sig, | |
double | ome, | |||
double | nb, | |||
double & | k, | |||
double & | kprime | |||
) |
Calculate compressibilty and kprime
assuming the field equations have already been solved.
This may only work at saturation density. Used by saturation().
int field_eqs | ( | size_t | nv, | |
const ovector_view & | x, | |||
ovector_view & | y, | |||
void *& | pa | |||
) |
A function for solving the field equations.
x[0], x[1], and x[2] should be set to , and
on input (in
) and on exit, y[0], y[1] and y[2] contain the field equations and are zero when the field equations have been solved. The
pa
parameter is ignored.
int field_eqsT | ( | size_t | nv, | |
const ovector_view & | x, | |||
ovector_view & | y, | |||
void *& | pa | |||
) |
A function for solving the field equations at finite temperature.
x[0], x[1], and x[2] should be set to , and
on input (in
) and on exit, y[0], y[1] and y[2] contain the field equations and are zero when the field equations have been solved. The
pa
parameter is ignored.
int get_fields | ( | double & | sig, | |
double & | ome, | |||
double & | lrho | |||
) | [inline] |
int check_naturalness | ( | rmf_eos & | re | ) | [inline] |
Set the coefficients of a rmf_eos object to their limits from naturalness.
As given in muller and Serot, npa 606, 508
The definition of the vector-isovector field and coupling matches what is done here. Compare the Lagrangian above with Eq. 10 from the reference.
The following couplings should all be of the same size:
which are equivalent to
The connection the 's and the coefficients that are used here is
Note that Muller and Serot use the notation
which differs slightly from the "standard" notation above.
We need to compare the values of
These values are stored in the variables cs, cw, cr, b, c, zeta, xi, b1, etc. in the specified rmf_eos object. All of the numbers should be around 0.001 or 0.002.
For the scale , mnuc is used.
int naturalness_limits | ( | double | value, | |
rmf_eos & | re | |||
) | [inline] |
Provide the maximum values of the couplings assuming a limit on naturalness.
The limits for the couplings are function of the nucleon and meson masses, except for the limits on b
, c
, zeta
, and xi
which are independent of the masses because of the way that these four couplings are defined.
int calc_cr | ( | double | sig, | |
double | ome, | |||
double | nb | |||
) | [protected] |
Calculate the cr
coupling given sig
and ome
at the density 'nb'.
Used by fix_saturation().
double mnuc |
gsl_mroot_hybrids<void *,mm_funct<void *> > def_sat_mroot |
The default solver for calculating the saturation density.
Used by fn0() (which is called by saturation()) to solve saturation_matter_e() (1 variable).
double n_charge [protected] |
Documentation generated with Doxygen and provided under the GNU Free Documentation License. See License Information for details.
Project hosting provided by
,
O2scl Sourceforge Project Page