skyrme_eos Class Reference

Skyrme hadronic equation of state at zero temperature. More...

#include <skyrme_eos.h>

Inheritance diagram for skyrme_eos:

hadronic_eos_temp_eden hadronic_eos_temp hadronic_eos eos skyrme4_eos

Detailed Description

Skyrme hadronic equation of state at zero temperature.

Quantities which have units containing powers of energy are divided by $\hbar c$ to ensure all quantities are in units of $fm$. The $x_i$ and $\alpha$ are unitless, while the original units of the $t_i$ are:

These are stored internally with units of:

The class skyrme_eos_io uses o2scl_const::hc_mev_fm for I/O so that all files contain the parameters in the original units.

The chemical potentials do include the rest mass energy.

n.ed and p.ed contain tau_n and tau_p which are in fm^{-5}, not fm^{-4}.

The functions for the usual saturation properties are based partly on Brack85.

The Hamiltonian is defined below. $a=0,b=1$ gives the standard definition of the Skyrme Hamiltonian (ref?), while $a=1,b=0$ contains the modifications suggested by Osni94. Check also Dutta86.

\[ {\cal H} = {\cal H}_{k1} + {\cal H}_{k2} + {\cal H}_{k3} + {\cal H}_{p1} + {\cal H}_{p2} + {\cal H}_{p3} + {\cal H}_{g1} + {\cal H}_{g2} \]

The kinetic terms are:

\[ {\cal H}_{k1} = \frac{\tau_n}{2 m_n} + \frac{\tau_p}{2 m_p} \]

\[ {\cal H}_{k2} = n \left(\tau_n + \tau_p \right) \left[ \frac{t_1}{4} \left( 1 + \frac{x_1}{2} \right) + \frac{t_2}{4} \left( 1 + \frac{x_2}{2} \right) \right] \]

\[ {\cal H}_{k3} = \left( \tau_n n_n + \tau_p n_p \right) \left[ \frac{t_2}{4} \left( \frac{1}{2} + x_2 \right) - \frac{t_1}{4} \left( \frac{1}{2} + x_1 \right) \right] \]

The potential terms are:

\[ {\cal H}_{p1} = \frac{t_0}{2} \left[ \left( 1 + \frac{x_0}{2} \right) n^2 - \left( {\textstyle \frac{1}{2}} + x_0 \right) \left( n_n^2 + n_p^2 \right) \right] \]

\[ {\cal H}_{p2} = \frac{a t_3}{6} \left[ \left( 1 + \frac{x_3}{2} \right) n^{\alpha} n_n n_p + 2^{\alpha-2} \left(1 - x_3\right) \left(n_n^{\alpha+2} + n_p^{\alpha+2}\right) \right] \]

\[ {\cal H}_{p3} = \frac{b t_3}{12} \left[ \left(1 + \frac{x_3}{2} \right) n^{\alpha+2} - \left(\frac{1}{2} + x_3 \right) n^{\alpha} \left( n_n^2+n_p^2 \right) \right] \]

The gradient terms are displayed here for completeness even though they are not computed in the code:

\[ {\cal H}_{g1} = \frac{3}{32} \left[ t_1 \left(1 - x_1 \right) - t_2 \left(1 + x_2 \right) \right] \left[ \left( \nabla n_n\right)^2 + \left( \nabla n_p \right)^2 \right] \]

\[ {\cal H}_{g2} = \frac{1}{8} \left[ 3 t_1 \left( 1 + \frac{x_1}{2} \right) - t_2 \left(1 + \frac{x_2}{2} \right) \right] \nabla n_n \nabla n_p \]

A couple useful definitions:

\[ t_3^{\prime} = \left(a + b\right) t_3 \]

\[ C = \frac{3 }{10 m} \left( \frac{3 \pi^2 }{2} \right)^{2/3} \]

\[ \beta = \frac{M}{2} \left[ \frac{1}{4} \left( 3 t_1 + 5 t_2 \right) + t_2 x_2 \right] \\ \]

Models are taken from the references: Friedrich86, Dutta86, VanGiai81, Chabanat95, Chabanat97, Beiner75, Reinhard95, Bartel79, Dobaczewski94, Osni94, Tondeur84 and others. Some of the model parameter sets were obtained from Danielewicz08 .

See Mathematica notebook at skyrme_eos.nb, and skyrme_eos.ps.

Finite temperature documentation

The finite temperature extension is performed using the method Prakash97 (see also the Windsurfing the Fermi Sea proceedings by Prakash).

Returned chemical potentials include the rest mass, and energy densities include the rest mass energy density.

The variables n.nu and p.nu contain the expressions (-mu_n+V_n)/temper and (-mu_p+V_p)/temper respectively, where V is the potential part of the single particle energy for particle i (i.e. the derivative of the Hamiltonian wrt density while energy density held constant). Equivalently, n.nu is just -n.kf^2/2/mstar.

For y>4 we use a non-degenerate expansion, and for y<-40 we use a Sommerfeld expansion. For y>50 the code fails, but this is well outside the regime of applicability of this model.

