![]() |
OpenSWMM Engine
6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
|
hypre BoomerAMG algebraic-multigrid preconditioner for the 2D surface CVODE solver (PRECONDITIONER=AMG). More...
Go to the source code of this file.
Classes | |
| class | openswmm::twoD::HypreAmgPreconditioner |
| BoomerAMG preconditioner over the 2D diffusion Newton matrix. More... | |
Namespaces | |
| namespace | openswmm |
| namespace | openswmm::twoD |
hypre BoomerAMG algebraic-multigrid preconditioner for the 2D surface CVODE solver (PRECONDITIONER=AMG).
Wraps a hypre IJ/ParCSR matrix + BoomerAMG hierarchy behind the CVODE CVodeSetPreconditioner(psetup, psolve) surface — the same surface the Jacobi heuristic uses, so the linear-solver stack is unchanged: GMRES stays matrix-free (finite-difference J·v) for the true operator, and this preconditioner inverts the assembled approximate Newton matrix M = I − γ·J (the diffusion stencil from SurfaceJacobian). One BoomerAMG V-cycle per psolve gives near-mesh-independent Krylov iteration counts.
hypre is called single-process (sequential build, MPI_COMM_WORLD = mpistubs no-op). Only compiled when OPENSWMM_WITH_HYPRE is ON; the header is hypre-free (opaque handles) so it is safe to include from guarded code without leaking HYPRE.h.