Class eos_sn_base (o2scl)¶

class eos_sn_base¶
A base class for the supernova EOSs [abstract].
This class is experimental.
See also the general description in the Finitetemperature 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 (1Y_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 (1Y_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 (1Y_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 (1Y_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 baryononly 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,
andF
by adding electrons and photons to the baryon contributions stored inEint, Pint, Sint,
andFint
. Otherwise, this function computesEint, Pint, Sint,
andFint
by subtracting electron and photon contributions fromE, P, S,
andF
.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 inmue
(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
, andSint
.

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 inEint
andSint
(if baryons_only is true) and thatF
is consistent with that inE
andS
(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 hardcoded 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 betaequilibrium 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¶

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

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.

interp2_direct<ubvector, data_t, matrix_row_gen<data_t>, matrix_column_gen<data_t>> it¶