41 p = (gamma - 1) * (E - rho * 0.5 * vSqr);
42 asqr = gamma * p / rho;
50 return (gamma - 1) * e;
57 return p / (gamma - 1);
71 return gamma * p / rho;
88 template <PrimVariable prim>
92 real e = E - rho * 0.5 * vSqr;
94 return (gamma - 1) * e;
109 template <PrimVariable prim>
114 return primE / (gamma - 1) + rho * 0.5 * vSqr;
116 return primE + rho * 0.5 * vSqr;
126 template <PrimVariable prim>
133 return (gamma - 1) * primE;
146 return (gamma - 1) * (HRoe - 0.5 * vsqrRoe);
173 alpha1 = (gamma - 1) / asqrRoe *
174 (incU0 * (HRoe - veloRoeN * veloRoeN) +
175 veloRoeN * incU123N - incU4b);
176 alpha0 = (incU0 * (veloRoeN + aRoe) - incU123N - aRoe * alpha1) / (2 * aRoe);
177 alpha4 = incU0 - (alpha0 + alpha1);
184 static constexpr real kScaleHartenYee = 0.05;
185 static constexpr real kScaleLD = 0.2;
186 static constexpr real kScaleHFix = 0.25;
198 const real scaleHartenYee = kScaleHartenYee * fixScale;
199 const real scaleHFix = kScaleHFix * fixScale;
201 real aAve = 0.5 * (aL + aR);
202 real VAve = 0.5 * (vnL + vnR);
204 lam0 = std::max(lam0, dLambda * scaleHFix);
205 lam4 = std::max(lam4, dLambda * scaleHFix);
206 lam123 = std::max(lam123, dLambda * scaleHFix);
208 real thresholdHartenYee = scaleHartenYee * (VAve + aAve);
209 real thresholdHartenYeeS = thresholdHartenYee * thresholdHartenYee;
210 if (lam0 < thresholdHartenYee)
211 lam0 = (lam0 * lam0 + thresholdHartenYeeS) / (2 * thresholdHartenYee);
212 if (lam4 < thresholdHartenYee)
213 lam4 = (lam4 * lam4 + thresholdHartenYeeS) / (2 * thresholdHartenYee);
214 if (lam123 < thresholdHartenYee)
215 lam123 = (lam123 * lam123 + thresholdHartenYeeS) / (2 * thresholdHartenYee);
Core type aliases, constants, and metaprogramming utilities for the DNDS framework.
#define DNDS_DEVICE_CALLABLE
DNDS_DEVICE_CALLABLE real Cons2PrimEnergy(real E, real rho, real vSqr, real gamma)
Convert conservative energy to primitive energy-index value.
@ InternalEnergy
prim[I4] = rho * e_internal (EulerP convention)
@ Pressure
prim[I4] = p (Euler convention)
DNDS_DEVICE_CALLABLE real RoeSpeedOfSoundSqr(real gamma, real HRoe, real vsqrRoe)
Roe-averaged speed of sound squared: a^2 = (gamma-1)(H - 0.5*v^2).
DNDS_DEVICE_CALLABLE real PrimE2Pressure(real primE, real gamma)
Get pressure from the primitive energy-index value.
DNDS_DEVICE_CALLABLE void IdealGasThermal(real E, real rho, real vSqr, real gamma, real &p, real &asqr, real &H)
Compute pressure, speed-of-sound squared, and specific enthalpy from total energy,...
DNDS_DEVICE_CALLABLE void EntropyFix_HCorrHY(real aL, real aR, real vnL, real vnR, real dLambda, real fixScale, real &lam0, real &lam123, real &lam4)
H-correction + Harten-Yee entropy fix (scheme 8 in Euler module).
DNDS_DEVICE_CALLABLE real Pressure_From_InternalEnergy(real e, real gamma)
Pressure from internal energy: p = (gamma - 1) * e.
DNDS_DEVICE_CALLABLE real Enthalpy(real E, real rho, real p)
Specific enthalpy from conservative state: H = (E + p) / rho.
DNDS_DEVICE_CALLABLE real SpeedOfSoundSqr(real gamma, real p, real rho)
Speed of sound squared: a^2 = gamma * p / rho.
DNDS_DEVICE_CALLABLE void RoeAlphaDecomposition(real incU0, real incU123N, real incU4b, real veloRoeN, real HRoe, real asqrRoe, real aRoe, real gamma, real &alpha0, real &alpha1, real &alpha4)
Roe alpha-decomposition coefficients for the 1D wave structure.
DNDS_DEVICE_CALLABLE real InternalEnergy_From_Pressure(real p, real gamma)
Internal energy from pressure: e = p / (gamma - 1)
DNDS_DEVICE_CALLABLE real Prim2ConsEnergy(real primE, real rho, real vSqr, real gamma)
Convert primitive energy-index value to conservative total energy.
double real
Canonical floating-point scalar used throughout DNDSR (double precision).