40#ifndef OPENSWMM_ENGINE_FV_I_NETWORK_SOLVER_HPP
41#define OPENSWMM_ENGINE_FV_I_NETWORK_SOLVER_HPP
102 void (*
refresh)(
void* user,
double t_elapsed) =
nullptr;
131 virtual double advance(
double t_current,
double t_target,
Abstract time integrator for the explicit FV 1D network.
Definition INetworkSolver.hpp:121
virtual void reinitialize(double t0)=0
Reinitialize at t0 after external state edits (hot start, API writes).
virtual ~INetworkSolver()=default
virtual long last_num_steps() const noexcept=0
Substep count used by the last advance() call.
virtual double last_step_size() const noexcept=0
Last internal substep size (s).
virtual double suggested_step() const noexcept=0
virtual void finalize()=0
Release all backend resources.
virtual bool divergence(Divergence &d) const noexcept
Definition INetworkSolver.hpp:197
virtual RunStats run_stats() const noexcept
Read cumulative statistics. Default: zeros (backend has no counters).
Definition INetworkSolver.hpp:179
virtual double advance(double t_current, double t_target, const FvStepForcing &forcing)=0
virtual bool is_initialized() const noexcept=0
True once initialize() has completed and the solver is ready.
virtual void initialize(NetworkMeshData &mesh, NetworkStateData &state, const FvOptions &opts)=0
One-time setup. mesh, state and opts must outlive the solver.
Definition ExplicitFvSolver.cpp:25
Knobs for FLOW_ROUTING FV.
Definition FvOptions.hpp:123
Definition INetworkSolver.hpp:53
const double * conduit_loss
Definition INetworkSolver.hpp:87
int n_nodes
Definition INetworkSolver.hpp:105
const double * node_lateral
Definition INetworkSolver.hpp:61
int n_links
Definition INetworkSolver.hpp:106
void * refresh_user
Definition INetworkSolver.hpp:103
const double * node_fixed_head
Definition INetworkSolver.hpp:66
void(* refresh)(void *user, double t_elapsed)
Definition INetworkSolver.hpp:102
const double * link_q_cap
Definition INetworkSolver.hpp:83
const double * structure_flow
Definition INetworkSolver.hpp:76
Definition INetworkSolver.hpp:188
double value
offending magnitude (internal units)
Definition INetworkSolver.hpp:190
const char * what
"velocity (ft/s)" | "depth (ft)"
Definition INetworkSolver.hpp:191
int link
engine link index of the offender
Definition INetworkSolver.hpp:189
Definition INetworkSolver.hpp:153
long dt_argmin_pressurized
h ≥ y_full (slot celerity)
Definition INetworkSolver.hpp:172
double min_h
smallest substep taken (s)
Definition INetworkSolver.hpp:158
long dt_argmin_free
open-channel cell
Definition INetworkSolver.hpp:174
long nflux
face flux evaluations
Definition INetworkSolver.hpp:155
long dt_argmin_node
node storage / feedback bound
Definition INetworkSolver.hpp:175
double avg_h
sim-time / nsteps (s)
Definition INetworkSolver.hpp:157
long tier_cells[8]
cumulative rebuild-sampled cells per LTS tier
Definition INetworkSolver.hpp:166
long nsteps
explicit substeps
Definition INetworkSolver.hpp:154
int n_tiers
populated tier count (≤ 8)
Definition INetworkSolver.hpp:167
double last_h
last substep (s)
Definition INetworkSolver.hpp:156
double active_frac_mean
Definition INetworkSolver.hpp:163
long dt_argmin_band
y_crown ≤ h < y_full (mouth)
Definition INetworkSolver.hpp:173
double active_frac_max
Definition INetworkSolver.hpp:164
double active_frac_min
Definition INetworkSolver.hpp:162
SoA mesh geometry and topology for the FV network solver.
Definition NetworkMeshData.hpp:176
Mutable solver state — the conserved variables and the node volumes.
Definition NetworkMeshData.hpp:489