![]() |
Equation of State Sub-Library: Version 0.910
|
Relativistic mean field theory EOS. More...
#include <rmf_eos.h>
This class computes the properties of nucleonic matter using a mean-field approximation to a field-theoretical model.
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.
The 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 in rmf_nucleus) 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.
The full Lagragian is:
The couplings cs
, cw
, and cr
are related to and
above by
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 couplings, cs
, cw
, and cr
all have units of , and the couplings
b
, c
, zeta
and xi
are unitless. The additional couplings from Steiner05b, have units of
and the couplings
have units of
.
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.
See also Muller96, Zimanyi90, and Steiner05b.
Public Member Functions | |
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. | |
Compute EOS | |
virtual int | calc_e (fermion &ne, fermion &pr, thermo <h) |
Equation of state as a function of density. | |
virtual int | calc_e_fields (fermion &ne, fermion &pr, thermo <h, double &sig, double &ome, double &rho) |
Equation of state as a function of density returning the meson fields. | |
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. | |
virtual int | calc_eq_temp_p (fermion &ne, fermion &pr, 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 at finite temperature. | |
virtual int | calc_temp_p (fermion &ne, fermion &pr, double T, thermo <h) |
Equation of state as a function of chemical potential. | |
int | calc_temp_e (fermion &ne, fermion &pr, double T, thermo <h) |
Equation of state as a function of densities at finite temperature. | |
Saturation properties | |
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 of 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. | |
Fields and field equations | |
int | field_eqs (size_t nv, const ovector_base &x, ovector_base &y) |
A function for solving the field equations. | |
int | field_eqsT (size_t nv, const ovector_base &x, ovector_base &y) |
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. | |
Data Fields | |
bool | zm_mode |
Modifies method of calculating effective masses (default false) | |
int | verbose |
Verbosity parameter. | |
bool | err_nonconv |
If true, throw exceptions when the function calc_e() does not converge (default true) | |
int | last_conv |
The convergence status of the last call to calc_e() | |
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_base &x, ovector_base &y) |
The function for fix_saturation() | |
virtual int | zero_pressure (size_t nv, const ovector_base &ex, ovector_base &ey) |
Compute matter at zero pressure (for saturation()) | |
virtual int | calc_e_solve_fun (size_t nv, const ovector_base &ex, ovector_base &ey) |
The function for calc_e() | |
virtual int | calc_temp_e_solve_fun (size_t nv, const ovector_base &ex, ovector_base &ey) |
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_baryon |
Desc. | |
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< mm_funct<> > * | sat_mroot |
The solver to compute saturation properties. | |
double | ce_temp |
Temperature storage for calc_temp_e() | |
The meson fields | |
double | sigma |
double | omega |
double | rho |
Solver | |
gsl_mroot_hybrids< mm_funct<> > | def_sat_mroot |
The default solver for calculating the saturation density. | |
virtual int | set_sat_mroot (mroot< mm_funct<> > &mrx) |
Set class mroot object for use calculating saturation 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_temp_pres.
Reimplemented in rmf_delta_eos.
virtual int rmf_eos::calc_e_fields | ( | fermion & | ne, |
fermion & | pr, | ||
thermo & | lth, | ||
double & | sig, | ||
double & | ome, | ||
double & | rho | ||
) | [virtual] |
Solves for the field equations automatically.
Implements hadronic_eos_temp_pres.
virtual int rmf_eos::calc_eq_p | ( | fermion & | neu, |
fermion & | p, | ||
double | sig, | ||
double | ome, | ||
double | rho, | ||
double & | f1, | ||
double & | f2, | ||
double & | f3, | ||
thermo & | th | ||
) | [virtual] |
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.
virtual int rmf_eos::calc_eq_temp_p | ( | fermion & | ne, |
fermion & | pr, | ||
double | temper, | ||
double | sig, | ||
double | ome, | ||
double | rho, | ||
double & | f1, | ||
double & | f2, | ||
double & | f3, | ||
thermo & | th | ||
) | [virtual] |
Analogous to calc_eq_p() except at finite temperature.
Solves for the field equations automatically.
Implements hadronic_eos_temp_pres.
int rmf_eos::fix_saturation | ( | double | guess_cs = 4.0 , |
double | guess_cw = 3.0 , |
||
double | guess_b = 0.001 , |
||
double | guess_c = -0.001 |
||
) |
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 rmf_eos::saturation | ( | ) | [virtual] |
This function first constructs an initial guess, increasing the chemical potentials if required to ensure the neutron and proton densities are finite, and then uses rmf_eos::sat_mroot to solve the field equations and ensure that the neutron and proton densities are equal and the pressure is zero. The quantities hadronic_eos::n0, hadronic_eos::eoa, and hadronic_eos::msom can be computed directly, and the compressibility, the skewness, and the symmetry energy are computed using the functions fkprime_fields() and fesym_fields(). This function overrides the generic version in hadronic_eos.
If verbose is greater than zero, then then this function reports details on the initial iterations to get the initial guess for the solver.
Reimplemented from hadronic_eos.
Reimplemented in rmf_delta_eos.
double rmf_eos::fesym_fields | ( | double | sig, |
double | ome, | ||
double | nb | ||
) |
This may only work at saturation density. Used by saturation().
double rmf_eos::fcomp_fields | ( | double | sig, |
double | ome, | ||
double | nb | ||
) |
This may only work at saturation density.
int rmf_eos::fkprime_fields | ( | double | sig, |
double | ome, | ||
double | nb, | ||
double & | k, | ||
double & | kprime | ||
) |
This may only work at saturation density. Used by saturation().
int rmf_eos::field_eqs | ( | size_t | nv, |
const ovector_base & | x, | ||
ovector_base & | y | ||
) |
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 rmf_eos::field_eqsT | ( | size_t | nv, |
const ovector_base & | x, | ||
ovector_base & | y | ||
) |
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 rmf_eos::get_fields | ( | double & | sig, |
double & | ome, | ||
double & | lrho | ||
) | [inline] |
This returns the most recent values of the meson fields set by a call to saturation(), calc_e(), or calc_p(fermion &, fermion &, thermo &).
int rmf_eos::check_naturalness | ( | rmf_eos & | re | ) | [inline] |
As given in Muller96 .
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 rmf_eos::naturalness_limits | ( | double | value, |
rmf_eos & | re | ||
) | [inline] |
int rmf_eos::calc_cr | ( | double | sig, |
double | ome, | ||
double | nb | ||
) | [protected] |
Used by fix_saturation().
int rmf_eos::verbose |
This is used by saturation() to report progress towards computing the properties of nuclear matter near saturation
double rmf_eos::mnuc |
Used by fn0() (which is called by saturation()) to solve saturation_matter_e() (1 variable).
double rmf_eos::n_charge [protected] |
Documentation generated with Doxygen. Provided under the GNU Free Documentation License (see License Information).