8#include <ryujin/base/compile_time_options.h>
13 namespace EquationsOfState
32 this->add_parameter(
"gamma", gamma_,
"The ratio of specific heats");
41 "gas constant R", R_,
"The specific gas constant R");
43 cv_ = R_ / (gamma_ - 1.);
47 "covolume b", b_,
"The maximum compressibility constant");
50 this->add_parameter(
"reference specific internal energy",
52 "The reference specific internal energy");
56 "reference pressure", pinf_,
"The reference pressure p infinity");
59 this->add_parameter(
"reference specific entropy",
61 "The reference specific entropy");
66 ParameterAcceptor::parse_parameters_call_back.connect([
this] {
70 cv_ = R_ / (gamma_ - 1.);
80 double pressure(
double rho,
double e)
const final
82 return (gamma_ - 1.) * rho * (e - q_) / (1. - b_ * rho) -
95 const auto numerator = (p + gamma_ * pinf_) * (1. - b_ * rho);
96 const auto denominator = rho * (gamma_ - 1.);
97 return q_ + numerator / denominator;
108 return (e - q_ - pinf_ * (1. / rho - b_)) / cv_;
119 return q_ + pinf_ * (1. / rho - b_);
135 const auto covolume_term = 1. / rho - b_;
136 const auto p_plus_pinf =
137 (gamma_ - 1.) * ((e - q_) - pinf_ * covolume_term) / covolume_term;
138 const auto first_term = cv_ * std::log(p_plus_pinf);
139 const auto second_term =
140 cv_ * gamma_ * std::log((gamma_ - 1.) * cv_ / covolume_term);
141 return first_term - second_term + s0_;
153 const auto covolume = 1. - b_ * rho;
155 (rho * (e - q_) - pinf_ * covolume) / (covolume * covolume * rho);
156 radicand *= gamma_ * (gamma_ - 1.);
157 return std::sqrt(radicand);
virtual double pressure(double rho, double e) const =0
virtual double temperature(double, double) const
double interpolation_pinfty_
double covolume_constant_
virtual double speed_of_sound(double, double) const
virtual double specific_internal_energy(double rho, double p) const =0
double specific_internal_energy(double rho, double p) const final
NobleAbelStiffenedGas(const std::string &subsection)
double speed_of_sound(double rho, double e) const final
double cold_curve_bound(double rho) const final
double pressure(double rho, double e) const final
double temperature(double rho, double e) const final
double specific_entropy(double rho, double e) const final