8#include <compile_time_options.h>
12#include <deal.II/base/array_view.h>
13#include <deal.II/base/exceptions.h>
14#include <deal.II/base/parameter_acceptor.h>
15#include <deal.II/base/tensor.h>
21 namespace EquationOfStateLibrary
38 : ParameterAcceptor(subsection +
"/" + name)
59 virtual double pressure(
double rho,
double e)
const = 0;
71 virtual void pressure(
const dealii::ArrayView<double> &p,
72 const dealii::ArrayView<double> &rho,
73 const dealii::ArrayView<double> &e)
const
75 Assert(p.size() == rho.size() && rho.size() == e.size(),
76 dealii::ExcMessage(
"vectors have different size"));
78 std::transform(std::begin(rho),
82 [&](
double rho,
double e) {
return pressure(rho, e); });
103 const dealii::ArrayView<double> &rho,
104 const dealii::ArrayView<double> &p)
const
106 Assert(p.size() == rho.size() && rho.size() == e.size(),
107 dealii::ExcMessage(
"vectors have different size"));
109 std::transform(std::begin(rho),
113 [&](
double rho,
double p) {
135 const dealii::ArrayView<double> &rho,
136 const dealii::ArrayView<double> &e)
const
138 Assert(T.size() == rho.size() && rho.size() == e.size(),
139 dealii::ExcMessage(
"vectors have different size"));
146 [&](
double rho,
double e) {
return temperature(rho, e); });
166 const dealii::ArrayView<double> &rho,
167 const dealii::ArrayView<double> &e)
const
169 Assert(c.size() == rho.size() && rho.size() == e.size(),
170 dealii::ExcMessage(
"vectors have different size"));
208 const std::string name_;
virtual double specific_internal_energy(double rho, double p) const =0
virtual void pressure(const dealii::ArrayView< double > &p, const dealii::ArrayView< double > &rho, const dealii::ArrayView< double > &e) const
virtual double pressure(double rho, double e) const =0
virtual void specific_internal_energy(const dealii::ArrayView< double > &e, const dealii::ArrayView< double > &rho, const dealii::ArrayView< double > &p) const
virtual void speed_of_sound(const dealii::ArrayView< double > &c, const dealii::ArrayView< double > &rho, const dealii::ArrayView< double > &e) const
virtual double speed_of_sound(double rho, double e) const =0
virtual double temperature(double rho, double e) const =0
EquationOfState(const std::string &name, const std::string &subsection)
bool prefer_vector_interface_
virtual void temperature(const dealii::ArrayView< double > &T, const dealii::ArrayView< double > &rho, const dealii::ArrayView< double > &e) const
#define ACCESSOR_READ_ONLY(member)