Class eos_sn_base (o2scl)

O2scl : Class List

class eos_sn_base

A base class for the supernova EOSs [abstract].

This class is experimental.

See also the general description in the Finite-temperature Equation of State Tables section of the User’s guide.

Idea for Future:

Add option to rescale energies and chemical potentials to different masses.

Create a o2scl::table object, possibly using tensor_grid::vector_slice.

Show how matrix_slice and vector_slice can be used with this object (Is this done in ex_eos_sn or is this made obsolete by the tensor rearrange function?)

Add option to load and store a separate lepton/photon EOS

Subclassed by o2scl::eos_sn_compose, o2scl::eos_sn_hfsl, o2scl::eos_sn_ls, o2scl::eos_sn_oo, o2scl::eos_sn_sht, o2scl::eos_sn_stos

Grid and data sizes

size_t n_nB

Size of baryon density grid.

size_t n_Ye

Size of electron fraction grid.

size_t n_T

Size of temperature grid.

std::vector<double> nB_grid

Baryon density grid (in \( \mathrm{fm}^{-3} \))

std::vector<double> Ye_grid

Electron fraction grid.

std::vector<double> T_grid

Temperature grid (in \( \mathrm{MeV} \))

size_t n_oth

Number of additional data sets.

eos_leptons elep

EOS of leptons and photons.

static const size_t n_base = 16

Number of base data sets.

Data

tensor_grid3 F

Total free energy per baryon in MeV (without baryon rest masses but including electron rest mass)

By default, this energy is relative to

\[ m_n (1-Y_e) + m_p Y_e \]
where \( m_n \) is stored in m_neut and \( m_p \) is stored in m_prot .

tensor_grid3 Fint

Free energy per baryon without lepton and photon contributions in MeV.

By default, this energy is relative to

\[ m_n (1-Y_e) + m_p Y_e \]
where \( m_n \) is stored in m_neut and \( m_p \) is stored in m_prot .

tensor_grid3 E

Total internal energy per baryon in MeV (without baryon rest masses but including electron rest mass)

By default, this energy is relative to

\[ m_n (1-Y_e) + m_p Y_e \]
where \( m_n \) is stored in m_neut and \( m_p \) is stored in m_prot .

tensor_grid3 Eint

Internal energy per baryon without lepton and photon contributions in MeV.

By default, this energy is relative to

\[ m_n (1-Y_e) + m_p Y_e \]
where \( m_n \) is stored in m_neut and \( m_p \) is stored in m_prot .

tensor_grid3 P

Total pressure in \( \mathrm{MeV}/\mathrm{fm}^3 \).

tensor_grid3 Pint

Pressure without lepton and photon contributions in \( \mathrm{MeV}/\mathrm{fm}^3 \).

tensor_grid3 S

Total entropy per baryon.

tensor_grid3 Sint

Entry per baryon without lepton and photon contributions.

tensor_grid3 mun

Neutron chemical potential in MeV.

By default this is relative to the neutron mass in m_neut .

tensor_grid3 mup

Proton chemical potential in MeV.

By default this is relative to the proton mass in m_prot .

tensor_grid3 Z

Proton number.

tensor_grid3 A

Mass number.

tensor_grid3 Xn

Neutron baryon fraction.

tensor_grid3 Xp

Proton baryon fraction.

tensor_grid3 Xalpha

Alpha particle baryon fraction.

tensor_grid3 Xnuclei

Heavy nuclei baryon fraction.

tensor_grid3 other[30]

Other data sets.

tensor_grid3 *arr[n_base + 30]

List of pointers to data.

void check_composition(double &max1, double &max2)

Check the table composition entries.

Nucleon masses

double m_neut

Neutron mass in \( \mathrm{MeV} \) (defaults to o2scl_mks::mass_neutron times o2scl_const::hc_mev_fm)

double m_prot

Proton mass in \( \mathrm{MeV} \) (defaults to o2scl_mks::mass_proton times o2scl_const::hc_mev_fm)

Electron and photon contribution

boson photon

Photon.

fermion electron

Electron.

fermion muon

Muon.

bool include_muons

If true, include muons.

fermion_rel relf

