25#ifndef OPENSWMM_ENGINE_2D_I_SURFACE_SOLVER_HPP
26#define OPENSWMM_ENGINE_2D_I_SURFACE_SOLVER_HPP
59 virtual double advance(
double t_current,
double t_target) = 0;
77 static const std::vector<double> kEmpty;
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