OpenSWMM Engine  6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
Loading...
Searching...
No Matches
KokkosInertialKernels.hpp File Reference

Performance-portable RHS + preconditioner for the local-inertial solver. More...

Include dependency graph for KokkosInertialKernels.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  openswmm::twoD::gpu::InertialEdgeViews
 

Namespaces

namespace  openswmm
 
namespace  openswmm::twoD
 
namespace  openswmm::twoD::gpu
 

Functions

KOKKOS_INLINE_FUNCTION constexpr double openswmm::twoD::gpu::inertialG ()
 Gravity constant (SI). Matches ArkodeSurfaceSolver.
 
void openswmm::twoD::gpu::evaluateInertialFe (const MeshViews &m, const StateViews &s, const InertialEdgeViews &E, DView y, DView ydot, double dry_depth)
 
void openswmm::twoD::gpu::evaluateInertialFi (const MeshViews &m, const StateViews &s, const InertialEdgeViews &E, DView y, DView ydot, double dry_depth)
 
void openswmm::twoD::gpu::precondInertialSetup (const MeshViews &m, const StateViews &s, const InertialEdgeViews &E, DView y, DView wq, double gamma, double dry_depth)
 
void openswmm::twoD::gpu::precondInertialSolve (int nt, const InertialEdgeViews &E, DView r, DView z, DView wq)
 
void openswmm::twoD::gpu::writebackEdgeFlux (int nt, const InertialEdgeViews &E, DView y, DView edge_flux)
 

Detailed Description

Performance-portable RHS + preconditioner for the local-inertial solver.

Kokkos translation of the explicit-gravity LISFLOOD-FP scheme in src/engine/2d/solver/ArkodeSurfaceSolver.cpp (the inertial fe/fi callbacks + block-Jacobi preconditioner). Only the scalable split is ported: gravity transport is EXPLICIT (continuity + surface gradient) and only the per-edge friction is IMPLICIT — a diagonal operator, so the preconditioner is exact and there is NO global solve. The same source compiles to OpenMP / CUDA / HIP / SYCL by selecting ExecSpace (see KokkosSurfaceKernels.hpp).

Conservation: the continuity divergence is a race-free per-cell CSR gather (each cell sums its incident edges), and one signed q per edge telescopes exactly — identical structure to the serial path.

Author
Caleb Buahin caleb.nosp@m..bua.nosp@m.hin@g.nosp@m.mail.nosp@m..com
License\n MIT License