Equation of State Sub-Library: Version 0.910
Public Member Functions | Data Fields
skyrme_eos Class Reference

Skyrme hadronic equation of state. More...

#include <skyrme_eos.h>

Inheritance diagram for skyrme_eos:
hadronic_eos_temp_eden hadronic_eos_temp hadronic_eos eos skyrme4_eos

Detailed Description

Equation of state of nucleonic matter based on the Skryme interaction from Skyrme59 .


Background:

The Hamiltonian is defined (using the notation of Steiner05b )

\[ {\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] \]

where $ \tau_i $ are defined

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 \]

The values $ a=0, b=1 $ give the standard definition of the Skyrme Hamiltonian Skyrme59, while $a=1, b=0$ contains the modifications suggested by Onsi94.

Also, 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} \, , \]

and

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


Units:

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.


Misc:

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

Models are taken from the references: Bartel79, Beiner75, Chabanat95, Chabanat97, Danielewicz08, Dobaczewski94, Dutta86, Friedrich86, Onsi94, Reinhard95, and Tondeur84, and VanGiai81 .

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

The variables $ \nu_n$ and $ \nu_p$ contain the expressions $ (-\mu_n+V_n)/T $ and $ (-\mu_p+V_p)/T $ respectively, where $ V $ 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, $ \nu_n$ is just $ -k_{F_n}^2/ 2 m^{*} $.

Note:
The finite temperature code does not include attempt to include antiparticles and uses part::calc_density().
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.

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().
  • Document load() file format.
  • Update reference list.
Idea for Future:

Definition at line 218 of file skyrme_eos.h.

Public Member Functions

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 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")
Basic usage
 skyrme_eos ()
 Create a blank Skyrme EOS.
virtual ~skyrme_eos ()
 Destructor.
virtual int calc_temp_e (fermion &ne, fermion &pr, 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.
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 (double nb, double alpha=0.0)
 Calculate symmetry energy.
virtual double fkprime (double nb)
 skewness

Data Fields

double W0
 Spin-orbit splitting.
bool parent_method
 Use hadronic_eos methods for saturation properties.
bool mu_at_zero_density
 Desc.
Basic Skyrme model parameters
double t0
double t1
double t2
double t3
double x0
double x1
double x2
double x3
double alpha
double a
double b

Member Function Documentation

virtual int skyrme_eos::calc_temp_e ( fermion ne,
fermion pr,
double  temper,
thermo th 
) [virtual]
Note:
Runs the zero temperature code if temper is less than or equal to zero.

Implements hadronic_eos_temp_eden.

virtual double skyrme_eos::feoa ( double  nb) [virtual]

\[ \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 skyrme_eos::fmsom ( double  nb) [virtual]

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

virtual double skyrme_eos::fcomp ( double  nb) [virtual]

\[ 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} \]

virtual double skyrme_eos::fesym ( double  nb,
double  alpha = 0.0 
) [virtual]

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 \]

virtual double skyrme_eos::fkprime ( double  nb) [virtual]

\[ 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) \]

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

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 skyme_eos::t0, skyrme_eos::t3, skyrme_eos::alpha, skyrme_eos::t1, and skyrme_eos::t2 respectively.

Todo:
Does this work for both 'a' and 'b' non-zero?
Todo:
Compare to similar formulae from Margueron02
int skyrme_eos::check_landau ( double  nb,
double  m 
)

This returns zero if there are no instabilities.

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

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 skyrme_eos::landau_neutron ( double  n0,
double  m,
double &  f0,
double &  g0,
double &  f1,
double &  g1 
)

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)


Field Documentation

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

Definition at line 231 of file skyrme_eos.h.

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 362 of file skyrme_eos.h.


The documentation for this class was generated from the following file:
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Friends

Documentation generated with Doxygen. Provided under the GNU Free Documentation License (see License Information).

Get Object-oriented Scientific Computing
Lib at SourceForge.net. Fast, secure and Free Open Source software
downloads.