17#ifndef MODEL_PROPELLANT_H
18#define MODEL_PROPELLANT_H
20#include "AMReX_Extension.H"
27template<
typename... OBJ>
32 std::tuple<OBJ...>
obj;
33 static constexpr const char*
names[] = { OBJ::name... };
39 AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
42 if constexpr (I <
sizeof...(OBJ))
44 if (
selected == I)
return std::get<I>(
obj).set_pressure(P);
45 else return set_pressure<I+1>(P);
51 AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
54 if constexpr (I <
sizeof...(OBJ))
56 if (
selected == I)
return std::get<I>(
obj).get_K(phi);
57 else return get_K<I+1>(phi);
64 AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
67 if constexpr (I <
sizeof...(OBJ))
69 if (
selected == I)
return std::get<I>(
obj).get_rho(phi);
70 else return get_rho<I+1>(phi);
77 AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
80 if constexpr (I <
sizeof...(OBJ))
82 if (
selected == I)
return std::get<I>(
obj).get_cp(phi);
83 else return get_cp<I+1>(phi);
90 AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
93 if constexpr (I <
sizeof...(OBJ))
95 if (
selected == I)
return std::get<I>(
obj).get_qdot(mdot,phi);
96 else return get_qdot<I+1>(mdot,phi);
103 AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
106 if constexpr (I <
sizeof...(OBJ))
108 if (
selected == I)
return std::get<I>(
obj).get_L(phi,T);
109 else return get_L<I+1>(phi, T);
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE Set::Scalar get_cp(const Set::Scalar phi)
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE Set::Scalar get_qdot(const Set::Scalar mdot, const Set::Scalar phi)
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE void set_pressure(Set::Scalar P)
static constexpr const char * names[]
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE Set::Scalar get_L(const Set::Scalar phi, const Set::Scalar T)
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE Set::Scalar get_rho(const Set::Scalar phi)
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE Set::Scalar get_K(const Set::Scalar phi)
void Abort(const char *msg)