27#ifndef OPENSWMM_ENGINE_2D_HYPRE_AMG_PRECONDITIONER_HPP
28#define OPENSWMM_ENGINE_2D_HYPRE_AMG_PRECONDITIONER_HPP
64 bool recompute =
true);
67 void solve(
const double* r,
double* z,
int n);
72 bool ready() const noexcept {
return amg_ !=
nullptr; }
85 bool hierarchy_built_ =
false;
86 std::vector<int> rows_;
87 std::vector<int> ncols_;
CSR assembly of the approximate Newton matrix M = I − γ·J for the 2D diffusive-wave surface operator,...
void invalidate() noexcept
Definition HypreAmgPreconditioner.hpp:80
void initialize(const MeshData &mesh)
Definition HypreAmgPreconditioner.cpp:32
HypreAmgPreconditioner & operator=(const HypreAmgPreconditioner &)=delete
~HypreAmgPreconditioner()
Definition HypreAmgPreconditioner.cpp:168
HypreAmgPreconditioner(const HypreAmgPreconditioner &)=delete
void solve(const double *r, double *z, int n)
Apply one BoomerAMG V-cycle: z ≈ M⁻¹ r (n entries each).
Definition HypreAmgPreconditioner.cpp:127
HypreAmgPreconditioner()=default
void setup(const MeshData &mesh, const SurfaceStateData &state, double gamma, bool recompute=true)
Definition HypreAmgPreconditioner.cpp:88
bool hierarchyBuilt() const noexcept
True once the multigrid hierarchy has been built at least once.
Definition HypreAmgPreconditioner.hpp:75
bool ready() const noexcept
Definition HypreAmgPreconditioner.hpp:72
void finalize()
Release all hypre objects.
Definition HypreAmgPreconditioner.cpp:159
Assembles M = I − γ·J (diffusion stencil) in CSR for AMG.
Definition SurfaceJacobian.hpp:43
Definition NodeCoupling.cpp:15
SoA storage for 2D triangular mesh geometry and topology.
Definition MeshData.hpp:34
Definition SurfaceStateData.hpp:41