Class eos_had_apr (o2scl)

O2scl : Class List

class eos_had_apr : public o2scl::eos_had_temp_eden_base

EOS from Akmal, Pandharipande, and Ravenhall.

The EOS of Akmal, Pandharipande, and Ravenhall, from [Akmal98eo] (APR).

The Hamiltonian is:

\[ {\cal H}_{APR} = {\cal H}_{kin} + {\cal H}_{pot} \]

\[ {\cal H}_{kin} = \left\{ \frac{\hbar^2}{2 m} + \left[ p_3 + \left( 1 - x \right) p_5 \right] n e^{-p_4 n} \right\} \tau_n + \left\{ \frac{\hbar^2}{2 m} + \left[ p_3 + x p_5 \right] n e^{-p_4 n} \right\} \tau_p \]

\[ {\cal H}_{pot} = g_1 \left[ 1 - \left( 1 - 2 x \right)^2 \right] + g_2 \left( 1 - 2 x \right)^2 \]

The following are definitions for \( g_i \) in the low-density phase (LDP) or the high-density phase (HDP):

\[ g_{1,LDP} = -n^2 \left[ p_1 + p_2 n + p_6 n^2 + \left( p_{10} + p_{11} n \right) e^{-p_9^2 n^2} \right] \]

\[ g_{2,LDP} = -n^2 \left[ \frac{p_{12}}{n} + p_7 + p_8 n + p_{13} e^{-p_9^2 n^2} \right] \]

\[ g_{1,HDP} = g_{1,LDP} -n^2 \left[ p_{17} \left( n - p_{19} \right) + p_{21} \left( n - p_{19} \right)^2 e^{p_{18} \left( n - p_{19} \right) } \right] \]

\[ g_{2,HDP} = g_{2,LDP} -n^2 \left[ p_{15} \left( n - p_{20} \right) + p_{14} \left( n - p_{20} \right)^2 e^{p_{16} \left( n - p_{20} \right)} \right] \]

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^{*} \).

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 \( \mathrm{fm}^{-3} \), and for larger densities to just use whichever minimizes the energy.

The finite temperature approximations from [Prakash97ca] are used in testing.

Idea for Future:

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.

Note

APR seems to have been designed to be used with non-relativistic neutrons and protons with equal masses of 939 MeV. This gives a saturation density very close to 0.16.

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.

Note

The parameter array is unit indexed, so that par[0] is unused. This choice makes the connection between the code and the paper a bit more transparent.

Subclassed by o2scl::eos_had_sym4_apr

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)

inline int last_phase()

Return the phase of the most recent call to calc_e()

This function always returns either eos_had_apr::ldp or eos_had_apr::hdp .

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.

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.

Note

This cannot be virtual because it is called by the constructor

inline double get_par(size_t n)

Get the value of one of the model parameters.

inline 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)

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.

Idea for Future:

This variable is probably unnecessary, as the syntax

eos_had_apr apr;
ccout << apr.eos_had_base::fcomp(0.16) << endl;
works just as well.

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.

For general discussion, see the documentation to eos_had_base::qs().

For APR, we set \( x_1=x_2=0 \) so that \( Q_i=P_i/2 \) and then

\[\begin{split}\begin{eqnarray*} P_1 &=& \left(\frac{1}{2} p_3-p_5 \right) e^{-p_4 n} \nonumber \\ P_2 &=& \left(\frac{1}{2} p_3+p_5 \right) e^{-p_4 n} \end{eqnarray*}\end{split}\]

This gives

\[\begin{split}\begin{eqnarray*} Q_{nn}&=&\frac{1}{4} e^{-p_4 \rho} \left[ -6 p_5 - p_4 (p_3 - 2 p_5) (n_n + 2 n_p) \right] \nonumber \\ Q_{np}&=&\frac{1}{8} e^{-p_4 \rho} \left[ 4 (p_3 - 4 p_5) - 3 p_4 (p_3 - 2 p_5) (n_n + n_p)\right] \nonumber \\ Q_{pp}&=&\frac{1}{4} e^{-p_4 \rho} \left[ -6 p_5 - p_4 (p_3 - 2 p_5) (n_p + 2 n_n) \right] \end{eqnarray*}\end{split}\]

inline virtual const char *type()

Return string denoting type (“eos_had_apr”)

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)

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 double fesym_diff(double nb)

Calculate symmetry energy of matter as energy of neutron matter minus the energy of nuclear matter.

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 \( \delta \) is not quadratic.

Public Functions

eos_had_apr()

Create an EOS object with the default parameter set ( \( A18 + \mathrm{UIX}^{*}+\delta v \)).

virtual ~eos_had_apr()

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()