Class eos_crust (o2scl)

O2scl : Class List

class eos_crust : public o2scl::eos_base

Baym-Pethick-Sutherland equation of state.

This calculates the equation of state of electrons and nuclei using the approach of Baym et al. (1971; based on the discussion in Shapiro and Teukolsky (1983)) between about \(8 \times 10^{6} ~\mathrm{g}/\mathrm{cm}^3\) and \(4.3 \times 10^{11} ~\mathrm{g}/\mathrm{cm}^3\). Below these densities, more complex Coulomb corrections need to be considered, and above these densities, neutron drip is important.

The default mass formula is semi-empirical

\[\begin{split}\begin{eqnarray*} M(A,Z)&=&(A-Z) m_n+Z (m_p+m_e)- 15.76 A-17.81 A^{2/3} \\ && -0.71 Z^2 /A^{1/3}- 94.8/A \left(A/2-Z\right)^2+E_{\mathrm{pair}} \end{eqnarray*}\end{split}\]
where
\[ E_{\mathrm{pair}} = \pm 39/A^{3/4} \]
if the nucleus is odd-odd (plus sign) or even-even (minus sign) and \(E_{\mathrm{pair}}\) is zero for odd-even and even-odd nuclei. The nuclei are assumed not to contribute to the pressure. The electronic contribution to the pressure is assumed to be equal to the Fermi gas contribution plus a “lattice” contribution
\[ \varepsilon_L = -1.444 Z^{2/3} e^2 n_e^{4/3} \]
This is Eq. 2.7.2 in Shapiro and Teukolsky (1983). The rest mass energy of the nucleons is included in the energy density.

See [Shapiro83].

The original results from Baym et al. (1971) are stored as a table in file data/o2scl/bps.eos. The testing code for this class compares the calculations to the table and matches to within .2 percent for the energy density and 9 percent for the pressure (for a fixed baryon number density).

Idea for Future:

Can the pressure be made to match more closely?

Convert to a o2scl::eos_had_base object and offer an associated interface?

Public Types

typedef boost::numeric::ublas::vector<double> ubvector

Public Functions

eos_crust()
inline virtual ~eos_crust()
virtual int calc_density(double barn, int &Z, int &A)

Calculate the equation of state as a function of the baryon number density barn.

This calculates the equation of state as a function of the baryon number density in \(\mathrm{fm}^{-3}\), returning the representative nucleus with proton number Z and atomic number A. The pressure and energy density are returned in th in \(\mathrm{fm}^{-4}\).

virtual int calc_pressure(double &barn, int &Z, int &A)

Calculate the equation of state as a function of the pressure.

This calculates the equation of state as a function of the pressure, returning the representative nucleus with proton number Z and atomic number A and the baryon number density barn in \(\mathrm{fm}^{-3}\). The energy density is also returned in \(\mathrm{fm}^{-4}\) in th.

virtual double lattice_energy(int Z)

The electron lattice energy.

inline virtual const fermion &get_electron()

Get a pointer to the electron.

virtual double mass_formula(int Z, int A)

The mass formula.

The nuclear mass without the contribution of the rest mass of the electrons. The electron rest mass energy is included in the electron thermodynamics elsewhere.

inline virtual const char *type()

Return string denoting type (“eos_crust”)

inline int set_mass_formula(nucmass &nm)

Set the nuclear mass formula to be used.

int calc_density_fixedA(double barn, int &Z, int A)

Compute the ground state assuming a fixed atomic number.

inline virtual int beta_eq_T0(ubvector &nB_grid, ubvector &guess, eos_leptons &elep, std::shared_ptr<table_units<>> results)

Compute the EOS in beta-equilibrium at zero temperature.

This solves the function \ref solve_beta_eq_T0() . This
function is different from \ref o2scl::nstar_cold because it
is a generic interface which works for non-hadronic EOSs.
inline virtual int calc_temp_f_gen(double nB, double nQ, double nS, double T, thermo &th)

Equation of state as a function of baryon, charge, and strangeness density at finite temperature.

Public Members

nucmass_semi_empirical def_mass

Default mass formula.

fermion e

The electron thermodynamics.

Note

The electron rest mass is included by default in the energy density and the chemical potential

Protected Functions

virtual int eq274(size_t nv, const ubvector &nx, ubvector &ny, int Zt)

Solve Equation 2.7.4 for a given pressure.

double gibbs(int Z, int A)

The Gibbs free energy.

double energy(double barn, int Z, int A)

The energy density.

Protected Attributes

fermion_zerot fzt

Zero-temperature thermodynamics for the electrons.

mroot_hybrids<mm_funct> gs

A solver to solve Eq. 2.7.4.

nucmass *nmp

The nuclear mass formula.