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

hypre BoomerAMG algebraic-multigrid preconditioner for the 2D surface CVODE solver (PRECONDITIONER=AMG). More...

#include "SurfaceJacobian.hpp"
#include <vector>
Include dependency graph for HypreAmgPreconditioner.hpp:
This graph shows which files directly or indirectly include this file:

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
 

Detailed Description

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.

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