21 template<
typename StateView>
24 const StateView &S)
const
29 template<
typename StateView>
32 const StateView &S)
const
37 template<
typename StateView>
40 const StateView &S)
const
45 template<
typename StateView>
48 const StateView &S)
const
50 const int dim = L.
dim;
52 for (
int d = 0; d < dim; ++d)
54 const mfem::real_t m = S.momentum(L,d);
60 template<
typename StateView>
63 const StateView &S)
const
66 const mfem::real_t rho =
density(phys, L, S);
68 return 0.5 * m2 / rho;
71 template<
typename StateView>
74 const StateView &S)
const
80 template<
typename StateView>
83 const StateView &S, mfem::real_t
pressure)
const
89 template<
typename StateView>
92 const StateView &S)
const
95 const mfem::real_t rho =
density(phys, L, S);
102 template<
typename StateView>
105 const StateView &S)
const
112 template<
typename StateView>
115 const StateView &S)
const
120 template<
typename StateView>
123 const StateView &S)
const
126 const mfem::real_t rho =
density(phys, L, S);
127 const mfem::real_t p =
pressure(phys, L, S);
128 return p / (rho * phys.
R_gas);
131 template<
typename StateView>
134 const StateView &S,
const mfem::real_t *grad_rho,
135 const mfem::real_t *grad_p, mfem::real_t *grad_t)
const
137 const int dim = L.
dim;
138 const mfem::real_t rho =
density(phys, L, S);
139 const mfem::real_t pressor =
pressure(phys, L, S)/rho;
140 const mfem::real_t cv =
cp(phys, L, S)/phys.
gamma;
142 for(
int i = 0; i < dim; i++){
143 grad_t[i] = fac*(grad_p[i] - pressor*grad_rho[i]);
147 template<
typename StateView>
150 const StateView &S)
const
153 const mfem::real_t rho =
density(phys, L, S);
154 const mfem::real_t p =
pressure(phys, L, S);
155 return std::sqrt(phys.
gamma * p / rho);
159 template<
typename StateView>
162 const StateView & )
const
167 template<
typename StateView>
170 const StateView &S)
const
172 const mfem::real_t p =
pressure(phys, L, S);
175 return std::log(p) -
gamma * std::log(S.mass(L));
178 template<
typename InStateView,
typename OutStateView>
181 const InStateView &S, OutStateView &E)
const
183 const mfem::real_t p =
pressure(phys, L, S);
185 const mfem::real_t rho = S.mass(L);
186 const mfem::real_t s = std::log(p) -
gamma*std::log(rho);
187 const mfem::real_t beta = rho / p;
189 const mfem::real_t s_rho = (
gamma - s)/(
gamma - 1) - beta*v2o2;
191 E.set_mass(L, s_rho);
194 for(
int idim = 0;idim < dim;idim++){
195 E.set_momentum(L, idim, beta * S.velocity(L, idim));
197 E.set_energy(L, -beta);
203 for(
int iscalar = 0;iscalar < num_scalars;iscalar++){
204 E.set_scalar(L, iscalar, 0.0);
208 template<
typename InStateView,
typename OutStateView>
211 const InStateView &S,
const InStateView &dE,
212 OutStateView &dPrim)
const
216 const mfem::real_t p =
pressure(phys, L, S);
217 const mfem::real_t rho = S.mass(L);
218 const mfem::real_t
rhoE = S.energy(L);
224 mfem::real_t drho = 0.0;
225 for(
int idim = 0; idim < dim; idim++){
226 dPrim.set_momentum(L, idim, p/rho * (dE.momentum(L, idim) + S.velocity(L, idim)*dE.energy(L)));
227 drho += S.momentum(L, idim)*dPrim.momentum(L, idim);
229 drho = rho*dE.mass(L) - dE.energy(L)*(ke - ie) + rho*drho/p;
230 dPrim.set_mass(L, drho);
231 dPrim.set_energy(L, p/rho * (dPrim.mass(L) + p*dE.energy(L)));
232 for(
int isp = 0; isp < num_scalars; isp++){
233 dPrim.set_scalar(L, isp, 0.0);
237 template<
typename InStateView,
typename OutStateView>
240 const InStateView &Se, OutStateView &Sc)
const
243 const mfem::real_t beta = -Se.energy(L);
244 mfem::real_t k = 0.0;
246 for(
int idim = 0;idim < dim;idim++){
247 vel[idim] = Se.momentum(L, idim)/beta;
248 k += vel[idim]*vel[idim];
251 const mfem::real_t s =
gamma - (Se.mass(L) + 0.5*k*beta)*(
gamma - 1.);
252 const mfem::real_t rho = std::pow(std::exp(-s)/beta, 1.0/(
gamma - 1));
254 Sc.set_energy(L, rho*(1.0/(beta*(
gamma-1.)) + 0.5*k));
255 for(
int idim = 0;idim < dim;idim++){
256 Sc.set_momentum(L, idim, rho*vel[idim]);
260 template<
typename InStateView,
typename OutStateView>
262 const InStateView &prim, OutStateView &cons)
const
264 const mfem::real_t rho = prim.mass(L);
265 const int dim = L.
dim;
266 mfem::real_t v2 = 0.0;
268 cons.set_mass(L, rho);
269 for(
int d = 0; d < dim; d++)
271 cons.set_momentum(L, d, rho*prim.velocity(L, d));
272 v2 += prim.velocity(L,d)*prim.velocity(L,d);
274 mfem::real_t rhoe = prim.pressure(L) / (phys.
gamma-1.);
275 cons.set_energy(L, rhoe + 0.5 * rho * v2);
280 template<
typename StateView>
283 const StateView &S, mfem::real_t u[3])
const
285 const int dim = L.
dim;
286 for (
int d = 0; d < dim; ++d)
288 u[d] = S.velocity(L, d);
290 for (
int d = dim; d < 3; ++d)
292 u[d] = mfem::real_t(0);
Definition AxisymmetricGeometry.hpp:15
MFEM_HOST_DEVICE void entropy_to_conserved(const PhysicsConstants &phys, const StateLayout &L, const InStateView &Se, OutStateView &Sc) const
Definition EOS.hpp:239
MFEM_HOST_DEVICE mfem::real_t internal_energy_density(const PhysicsConstants &phys, const StateLayout &L, const StateView &S) const
Definition EOS.hpp:73
MFEM_HOST_DEVICE void grad_entropy_to_grad_prim(const PhysicsConstants &phys, const StateLayout &L, const InStateView &S, const InStateView &dE, OutStateView &dPrim) const
Definition EOS.hpp:210
MFEM_HOST_DEVICE mfem::real_t kinetic_energy_density(const PhysicsConstants &phys, const StateLayout &L, const StateView &S) const
Definition EOS.hpp:62
MFEM_HOST_DEVICE void entropy_state(const PhysicsConstants &phys, const StateLayout &L, const InStateView &S, OutStateView &E) const
Definition EOS.hpp:180
MFEM_HOST_DEVICE mfem::real_t gamma(const PhysicsConstants &phys, const StateLayout &L, const StateView &S) const
Definition EOS.hpp:114
MFEM_HOST_DEVICE void velocity(const PhysicsConstants &phys, const StateLayout &L, const StateView &S, mfem::real_t u[3]) const
Definition EOS.hpp:282
MFEM_HOST_DEVICE mfem::real_t specific_internal_energy(const PhysicsConstants &phys, const StateLayout &L, const StateView &S) const
Definition EOS.hpp:91
MFEM_HOST_DEVICE mfem::real_t temperature(const PhysicsConstants &phys, const StateLayout &L, const StateView &S) const
Definition EOS.hpp:122
MFEM_HOST_DEVICE mfem::real_t density(const PhysicsConstants &phys, const StateLayout &L, const StateView &S) const
Definition EOS.hpp:31
MFEM_HOST_DEVICE mfem::real_t sound_speed(const PhysicsConstants &phys, const StateLayout &L, const StateView &S) const
Definition EOS.hpp:149
void primitive_to_conserved(const PhysicsConstants &phys, const StateLayout &L, const InStateView &prim, OutStateView &cons) const
Definition EOS.hpp:261
MFEM_HOST_DEVICE mfem::real_t pressure(const PhysicsConstants &phys, const StateLayout &L, const StateView &S) const
Definition EOS.hpp:104
MFEM_HOST_DEVICE mfem::real_t internal_energy_from_pressure(const PhysicsConstants &phys, const StateLayout &L, const StateView &S, mfem::real_t pressure) const
Definition EOS.hpp:82
MFEM_HOST_DEVICE mfem::real_t cp(const PhysicsConstants &phys, const StateLayout &L, const StateView &) const
Definition EOS.hpp:161
MFEM_HOST_DEVICE mfem::real_t entropy(const PhysicsConstants &phys, const StateLayout &L, const StateView &S) const
Definition EOS.hpp:169
MFEM_HOST_DEVICE mfem::real_t R_gas(const PhysicsConstants &phys, const StateLayout &L, const StateView &S) const
Definition EOS.hpp:23
MFEM_HOST_DEVICE mfem::real_t rhoE(const PhysicsConstants &phys, const StateLayout &L, const StateView &S) const
Definition EOS.hpp:39
MFEM_HOST_DEVICE void grad_temperature(const PhysicsConstants &phys, const StateLayout &L, const StateView &S, const mfem::real_t *grad_rho, const mfem::real_t *grad_p, mfem::real_t *grad_t) const
Definition EOS.hpp:133
MFEM_HOST_DEVICE mfem::real_t momentum_sq(const PhysicsConstants &phys, const StateLayout &L, const StateView &S) const
Definition EOS.hpp:47
Definition Physics.hpp:14
mfem::real_t gammaM1
Definition Physics.hpp:18
mfem::real_t R_gas
Definition Physics.hpp:26
mfem::real_t cp
Definition Physics.hpp:27
mfem::real_t gammaM1Inverse
Definition Physics.hpp:20
mfem::real_t gamma
Definition Physics.hpp:15
Definition GasState.hpp:37
int num_scalars
Definition GasState.hpp:49
int dim
Definition GasState.hpp:38