Runs the zero temperature code if temper<=0.0.

The finite temperature code does not include attempt to include antiparticles and uses part::calc_density().

Note:
Since this EOS uses the effective masses and chemical potentials in the fermion class, the values of part::non_interacting for neutrons and protons are set to false in many of the functions.
Todos

Todo:
  • Make sure that this class properly handles particles for which inc_rest_mass is true/false
  • What about the spin-orbit units?
  • Need to write a function that calculates saturation density?
  • Remove use of mnuc in calparfun()?
  • The compressibility could probably use some simplification
  • Make sure the finite-temperature part is properly tested
  • The testing code doesn't work if err_mode is 2, probably because of problems in load().

Definition at line 227 of file skyrme_eos.h.


Public Member Functions

 skyrme_eos (std::string model)
 Load the model named 'model'.
virtual int calc_temp_e (fermion_T &ne, fermion_T &pr, const double temper, thermo &th)
 Equation of state as a function of densities.
virtual int calc_e (fermion &ne, fermion &pr, thermo &lt)
 Equation of state as a function of density.
int calpar (double gt0=-10.0, double gt3=70.0, double galpha=0.2, double gt1=2.0, double gt2=-1.0)
 Calculate $ t_0,t_1,t_2,t_3 $ and $ \alpha $ from the saturation properties.
int load (std::string model, bool external=false)
 Load parameters from model 'model'.
int check_landau (double nb, double m)
 Check the Landau parameters for instabilities.
int landau_nuclear (double n0, double m, double &f0, double &g0, double &f0p, double &g0p, double &f1, double &g1, double &f1p, double &g1p)
 Calculate the Landau parameters for nuclear matter.
int landau_neutron (double n0, double m, double &f0, double &g0, double &f1, double &g1)
 Calculate the Landau parameters for neutron matter.
virtual const char * type ()
 Return string denoting type ("skyrme_eos").
Saturation properties
These calculate the various saturation properties exactly from the parameters at any density. These routines often assume that the neutron and proton masses are equal.

virtual double feoa (double nb)
 Calculate binding energy.
virtual double fmsom (double nb)
 Calculate effective mass.
virtual double fcomp (double nb)
 Calculate compressibility.
virtual double fesym (const double nb, const double pf=0.5)
 Calculate symmetry energy.
virtual double fkprime (double nb)
 skewness

Data Fields

double t0
double t1
double t2
double t3
double x0
double x1
double x2
double x3
double alpha
double a
double b
double W0
 Spin-orbit splitting.
bool parent_method
 Use hadronic_eos methods for saturation properties.
nonrel_fermion def_nr_neutron
 Default nonrelativistic neutron.
nonrel_fermion def_nr_proton
 Default nonrelativistic proton.

Constructor & Destructor Documentation

skyrme_eos ( std::string  model  ) 

Load the model named 'model'.

See comments under skyrme_eos::load().


Member Function Documentation

int calpar ( double  gt0 = -10.0,
double  gt3 = 70.0,
double  galpha = 0.2,
double  gt1 = 2.0,
double  gt2 = -1.0 
)

Calculate $ t_0,t_1,t_2,t_3 $ and $ \alpha $ from the saturation properties.

In nuclear matter:

$ E_b=E_b(n_0,M^{*},t_0,t_3,\alpha) $
$ P=P(n_0,M^{*},t_0,t_3,\alpha) $
$ K=K(n_0,M^{*},t_3,\alpha) $ (the $ t_0 $ dependence vanishes)
$ M^{*}=M^{*}(n_0,t_1,t_2,x_2) $ (the $ x_1 $ dependence cancels),
$ E_{sym}=E_{sym}(x_0,x_1,x_2,x_3,t_0,t_1,t_2,t_3,\alpha) $

To fix the couplings from the saturation properties, we take $ n_0, M^{*}, E_b, K $ as inputs, and we can fix $ t_0,t_3,\alpha $ from the first three relations, then use $ M^{*}, E_b $ to fix $ t_2 $ and $ t_1 $. The separation into two solution steps should make for better convergence. All of the x's are free parameters and should be set before the function call.

The arguments gt0, gt3, galpha, gt1, and gt2 are used as initial guesses for t0, t3, alpha, t1, and t2 respectively.

Todo:
Does this work for both 'a' and 'b' non-zero?
Todo:
Compare to similar formulae from Margueron02

int check_landau ( double  nb,
double  m 
)

Check the Landau parameters for instabilities.

This returns zero if there are no instabilities.

virtual double fcomp ( double  nb  )  [virtual]

Calculate compressibility.

\[ K = 10 C n_B^{2/3} + \frac{27}{4} t_0 n_B + 40 C \beta n_B^{5/3} + \frac{9 t_3^{\prime}}{16} \alpha \left( \alpha+1 \right) n_B^{1 + \alpha} + \frac{9 t_3^{\prime}}{8} \left( \alpha+1 \right) n_B^{1 + \alpha} \]

Reimplemented from hadronic_eos.

virtual double feoa ( double  nb  )  [virtual]

Calculate binding energy.

