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; }
149 static double density(
double T,
double mub,
double mus);
159 static double pressure(
double T,
double mub,
double mus) {
160 return T *
density(T, mub, mus);
235 std::array<double, 3>
solve_eos(
double e,
double nb,
double ns,
236 std::array<double, 3> initial_approximation);
248 std::array<double, 3>
solve_eos(
double e,
double nb,
double ns) {
321 double mub,
double mus);
328 static double e_equation(
double T,
void* params);
368 #endif // SRC_INCLUDE_HADGAS_EOS_H_ HadronGasEos(const bool tabulate=false)
Constructor of HadronGasEos.
A class to hold, compute and access tabulated EoS.
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...
std::string print_solver_state(size_t iter) const
Helpful printout, useful for debugging if gnu equation solving goes crazy.
double mub
Net baryochemical potential.
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...
static double net_strange_density(double T, double mub, double mus)
Compute net strangeness density.
Class to handle the equation of state (EoS) of the hadron gas, consisting of all hadrons included int...
Collection of useful constants that are known at compile time.
static int set_eos_solver_equations(const gsl_vector *x, void *params, gsl_vector *f)
Interface EoS equations to be solved to gnu library.
static double scaled_partial_density(const ParticleType &ptype, double beta, double mub, double mus)
Compute (unnormalized) density of one hadron sort - helper functions used to reduce code duplication...
double mus
Net strangeness potential.
double dnb_
Step in net-baryon density.
static constexpr size_t n_equations_
Number of equations in the system of equations to be solved.
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...
static bool is_eos_particle(const ParticleType &ptype)
Check if a particle belongs to the EoS.
constexpr double hbarc
GeV <-> fm conversion factor.
EosTable eos_table_
EOS Table to be used.
static constexpr double prefactor_
Constant factor, that appears in front of many thermodyn. expressions.
size_t n_nb_
Number of steos in net-baryon density.
static constexpr double tolerance_
Precision of equation solving.
size_t index(size_t ie, size_t inb) const
proper index in a 1d vector, where the 2d table is stored
size_t n_e_
Number of steps in energy density.
double edens
energy density
static double net_baryon_density(double T, double mub, double mus)
Compute net baryon density.
gsl_multiroot_fsolver * solver_
bool is_tabulated() const
Create an EoS table or not?
Particle type contains the static properties of a particle species.
double nb
net baryon density
A structure for passing equation parameters to the gnu library.
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...
static double sample_mass_thermal(const ParticleType &ptype, double beta)
Sample resonance mass in a thermal medium.
Define the data structure for one element of the table.
static double density(double T, double mub, double mus)
Compute particle number density.
std::array< double, 3 > solve_eos_initial_approximation(double e, double nb)
Compute a reasonable initial approximation for solve_eos.
gsl_vector * x_
Variables used by gnu equation solver.
double ns
net strange density
static double partial_density(const ParticleType &ptype, double T, double mub, double mus)
Compute partial density of one hadron sort.
const bool tabulate_
Create an EoS table or not?
Another structure for passing energy density to the gnu library.
static double mus_net_strangeness0(double T, double mub)
Compute strangeness chemical potential, requiring that net strangeness = 0.
static double scaled_partial_density_auxiliary(double m_over_T, double mu_over_T)
Function used to avoid duplications in density calculations.
double de_
Step in energy density.
std::vector< table_element > table_
Storage for the tabulated equation of state.
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...
static double e_equation(double T, void *params)
void from_table(EosTable::table_element &res, double e, double nb) const
Get the element of eos table.
T beta(T a, T b)
Draws a random number from a beta-distribution, where probability density of is .
static double pressure(double T, double mub, double mus)
Compute pressure .
static double energy_density(double T, double mub, double mus)
Compute energy density.