 |
Version: SMASH-1.8
|
|
Go to the documentation of this file.
9 #ifndef SRC_INCLUDE_HADGAS_EOS_H_
10 #define SRC_INCLUDE_HADGAS_EOS_H_
12 #include <gsl/gsl_multiroots.h>
13 #include <gsl/gsl_roots.h>
14 #include <gsl/gsl_vector.h>
53 EosTable(
double de,
double dnb,
size_t n_e,
size_t n_b);
74 const std::string& eos_savefile_name =
"hadgas_eos.dat");
87 size_t index(
size_t ie,
size_t inb)
const {
return ie *
n_nb_ + inb; }
167 static double density(
double T,
double mub,
double mus,
180 static double pressure(
double T,
double mub,
double mus,
266 std::array<double, 3>
solve_eos(
double e,
double nb,
double ns,
267 std::array<double, 3> initial_approximation);
279 std::array<double, 3>
solve_eos(
double e,
double nb,
double ns) {
362 double mub,
double mus,
363 bool account_for_width =
false);
370 static double e_equation(
double T,
void* params);
413 #endif // SRC_INCLUDE_HADGAS_EOS_H_
Class to handle the equation of state (EoS) of the hadron gas, consisting of all hadrons included int...
std::array< double, 3 > solve_eos(double e, double nb, double ns, std::array< double, 3 > initial_approximation)
Compute temperature and chemical potentials given energy-, net baryon-, net strangeness density and a...
void from_table(EosTable::table_element &res, double e, double nb) const
Get the element of eos table.
EosTable eos_table_
EOS Table to be used.
static double density(double T, double mub, double mus, bool account_for_resonance_widths=false)
Compute particle number density.
static double partial_density(const ParticleType &ptype, double T, double mub, double mus, bool account_for_resonance_widths=false)
Compute partial density of one hadron sort.
std::array< double, 3 > solve_eos(double e, double nb, double ns)
Compute temperature and chemical potentials given energy-, net baryon- and net strangeness density wi...
gsl_multiroot_fsolver * solver_
static double net_strange_density(double T, double mub, double mus, bool account_for_resonance_widths=false)
Compute net strangeness density.
Another structure for passing energy density to the gnu library.
static double scaled_partial_density_auxiliary(double m_over_T, double mu_over_T)
Function used to avoid duplications in density calculations.
size_t index(size_t ie, size_t inb) const
proper index in a 1d vector, where the 2d table is stored
bool account_for_width
use pole masses of resonances, or integrate over spectral functions
std::array< double, 3 > solve_eos_initial_approximation(double e, double nb)
Compute a reasonable initial approximation for solve_eos.
static constexpr double tolerance_
Precision of equation solving.
size_t n_e_
Number of steps in energy density.
static double e_equation(double T, void *params)
double dnb_
Step in net-baryon density.
static constexpr double prefactor_
Constant factor, that appears in front of many thermodyn. expressions.
const bool account_for_resonance_widths_
Use pole masses of resonances or integrate over spectral functions.
HadronGasEos(bool tabulate, bool account_for_widths)
Constructor of HadronGasEos.
double mub
Net baryochemical potential.
constexpr double hbarc
GeV <-> fm conversion factor.
EosTable(double de, double dnb, size_t n_e, size_t n_b)
Sets up a table p/T/muB/mus versus (e, nb), where e is energy density, nb is net baryon density,...
T beta(T a, T b)
Draws a random number from a beta-distribution, where probability density of is .
std::string print_solver_state(size_t iter) const
Helpful printout, useful for debugging if gnu equation solving goes crazy.
bool is_tabulated() const
Create an EoS table or not?
size_t n_nb_
Number of steos in net-baryon density.
double ns
net strange density
gsl_vector * x_
Variables used by gnu equation solver.
static double sample_mass_thermal(const ParticleType &ptype, double beta)
Sample resonance mass in a thermal medium.
bool account_for_resonance_widths() const
If resonance spectral functions are taken into account.
static double scaled_partial_density(const ParticleType &ptype, double beta, double mub, double mus, bool account_for_width=false)
Compute (unnormalized) density of one hadron sort - helper functions used to reduce code duplication.
static double net_baryon_density(double T, double mub, double mus, bool account_for_resonance_widths=false)
Compute net baryon density.
const bool tabulate_
Create an EoS table or not?
void get(table_element &res, double e, double nb) const
Obtain interpolated p/T/muB/muS from the tabulated equation of state given energy density and net bar...
double mus
Net strangeness potential.
static double mus_net_strangeness0(double T, double mub)
Compute strangeness chemical potential, requiring that net strangeness = 0.
Define the data structure for one element of the table.
static int set_eos_solver_equations(const gsl_vector *x, void *params, gsl_vector *f)
Interface EoS equations to be solved to gnu library.
double nb
net baryon density
static constexpr size_t n_equations_
Number of equations in the system of equations to be solved.
static bool is_eos_particle(const ParticleType &ptype)
Check if a particle belongs to the EoS.
double de_
Step in energy density.
A class to hold, compute and access tabulated EoS.
std::vector< table_element > table_
Storage for the tabulated equation of state.
double edens
energy density
static double pressure(double T, double mub, double mus, bool account_for_resonance_widths=false)
Compute pressure .
A structure for passing equation parameters to the gnu library.
void compile_table(HadronGasEos &eos, const std::string &eos_savefile_name="hadgas_eos.dat")
Computes the actual content of the table (for EosTable description see documentation of the construct...
static double energy_density(double T, double mub, double mus)
Compute energy density.