40 int nVarsScalar = uScalar.size();
41 int nVars = nVarsFlow + nVarsScalar;
43 auto &mesh = self_view.fv.mesh;
44 auto &fv = self_view.fv;
45 auto &bcHandler = self_view.bcHandler;
46 auto &phy = self_view.physics;
53 for (
index iBnd = 0; iBnd < mesh.NumBnd(); iBnd++)
60#if defined(DNDS_DIST_MT_USE_OMP)
61# pragma omp parallel for schedule(runtime)
63 for (
index iCell = 0; iCell < mesh.NumCell(); iCell++)
87 int nVarsScalar = uScalar.size();
88 int nVars = nVarsFlow + nVarsScalar;
90 auto &mesh = self_view.fv.mesh;
91 auto &fv = self_view.fv;
92 auto &bcHandler = self_view.bcHandler;
93 auto &phy = self_view.physics;
98#if defined(DNDS_DIST_MT_USE_OMP)
99# pragma omp parallel for schedule(runtime)
101 for (
index iCell = 0; iCell < mesh.NumCell(); iCell++)
109#if defined(DNDS_DIST_MT_USE_OMP)
110# pragma omp parallel for schedule(runtime)
112 for (
index iCell = 0; iCell < mesh.NumCell(); iCell++)
127 using namespace Geom;
133 int nVarsScalar = uScalar.size();
134 int nVars = nVarsFlow + nVarsScalar;
136 auto &mesh = self_view.fv.mesh;
137 auto &fv = self_view.fv;
138 auto &bcHandler = self_view.bcHandler;
139 auto &phy = self_view.physics;
141#if defined(DNDS_DIST_MT_USE_OMP)
142# pragma omp parallel for schedule(runtime)
144 for (
index iPt = 0; iPt < u.Size(); iPt++)
159 using namespace Geom;
165 int nVarsScalar = uScalar.size();
166 int nVars = nVarsFlow + nVarsScalar;
168 auto &mesh = self_view.fv.mesh;
169 auto &fv = self_view.fv;
170 auto &bcHandler = self_view.bcHandler;
171 auto &phy = self_view.physics;
173#if defined(DNDS_DIST_MT_USE_OMP)
174# pragma omp parallel for schedule(runtime)
176 for (
index iPt = 0; iPt < u.Size(); iPt++)
191 using namespace Geom;
203 auto &mesh = self_view.fv.mesh;
204 auto &fv = self_view.fv;
205 auto &bcHandler = self_view.bcHandler;
206 auto &phy = self_view.physics;
209 int nVars = nVarsFlow + nVarsScalar;
211#if defined(DNDS_DIST_MT_USE_OMP)
212# pragma omp parallel for schedule(runtime)
214 for (
index iFace = 0; iFace < mesh.NumFaceProc(); iFace++)
233 auto &mesh = self_view.fv.mesh;
234 auto &fv = self_view.fv;
235 auto &bcHandler = self_view.bcHandler;
236 auto &phy = self_view.physics;
239 int nVars = nVarsFlow + nVarsScalar;
240#if defined(DNDS_DIST_MT_USE_OMP)
241# pragma omp parallel for schedule(runtime)
243 for (
index iCell = 0; iCell < mesh.NumCell(); iCell++)
258 using namespace Geom;
264 auto &mesh = self_view.fv.mesh;
265 auto &fv = self_view.fv;
266 auto &bcHandler = self_view.bcHandler;
267 auto &phy = self_view.physics;
269 int nVarsScalar = uScalar.size();
270 int nVars = nVarsScalar + nVarsFlow;
272#if defined(DNDS_DIST_MT_USE_OMP)
273# pragma omp parallel for schedule(runtime)
275 for (
index iFace = 0; iFace < mesh.NumFaceProc(); iFace++)
290 using namespace Geom;
296 auto &mesh = self_view.fv.mesh;
297 auto &fv = self_view.fv;
298 auto &bcHandler = self_view.bcHandler;
299 auto &phy = self_view.physics;
301 int nVarsScalar = uScalarFL.size();
302 int nVars = nVarsScalar + nVarsFlow;
304#if defined(DNDS_DIST_MT_USE_OMP)
305# pragma omp parallel for schedule(runtime)
307 for (
index iFace = 0; iFace < mesh.NumFaceProc(); iFace++)
312#if defined(DNDS_DIST_MT_USE_OMP)
313# pragma omp parallel for schedule(runtime)
315 for (
index iCell = 0; iCell < mesh.NumCell(); iCell++)
Core type aliases, constants, and metaprogramming utilities for the DNDS framework.
Device memory abstraction layer with backend-specific storage and factory creation.
#define DNDS_check_throw(expr)
Runtime check active in both debug and release builds. Throws std::runtime_error if expr evaluates to...
Core type definitions and utilities for the EulerP alternative Navier-Stokes evaluator module.
Backend-specific implementation layer for EulerP Evaluator kernel dispatch.
#define DNDS_EULERP_IMPL_ARG_GET_REF_PORTABLE(member)
#define DNDS_EULERP_IMPL_ARG_GET_REF(member)
Shared device-callable kernel implementations for the EulerP Evaluator.
Namespace for the EulerP alternative evaluator module with GPU support.
DNDS_DEVICE void EstEigenDt_FaceLam2CellDt_Kernel(EvaluatorDeviceView< B > &self_view, typename Evaluator_impl< B >::EstEigenDt_Arg::Portable &arg, index iCell, index iCellEnd, int nVars, int nVarsScalar)
Per-cell kernel converting face eigenvalues to a local CFL time step.
DNDS_DEVICE void Flux2nd_Kernel_FluxFace(EvaluatorDeviceView< B > &self_view, typename Evaluator_impl< B >::Flux2nd_Arg::Portable &arg, index iFace, index iFaceEnd, int nVars, int nVarsScalar)
2nd-order Roe inviscid flux computation kernel (per-face).
DNDS_DEVICE void RecGradient_BarthLimiter_Kernel_FlowPart(EvaluatorDeviceView< B > &self_view, typename Evaluator_impl< B >::RecGradient_Arg::Portable &arg, index iCell, index iCellEnd, int nVars, int nVarsScalar)
Barth-Jespersen gradient limiter kernel for flow variables (per-cell).
DNDS_DEVICE void RecFace2nd_Kernel(EvaluatorDeviceView< B > &self_view, typename Evaluator_impl< B >::RecFace2nd_Arg::Portable &arg, index iFace, index iFaceEnd, int nVars, int nVarsScalar)
2nd-order face value reconstruction kernel (per-face).
DNDS_DEVICE void RecGradient_GGRec_Kernel_GG(EvaluatorDeviceView< B > &self_view, typename Evaluator_impl< B >::RecGradient_Arg::Portable &arg, index iCell, index iCellEnd, int nVars, int nVarsScalar)
Green-Gauss gradient reconstruction kernel (per-cell).
DNDS_DEVICE void Cons2Prim_Kernel(EvaluatorDeviceView< B > &self_view, typename Evaluator_impl< B >::Cons2Prim_Arg::Portable &arg, index iPt, index iPtEnd, int nVars, int nVarsScalar)
Conservative-to-primitive conversion without gradient transformation or viscosity (per-cell).
DNDS_DEVICE void RecGradient_BarthLimiter_Kernel_ScalarPart(EvaluatorDeviceView< B > &self_view, typename Evaluator_impl< B >::RecGradient_Arg::Portable &arg, index iCell, index iCellEnd, int nVars, int nVarsScalar)
Barth-Jespersen gradient limiter kernel for transported scalar variables (per-cell).
DNDS_DEVICE void Flux2nd_Kernel_Face2Cell(EvaluatorDeviceView< B > &self_view, typename Evaluator_impl< B >::Flux2nd_Arg::Portable &arg, index iCell, index iCellEnd, int nVars, int nVarsScalar)
Scatters face fluxes to cell RHS residual (per-cell).
DNDS_DEVICE void RecGradient_GGRec_Kernel_BndVal(EvaluatorDeviceView< B > &self_view, typename Evaluator_impl< B >::RecGradient_Arg::Portable &arg, index iBnd, index iBndEnd, int nVars, int nVarsScalar)
Generates boundary ghost values for Green-Gauss gradient reconstruction.
DNDS_DEVICE void EstEigenDt_GetFaceLam_Kernel(EvaluatorDeviceView< B > &self_view, typename Evaluator_impl< B >::EstEigenDt_Arg::Portable &arg, index iFace, index iFaceEnd, int nVars, int nVarsScalar)
Per-face eigenvalue estimation kernel for time-step computation.
DNDS_DEVICE void Cons2PrimMu_Kernel(EvaluatorDeviceView< B > &self_view, typename Evaluator_impl< B >::Cons2PrimMu_Arg::Portable &arg, index iPt, index iPtEnd, int nVars, int nVarsScalar)
Conservative-to-primitive conversion with gradient transformation and viscosity (per-cell).
DeviceBackend
Enumerates the backends a DeviceStorage / Array can live on.
int64_t index
Global row / DOF index type (signed 64-bit; handles multi-billion-cell meshes).
Device-side argument struct for conservative-to-primitive + viscosity kernel.
struct DNDS::EulerP::Evaluator_impl::Cons2PrimMu_Arg::Portable portable
Device-side argument struct for conservative-to-primitive conversion (no gradients/viscosity).
struct DNDS::EulerP::Evaluator_impl::Cons2Prim_Arg::Portable portable
Device-side argument struct for eigenvalue estimation and time-step computation.
struct DNDS::EulerP::Evaluator_impl::EstEigenDt_Arg::Portable portable
Device-side argument struct for 2nd-order flux evaluation and RHS accumulation.
struct DNDS::EulerP::Evaluator_impl::Flux2nd_Arg::Portable portable
Device-side argument struct for 2nd-order face value reconstruction.
struct DNDS::EulerP::Evaluator_impl::RecFace2nd_Arg::Portable portable
Device-side argument struct for gradient reconstruction kernels.
struct DNDS::EulerP::Evaluator_impl::RecGradient_Arg::Portable portable
static void Flux2nd(Flux2nd_Arg &arg)
Evaluates 2nd-order Roe flux per face and scatters to cell RHS.
static void Cons2PrimMu(Cons2PrimMu_Arg &arg)
Executes conservative-to-primitive conversion with viscosity computation.
static void EstEigenDt_GetFaceLam(EstEigenDt_Arg &arg)
First pass: computes per-face eigenvalue estimates from cell states.
static void Cons2Prim(Cons2Prim_Arg &arg)
Executes conservative-to-primitive conversion (no gradients/viscosity).
static void EstEigenDt_FaceLam2CellDt(EstEigenDt_Arg &arg)
Second pass: accumulates face eigenvalues to cells and computes local dt.
static void RecFace2nd(RecFace2nd_Arg &arg)
Executes 2nd-order face value reconstruction from cell-centered data.
static void RecGradient_BarthLimiter(RecGradient_Arg &arg)
Barth-Jespersen gradient limiter applied to reconstructed gradients.
static void RecGradient_GGRec(RecGradient_Arg &arg)
Green-Gauss gradient reconstruction: boundary ghost values + cell gradient computation.