19 template <
typename EOSImpl,
typename TransportImpl>
32 const EOSImpl &eos_in,
const TransportImpl &tr_in)
38 :
phys(phys_in),
L(L_in)
41 template<
typename HostDataT>
53 inline int dim()
const
57 template<
typename StateView>
59 inline mfem::real_t
velocity(
const StateView &S,
int d)
const
60 {
return S.velocity(
L,d);};
62 template<
typename StateView>
64 inline mfem::real_t
momentum(
const StateView &S,
int d)
const
65 {
return S.momentum(
L,d);};
67 template<
typename StateView>
69 inline mfem::real_t
density(
const StateView &S)
const
74 template<
typename StateView>
76 inline mfem::real_t
mass(
const StateView &S)
const
81 template<
typename StateView>
83 inline mfem::real_t
scalar(
const StateView &S,
int s)
const
85 return S.scalar(
L, s);
88 template<
typename StateView>
90 inline mfem::real_t
energy(
const StateView &S)
const
96 template<
typename StateView>
98 inline mfem::real_t
pressure(
const StateView &S)
const
103 template<
typename StateView>
105 inline mfem::real_t
gamma(
const StateView &S)
const
110 template<
typename StateView>
112 inline mfem::real_t
cp(
const StateView &S)
const
117 template<
typename StateView>
119 inline mfem::real_t
R_gas(
const StateView &S)
const
124 template<
typename StateView>
131 template<
typename StateView>
138 template<
typename StateView>
142 return eos.kinetic_energy_density(
phys,
L, S);
145 template<
typename StateView>
153 template<
typename StateView>
157 return eos.specific_internal_energy(
phys,
L, S);
160 template<
typename StateView>
163 const mfem::real_t *grad_r,
const mfem::real_t *grad_p,
164 mfem::real_t *grad_t)
const
166 return eos.grad_temperature(
phys,
L, S, grad_r, grad_p, grad_t);
169 template<
typename StateView>
171 inline mfem::real_t
entropy(
const StateView &S)
176 template<
typename InStateView,
typename OutStateView>
180 return eos.entropy_state(
phys,
L, S, E);
183 template<
typename InStateView,
typename OutStateView>
186 OutStateView &dPrim)
const
188 return eos.grad_entropy_to_grad_prim(
phys,
L, S, dS, dPrim);
191 template<
typename InStateView,
typename OutStateView>
195 return eos.entropy_to_conserved(
phys,
L, Se, Sc);
198 template<
typename InStateView,
typename OutStateView>
202 return eos.entropy_to_conserved(
phys,
L, Sp, Sc);
207 template<
typename StateView>
214 template<
typename StateView>
221 template<
typename StateView>
239 MFEM_ABORT(
"GasModelInterface::density called on base class.");
243 MFEM_ABORT(
"GasModelInterface::velocity called on base class.");
246 MFEM_ABORT(
"GasModelInterface::pressure called on base class.");
249 MFEM_ABORT(
"GasModelInterface::temperature called on base class.");
252 MFEM_ABORT(
"GasModelInterface::layout called on base class.");
255 MFEM_ABORT(
"GasModelInterface::density called on base class.");
260 template <
typename GasT>
265 : gas(
std::move(gas_))
270 return gas->density(S);
275 return gas->velocity(S, d);
280 return gas->pressure(S);
285 return gas->temperature(S);
299 std::shared_ptr<const GasT> gas;
Definition GasModel.hpp:262
mfem::real_t density(const Theseus::DofStateView &S) const override
Definition GasModel.hpp:268
mfem::real_t velocity(const Theseus::DofStateView &S, int d) const override
Definition GasModel.hpp:273
const Theseus::StateLayout & layout() const override
Definition GasModel.hpp:288
const Theseus::PhysicsConstants & phys() const override
Definition GasModel.hpp:293
mfem::real_t temperature(const Theseus::DofStateView &S) const override
Definition GasModel.hpp:283
mfem::real_t pressure(const Theseus::DofStateView &S) const override
Definition GasModel.hpp:278
GasModelInterfaceT(std::shared_ptr< const GasT > gas_)
Definition GasModel.hpp:264
Definition GasModel.hpp:235
virtual ~GasModelInterface()=default
virtual mfem::real_t density(const Theseus::DofStateView &S) const
Definition GasModel.hpp:238
virtual const Theseus::PhysicsConstants & phys() const
Definition GasModel.hpp:254
virtual mfem::real_t velocity(const Theseus::DofStateView &S, int d) const
Definition GasModel.hpp:241
virtual mfem::real_t pressure(const Theseus::DofStateView &S) const
Definition GasModel.hpp:245
virtual const Theseus::StateLayout & layout() const
Definition GasModel.hpp:251
virtual mfem::real_t temperature(const Theseus::DofStateView &S) const
Definition GasModel.hpp:248
Definition AxisymmetricGeometry.hpp:15
Definition GasState.hpp:520
Definition GasModel.hpp:21
MFEM_HOST_DEVICE mfem::real_t sound_speed(const StateView &S) const
Definition GasModel.hpp:133
MFEM_HOST_DEVICE mfem::real_t thermal_conductivity(const StateView &S) const
Definition GasModel.hpp:223
TransportImpl transport
Definition GasModel.hpp:26
MFEM_HOST_DEVICE mfem::real_t specific_internal_energy(const StateView &S) const
Definition GasModel.hpp:155
MFEM_HOST_DEVICE int dim() const
Definition GasModel.hpp:53
MFEM_HOST_DEVICE mfem::real_t mass(const StateView &S) const
Definition GasModel.hpp:76
MFEM_HOST_DEVICE mfem::real_t R_gas(const StateView &S) const
Definition GasModel.hpp:119
MFEM_HOST_DEVICE GasModel(const PhysicsConstants &phys_in, const StateLayout &L_in, const EOSImpl &eos_in, const TransportImpl &tr_in)
Definition GasModel.hpp:31
MFEM_HOST_DEVICE int num_equations() const
Definition GasModel.hpp:49
MFEM_HOST_DEVICE void grad_entropy_to_grad_prim(const InStateView &S, const InStateView &dS, OutStateView &dPrim) const
Definition GasModel.hpp:185
MFEM_HOST_DEVICE mfem::real_t energy(const StateView &S) const
Definition GasModel.hpp:90
MFEM_HOST_DEVICE mfem::real_t pressure(const StateView &S) const
Definition GasModel.hpp:98
MFEM_HOST_DEVICE void entropy_state(const InStateView &S, OutStateView &E) const
Definition GasModel.hpp:178
MFEM_HOST_DEVICE mfem::real_t scalar(const StateView &S, int s) const
Definition GasModel.hpp:83
MFEM_HOST_DEVICE mfem::real_t momentum(const StateView &S, int d) const
Definition GasModel.hpp:64
EOSImpl eos
Definition GasModel.hpp:25
MFEM_HOST_DEVICE mfem::real_t viscosity(const StateView &S) const
Definition GasModel.hpp:209
MFEM_HOST_DEVICE mfem::real_t internal_energy_from_pressure(const StateView &S, mfem::real_t pressure) const
Definition GasModel.hpp:147
MFEM_HOST_DEVICE mfem::real_t kinetic_energy_density(const StateView &S) const
Definition GasModel.hpp:140
GasModel< EOSImpl, TransportImpl > to_device(HostDataT &host_data)
Definition GasModel.hpp:42
MFEM_HOST_DEVICE mfem::real_t density(const StateView &S) const
Definition GasModel.hpp:69
MFEM_HOST_DEVICE mfem::real_t velocity(const StateView &S, int d) const
Definition GasModel.hpp:59
MFEM_HOST_DEVICE void primitive_to_conserved(const InStateView &Sp, OutStateView &Sc) const
Definition GasModel.hpp:200
MFEM_HOST_DEVICE mfem::real_t entropy(const StateView &S)
Definition GasModel.hpp:171
MFEM_HOST_DEVICE mfem::real_t temperature(const StateView &S) const
Definition GasModel.hpp:126
MFEM_HOST_DEVICE GasModel(const PhysicsConstants &phys_in, const StateLayout &L_in)
Definition GasModel.hpp:37
MFEM_HOST_DEVICE mfem::real_t gamma(const StateView &S) const
Definition GasModel.hpp:105
MFEM_HOST_DEVICE void entropy_to_conserved(const InStateView &Se, OutStateView &Sc) const
Definition GasModel.hpp:193
MFEM_HOST_DEVICE mfem::real_t bulk_viscosity(const StateView &S) const
Definition GasModel.hpp:216
StateLayout L
Definition GasModel.hpp:24
MFEM_HOST_DEVICE mfem::real_t cp(const StateView &S) const
Definition GasModel.hpp:112
MFEM_HOST_DEVICE void grad_temperature(const StateView &S, const mfem::real_t *grad_r, const mfem::real_t *grad_p, mfem::real_t *grad_t) const
Definition GasModel.hpp:162
PhysicsConstants phys
Definition GasModel.hpp:23
MFEM_HOST_DEVICE GasModel()=default
Definition Physics.hpp:14
Definition GasState.hpp:37
MFEM_HOST_DEVICE int nequations() const
Definition GasState.hpp:91
int dim
Definition GasState.hpp:38