\[ \frac{E}{A} = C n_B^{2/3} \left( 1 + \beta n_B \right) + \frac{3 t_0}{8} n_B + \frac{t_3^{\prime}}{16} n_B^{\alpha+1} \]

virtual double fesym ( const double  nb,
const double  pf = 0.5 
) [virtual]

Calculate symmetry energy.

If pf=0.5, then the exact expression below is used. Otherwise, the method from class hadronic_eos is used.

\[ E_{sym} = \frac{5}{9} C n^{2/3} + \frac{10 C m}{3} \left[ \frac{t_2}{6} \left(1 + \frac{5}{4} x_2 \right) - \frac{1}{8} t_1 x_1 \right] n^{5/3} - \frac{t_3^{\prime}}{24} \left({\textstyle \frac{1}{2}} + x_3 \right) n^{1+\alpha} - \frac{t_0}{4} \left( {\textstyle \frac{1}{2}} + x_0 \right) n \]

Reimplemented from hadronic_eos.

virtual double fkprime ( double  nb  )  [virtual]

skewness

\[ 2 C n_B^{2/3} \left(9-5/M^{*}/M\right)+ \frac{27 t_3^{\prime}}{16} n^{1+\alpha} \alpha \left(\alpha^2-1\right) \]

Reimplemented from hadronic_eos.

virtual double fmsom ( double  nb  )  [virtual]

Calculate effective mass.

\[ M^{*}/M = \left(1+ \beta n_B \right)^{-1} \\ \]

int landau_neutron ( double  n0,
double  m,
double &  f0,
double &  g0,
double &  f1,
double &  g1 
)

Calculate the Landau parameters for neutron matter.

Given 'n0' and 'm', this calculates the Landau parameters in neutron matter as given in Margueron02

Todo:
This needs to be checked
(Checked once on 11/05/03)

int landau_nuclear ( double  n0,
double  m,
double &  f0,
double &  g0,
double &  f0p,
double &  g0p,
double &  f1,
double &  g1,
double &  f1p,
double &  g1p 
)

Calculate the Landau parameters for nuclear matter.

Given n0 and m, this calculates the Landau parameters in nuclear matter as given in Margueron02

Todo:
This needs to be checked.
(Checked once on 11/05/03)

int load ( std::string  model,
bool  external = false 
)

Load parameters from model 'model'.

Presently accepted values from file skdata/model_list:

word[] models 164
a b BSk1 BSk10 BSk11 BSk12 BSk13 BSk14 BSk16 BSk2 BSk2p BSk3 
BSk4 BSk5 BSk6 BSk7 BSk8 BSk9 E Es FitA FitB FitK FitKs FitL 
Gs KDE0v KDE0v1 LNS Ly5 MSk1 MSk2 MSk3 MSk4 MSk5 MSk5s MSk6 
MSk7 MSk8 MSk9 MSkA mst0.81 mst0.90 mst1 NRAPR NRAPR2 PeEVs 
PeHF PeSIs QMC1 QMC2 QMC3 RATP Rs SGI SGII SI SII SIII SIIIs 
SIp SIV SK255 SK272 SkI1 SkI2 SkI3 SkI4 SkI5 SkI6 SkkT8 SkM 
SkM1 SkMDIx0 SkMDIx1 SkMDIxm1 SkMDIxm2 SkMP SkMs SkNF1 SkNF2 
SkO SkOp SkP SKRA SkSC1 SkSC10 SkSC11 SkSC14 SkSC15 SkSC2 
SkSC3 SkSC4 SkSC4o SkSC5 SkSC6 SkT SkT1 SkT1s SkT2 SkT3 SkT3s 
SkT4 SkT5 SkT6 SkT7 SkT8 SkT9 SkTK SkX SkXce SkXm Skxs15 
Skxs20 Skxs25 Skyrme1p SKz0 SKz1 SKz2 SKz3 SKz4 SKzm1 SLy0 
SLy1 SLy10 SLy2 SLy230a SLy230b SLy3 SLy4 SLy5 SLy6 SLy7 SLy8 
SLy9 SV SVI SVII SV-K241 SV-kap06 SV-mas10 SV-sym32 SV-bas 
SV-K218 SV-kap00 SV-mas07 SV-min SV-sym34 SV-K226 SV-kap02 
SV-mas08 SV-sym28 SV-tls T v070 v075 v080 v090 v100 v105 v110 Z 
Zs Zss



If external is true, then model is the filename (relative to the current directory) of the file containing the model parameters


Field Documentation

Use hadronic_eos methods for saturation properties.

This can be set to true to check the difference between the exact expressions and the numerical values from class hadronic_eos.

Definition at line 385 of file skyrme_eos.h.

double W0

Spin-orbit splitting.

This is unused, but included for possible future use and present in the internally stored models.

Definition at line 238 of file skyrme_eos.h.


The documentation for this class was generated from the following file:

Documentation generated with Doxygen and provided under the GNU Free Documentation License. See License Information for details.

Project hosting provided by SourceForge.net Logo, O2scl Sourceforge Project Page