Relativistic fermion thermodynamics.

int verbose

Verbosity parameter (default 1)

std::vector<std::string> oth_names

Labels for the extra data sets included in current EOS.

std::vector<std::string> oth_units

Units for the extra data sets included in current EOS.

convert_units<double> &cu

Unit conversion object (set automatically in constructor)

bool loaded

If true, a EOS table was successfully loaded (default false)

bool with_leptons

True if thermodynamics with leptons has been loaded.

bool baryons_only

True if baryon-only thermodynamics has been loaded.

virtual void compute_eg()

Compute the electron and photon contribution for the full grid.

If baryons_only is true, this function computes the data for E, P, S, and F by adding electrons and photons to the baryon contributions stored in Eint, Pint, Sint, and Fint. Otherwise, this function computes Eint, Pint, Sint, and Fint by subtracting electron and photon contributions from E, P, S, and F.

The electron contribution to the internal energy and free energy computed by this function includes the electron rest mass.

virtual void compute_eg_point(double nB, double Ye, double TMeV, thermo &th, double &mue)

Compute lepton contribution at one point.

The temperature is to be specified in MeV. An initial guess for the electron chemical potential, mue, should be stored in units of \( \mathrm{fm}^{-1} \). This value should also include the electron rest mass. After completion, the final value of the electron chemical potential will be stored in mue (including the rest mass).

This function will fail if a sufficiently poor initial guess is given.

virtual double check_eg()

Check electrons and photons.

This checks that the electron and photon thermodynamics generated by is consistent with the data in E, Eint, F, Fint, P, Pint, S, and Sint.

void check_free_energy(double &avg)

Test the free energy and store results in tm.

This checks that the data in Fint is consistent with that in Eint and Sint (if baryons_only is true) and that F is consistent with that in E and S (if with_leptons is true).

virtual void beta_eq_sfixed(double nB, double entr, double &Ye, double &T)

Compute properties of matter in beta equilibrium at fixed entropy per baryon.

This function just does a simple hard-coded linear interpolation.

The temperature is returned in units of MeV.

virtual void beta_eq_Tfixed(double nB, double T, double &Ye)

Compute the electron fraction for beta-equilibrium at fixed density and temperature.

This function just uses linear interpolation to interpolate in baryon density and temperature and the uses a quadratic to determine the minimum of the free energy.

If data_with_leptons() is false, then compute_eg() is used to compute the leptons.

inline bool is_loaded()

Return true if data has been loaded.

void free()

Free allocated memory.

inline bool data_with_leptons()

Return true if data with lepton information has been loaded.

inline bool data_baryons_only()

Return true if data with only baryon information has been loaded.

virtual void load(std::string fname, size_t mode)
virtual void output(std::string fname)

Interpolation

void set_interp_type(size_t interp_type)

Set the interpolation type of all the o2scl::tensor_grid3 objects to type interp_type .

Note

This is used by the constructor to set all tensors to linear interpolation.

Memory allocation

void alloc()

Allocate memory.

Public Types

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

Public Functions

eos_sn_base()
virtual ~eos_sn_base()
class slice

A slice of data from eos_sn_base for one index fixed.

This class allows one to easily construct a o2scl::interp2_direct object automatically by fixing one index from one of the o2scl::tensor_grid3 objects in a child of o2scl::eos_sn_base .

Grid vectors

ubvector grid_x
ubvector grid_y
interp2_direct<ubvector, data_t, matrix_row_gen<data_t>, matrix_column_gen<data_t>> it

The interpolation object.

inline void set_nB_T(tensor_grid3<> &tg3, size_t iYe)

Set the slice to correspond to a matrix in the form \( (n_B,T) \).

inline void set_nB_Ye(tensor_grid3<> &tg3, size_t iT)

Set the slice to correspond to a matrix in the form \( (n_B,Y_e) \).

inline void set_T_Ye(tensor_grid3<> &tg3, size_t inB)

Set the slice to correspond to a matrix in the form \( (T,Y_e) \).

Public Types

typedef std::function<double&(size_t, size_t)> data_t

Typedef for the matrix type.

Public Members

data_t data

Data object in the form of a matrix.