1#ifndef MODEL_GAS_EOS_H_
2#define MODEL_GAS_EOS_H_
15template<
typename... OBJ>
19 std::tuple<OBJ...>
obj;
20 static constexpr const char*
names[] = { OBJ::name... };
25 template<
typename GAS,
int I = 0>
28 double ComputeT(
const GAS &gas,
double density,
double momentumx,
double momentumy,
double E,
double Tguess,
31 if constexpr (I <
sizeof...(OBJ))
34 return std::get<I>(
obj).ComputeT(gas,density,momentumx,momentumy,E,Tguess,
X,i,j,k,rtol);
36 return ComputeT<GAS, I+1>(gas,density,momentumx,momentumy,E,Tguess,
X,i,j,k,rtol);
48 double ComputeT(
double pressure,
double density,
51 if constexpr (I <
sizeof...(OBJ))
54 return std::get<I>(
obj).ComputeT(pressure, density, R);
56 return ComputeT<I+1>(pressure, density, R);
69 double ComputeP(
double density,
double T,
double R)
const
72 if constexpr (I <
sizeof...(OBJ))
75 return std::get<I>(
obj).ComputeP(density, T, R);
77 return ComputeP<I+1>(density, T, R);
88 double ComputeE(
double density,
double momentumx,
double momentumy,
double T,
89 double R,
double gamma)
const
91 if constexpr (I <
sizeof...(OBJ))
94 return std::get<I>(
obj).ComputeE(density, momentumx, momentumy, T, R, gamma);
96 return ComputeE<I+1>(density, momentumx, momentumy, T, R, gamma);
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE double ComputeP(double density, double T, double R) const
static constexpr const char * names[]
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE double ComputeT(double pressure, double density, double R) const
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE double ComputeT(const GAS &gas, double density, double momentumx, double momentumy, double E, double Tguess, Set::Patch< const Set::Scalar > &X, int i, int j, int k, double rtol) const
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE double ComputeE(double density, double momentumx, double momentumy, double T, double R, double gamma) const
Eigen::Matrix< amrex::Real, AMREX_SPACEDIM, 1 > Vector
void Abort(const char *msg)