![]() |
OpenSWMM Engine
6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
|
Performance-portable local-inertial surface solver (Kokkos + ARKStep). More...
#include "../solver/ISurfaceSolver.hpp"#include "KokkosSurfaceKernels.hpp"#include "KokkosInertialKernels.hpp"#include <nvector/nvector_kokkos.hpp>#include <sundials/sundials_context.h>#include <sundials/sundials_linearsolver.h>#include <sundials/sundials_types.h>#include <memory>Go to the source code of this file.
Classes | |
| struct | openswmm::twoD::gpu::ArkodeKokkosContext |
| Context handed to the ARKStep callbacks via ARKodeSetUserData(). More... | |
| class | openswmm::twoD::gpu::ArkodeKokkosSurfaceSolver |
Namespaces | |
| namespace | openswmm |
| namespace | openswmm::twoD |
| namespace | openswmm::twoD::gpu |
Typedefs | |
| using | openswmm::twoD::gpu::VecType = ::sundials::kokkos::Vector<ExecSpace> |
| SUNDIALS Kokkos vector specialised on the default execution space. | |
Performance-portable local-inertial surface solver (Kokkos + ARKStep).
The Kokkos counterpart of the serial ArkodeSurfaceSolver's explicit-gravity (LISFLOOD-FP) local-inertial scheme. State is the augmented [V(cells), q(edges)] vector in a Kokkos N_Vector, so BOTH the RHS/preconditioner kernels (KokkosInertialKernels.hpp) AND ARKStep's vector ops run device-resident — the serial-N_Vector bottleneck that limited the core OpenMP path to ~1.2× is removed.
Only the scalable split is implemented: gravity transport explicit, per-edge friction implicit (diagonal → exact preconditioner, no global solve). The implicit-gravity comparison path stays serial-only.
Lives entirely in the GPU plugin; never linked into the core engine.