45#ifndef OPENSWMM_ENGINE_FV_I_NETWORK_SOLVER_HPP
46#define OPENSWMM_ENGINE_FV_I_NETWORK_SOLVER_HPP
111 void (*
refresh)(
void* user,
double t_elapsed) =
nullptr;
Abstract time integrator for the explicit FV 1D network.
Definition INetworkSolver.hpp:135
virtual void reinitialize(double t0)=0
Refresh backend state after caller edits the bound hydraulic arrays.
virtual ~INetworkSolver()=default
Destroy a concrete backend through the network-solver interface.
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
Read the next CFL step suggestion from the latest backend census.
virtual void finalize()=0
Release all backend resources.
virtual bool divergence(Divergence &d) const noexcept
Report the last advance's worst physical-bound/nonfinite offender when supported.
Definition INetworkSolver.hpp:262
virtual RunStats run_stats() const noexcept
Read cumulative statistics. Default: zeros (backend has no counters).
Definition INetworkSolver.hpp:237
virtual double advance(double t_current, double t_target, const FvStepForcing &forcing)=0
Advance bound network state across one requested routing window.
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
Bind and initialize a concrete backend for one network model.
Definition AcceptedWaterVolumes.hpp:8
Knobs for FLOW_ROUTING FV.
Definition FvOptions.hpp:123
Definition INetworkSolver.hpp:58
const double * node_withdrawal
Definition INetworkSolver.hpp:119
const double * conduit_loss
Definition INetworkSolver.hpp:96
const double * node_source_max
Definition INetworkSolver.hpp:75
int n_nodes
Definition INetworkSolver.hpp:114
const double * node_lateral
Definition INetworkSolver.hpp:66
int n_links
Definition INetworkSolver.hpp:115
void * refresh_user
Definition INetworkSolver.hpp:112
const double * node_fixed_head
Definition INetworkSolver.hpp:71
void(* refresh)(void *user, double t_elapsed)
Definition INetworkSolver.hpp:111
const double * link_q_cap
Definition INetworkSolver.hpp:92
const double * structure_flow
Definition INetworkSolver.hpp:85
Definition INetworkSolver.hpp:246
double value
offending magnitude (internal units)
Definition INetworkSolver.hpp:248
const char * what
"velocity (ft/s)" | "depth (ft)"
Definition INetworkSolver.hpp:249
int link
engine link index of the offender
Definition INetworkSolver.hpp:247
Definition INetworkSolver.hpp:205
long dt_argmin_pressurized
h ≥ y_full (slot celerity)
Definition INetworkSolver.hpp:224
long n_macro_cycles
Definition INetworkSolver.hpp:232
double min_h
smallest substep taken (s)
Definition INetworkSolver.hpp:210
long dt_argmin_free
open-channel cell
Definition INetworkSolver.hpp:226
long nflux
face flux evaluations
Definition INetworkSolver.hpp:207
long dt_argmin_node
node storage / feedback bound
Definition INetworkSolver.hpp:227
double avg_h
sim-time / nsteps (s)
Definition INetworkSolver.hpp:209
long tier_cells[8]
cumulative rebuild-sampled cells per LTS tier
Definition INetworkSolver.hpp:218
long nsteps
explicit substeps
Definition INetworkSolver.hpp:206
int n_tiers
populated tier count (≤ 8)
Definition INetworkSolver.hpp:219
double last_h
last substep (s)
Definition INetworkSolver.hpp:208
double active_frac_mean
Definition INetworkSolver.hpp:215
long n_macro_rejected
Definition INetworkSolver.hpp:233
long dt_argmin_band
y_crown ≤ h < y_full (mouth)
Definition INetworkSolver.hpp:225
double active_frac_max
Definition INetworkSolver.hpp:216
double active_frac_min
Definition INetworkSolver.hpp:214
SoA mesh geometry and topology for the FV network solver.
Definition NetworkMeshData.hpp:123
Mutable solver state — the conserved variables and the node volumes.
Definition NetworkMeshData.hpp:519