10#include <deal.II/base/function_parser.h>
14 namespace EquationOfStateLibrary
27 p_expression_ =
"(1.4 - 1.0) * rho * e";
31 "A function expression for the pressure as a function of density, "
32 "rho, and specific internal energy, e: p(rho, e)");
34 sie_expression_ =
"p / (rho * (1.4 - 1.0))";
36 "specific internal energy",
38 "A function expression for the specific internal energy as a "
39 "function of density, rho, and pressure, p: e(rho, p)");
41 temperature_expression_ =
"e / 718.";
42 add_parameter(
"temperature",
43 temperature_expression_,
44 "A function expression for the temperature as a "
45 "function of density, rho, and specific internal energy, "
48 sos_expression_ =
"sqrt(1.4 * (1.4 - 1.0) * e)";
52 "A function expression for the speed of sound as a function of "
53 "density, rho, and specific internal energy, e: s(rho, e)");
59 const auto set_up_muparser = [
this] {
60 p_function_ = std::make_unique<dealii::FunctionParser<2>>();
61 p_function_->initialize(
"rho,e", p_expression_, {});
63 sie_function_ = std::make_unique<dealii::FunctionParser<2>>();
64 sie_function_->initialize(
"rho,p", sie_expression_, {});
66 temperature_function_ = std::make_unique<dealii::FunctionParser<2>>();
67 temperature_function_->initialize(
68 "rho,e", temperature_expression_, {});
70 sos_function_ = std::make_unique<dealii::FunctionParser<2>>();
71 sos_function_->initialize(
"rho,e", sos_expression_, {});
75 ParameterAcceptor::parse_parameters_call_back.connect(set_up_muparser);
78 double pressure(
double rho,
double e)
const final
80 return p_function_->value(dealii::Point<2>(rho, e));
85 return sie_function_->value(dealii::Point<2>(rho, p));
90 return temperature_function_->value(dealii::Point<2>(rho, e));
95 return sos_function_->value(dealii::Point<2>(rho, e));
99 std::string p_expression_;
100 std::string sie_expression_;
101 std::string sos_expression_;
102 std::string temperature_expression_;
104 std::unique_ptr<dealii::FunctionParser<2>> p_function_;
105 std::unique_ptr<dealii::FunctionParser<2>> sie_function_;
106 std::unique_ptr<dealii::FunctionParser<2>> sos_function_;
107 std::unique_ptr<dealii::FunctionParser<2>> temperature_function_;
double specific_internal_energy(double rho, double p) const final
double temperature(double rho, double e) const final
double speed_of_sound(double rho, double e) const final
Function(const std::string &subsection)
double pressure(double rho, double e) const final