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

SUNDIALS ARKODE/ARKStep IMEX integrator for the 2D surface routing ODE. More...

Include dependency graph for ArkodeSurfaceSolver.hpp:

Go to the source code of this file.

Detailed Description

SUNDIALS ARKODE/ARKStep IMEX integrator for the 2D surface routing ODE.

Phase 1 of docs/IMEX_LOCAL_INERTIAL_IMPLEMENTATION_PLAN.md. An alternative ISurfaceSolver to CvodeSurfaceSolver that integrates the same semi-discrete finite-volume system dV/dt = F_E(V) + F_I(V) with an additive Runge–Kutta IMEX method instead of CVODE's fully implicit BDF. The right-hand side is split (see SurfaceFluxCalculator):

F_E (explicit, non-stiff): rainfall, held coupling, evaporation. F_I (implicit, stiff) : the diffusion flux divergence + the live 1D↔2D orifice coupling.

Only F_I enters the implicit-stage Newton–Krylov solve, so the implicit Jacobian is the diffusion stencil — the BoomerAMG / Jacobi preconditioner (reused verbatim from the CVODE path; SUNDIALS 7's ARKLsPrecSetupFn/SolveFn share CVODE's callback signature) inverts M = I − γ·J over exactly that operator.

The state augmentation, tolerance scheme, and live-coupling ∫Q dt accumulators mirror CvodeSurfaceSolver so the router drives this backend through the unchanged ISurfaceSolver contract.

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