OpenSWMM Engine  6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
Loading...
Searching...
No Matches
ISurfaceSolver.hpp
Go to the documentation of this file.
1
24
25#ifndef OPENSWMM_ENGINE_2D_I_SURFACE_SOLVER_HPP
26#define OPENSWMM_ENGINE_2D_I_SURFACE_SOLVER_HPP
27
28#include <vector>
29
30namespace openswmm::twoD {
31
32// Forward declarations — passed by reference, no definitions needed here.
33struct MeshData;
34struct SurfaceStateData;
35struct SolverOptions2D;
36
50public:
51 virtual ~ISurfaceSolver() = default;
52
54 virtual void initialize(MeshData& mesh, SurfaceStateData& state,
55 SolverOptions2D& opts) = 0;
56
59 virtual double advance(double t_current, double t_target) = 0;
60
62 virtual void reinitialize(double t0) = 0;
63
65 virtual void finalize() = 0;
66
68 virtual long last_num_steps() const noexcept = 0;
69
71 virtual double last_step_size() const noexcept = 0;
72
76 virtual const std::vector<double>& last_coupling_exchange() const noexcept {
77 static const std::vector<double> kEmpty;
78 return kEmpty;
79 }
80
82 virtual bool is_initialized() const noexcept = 0;
83};
84
85} // namespace openswmm::twoD
86
87#endif // OPENSWMM_ENGINE_2D_I_SURFACE_SOLVER_HPP
Abstract time integrator for the 2D surface-routing ODE system.
Definition ISurfaceSolver.hpp:49
virtual void initialize(MeshData &mesh, SurfaceStateData &state, SolverOptions2D &opts)=0
One-time setup. mesh and state must outlive the solver.
virtual bool is_initialized() const noexcept=0
True once initialize() has completed and the solver is ready.
virtual double advance(double t_current, double t_target)=0
virtual void reinitialize(double t0)=0
Reinitialize the integrator at t0 after external state edits.
virtual void finalize()=0
Release all backend resources.
virtual const std::vector< double > & last_coupling_exchange() const noexcept
Definition ISurfaceSolver.hpp:76
virtual long last_num_steps() const noexcept=0
Number of internal integrator steps in the last advance() call.
virtual ~ISurfaceSolver()=default
virtual double last_step_size() const noexcept=0
Last internal step size used by the integrator.
Definition NodeCoupling.cpp:15
SoA storage for 2D triangular mesh geometry and topology.
Definition MeshData.hpp:34
Configuration for the 2D surface routing CVODE solver.
Definition SolverOptions2D.hpp:132
Definition SurfaceStateData.hpp:41