OpenSWMM Engine  6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
Loading...
Searching...
No Matches
openswmm_output.h
Go to the documentation of this file.
1
43#ifndef OPENSWMM_OUTPUT_H
44#define OPENSWMM_OUTPUT_H
45
46#include "openswmm_engine_export.h"
47
48#ifdef __cplusplus
49extern "C" {
50#endif
51
52/* =========================================================================
53 * Opaque handle
54 * ========================================================================= */
55
57typedef void* SWMM_Output;
58
59/* =========================================================================
60 * Result variable enumerations
61 * ========================================================================= */
62
80
96
111
133
134/* =========================================================================
135 * Lifecycle
136 * ========================================================================= */
137
145
152
153/* =========================================================================
154 * Metadata queries
155 * ========================================================================= */
156
163
171
178
185
192
199
206
221 double* start_date);
222
229
230/* =========================================================================
231 * Object ID retrieval
232 * ========================================================================= */
233
241 int index);
242
250 int index);
251
259 int index);
260
261/* =========================================================================
262 * Per-period result retrieval (all objects, one variable, one period)
263 * ========================================================================= */
264
275 int period,
276 int var,
277 float* values);
278
289 int period,
290 int var,
291 float* values);
292
303 int period,
304 int var,
305 float* values);
306
317 int period,
318 int var,
319 float* value);
320
321/* =========================================================================
322 * Time series retrieval (one object, one variable, period range)
323 * ========================================================================= */
324
337 int subcatch_idx,
338 int var,
339 int start_period,
340 int end_period,
341 float* values);
342
355 int node_idx,
356 int var,
357 int start_period,
358 int end_period,
359 float* values);
360
373 int link_idx,
374 int var,
375 int start_period,
376 int end_period,
377 float* values);
378
390 int var,
391 int start_period,
392 int end_period,
393 float* values);
394
395/* =========================================================================
396 * Per-object result retrieval (all variables for one object at one period)
397 * ========================================================================= */
398
410 int subcatch_idx,
411 int period,
412 float* values,
413 int* count);
414
426 int node_idx,
427 int period,
428 float* values,
429 int* count);
430
442 int link_idx,
443 int period,
444 float* values,
445 int* count);
446
447/* =========================================================================
448 * Simulation time retrieval
449 * ========================================================================= */
450
465 int period,
466 double* time);
467
468/* =========================================================================
469 * Per-node summary statistics — Slice QA-01
470 *
471 * The SWMM 5.x binary output format does not include a stats block; these
472 * functions reconstruct the four flooding statistics at read time by
473 * walking the per-period node results stored in the file. The semantics
474 * mirror the engine-side `swmm_node_get_stat_*` accessors (which read
475 * from SimulationContext.nodes.stat_*), except sourced from a SWMM_Output
476 * handle so per-output comparisons work across multiple loaded .out
477 * files. Implementations are O(n_periods) per call.
478 *
479 * Caveat: aggregation runs over REPORT-step samples, not the engine's
480 * internal routing-step samples. For runs where the report step is much
481 * coarser than the routing step (e.g. report every hour vs. route every
482 * 5 s), `time_flooded` and `vol_flooded` will under-count brief
483 * sub-report-step flooding events. The engine-side getters
484 * (`swmm_node_get_stat_*`) retain the legacy routing-step precision —
485 * use those when a fresh in-process run is the source.
486 * ========================================================================= */
487
501 int node_idx,
502 double* value);
503
512 int node_idx,
513 double* value);
514
524 int node_idx,
525 double* value);
526
537 int node_idx,
538 double* value);
539
540/* =========================================================================
541 * Error reporting
542 * ========================================================================= */
543
550
551#ifdef __cplusplus
552}
553#endif
554
555#endif /* OPENSWMM_OUTPUT_H */
SWMM_ENGINE_API int swmm_output_get_pollut_count(SWMM_Output handle)
Get the number of pollutants in the output file.
Definition openswmm_output_impl.cpp:80
SWMM_ENGINE_API int swmm_output_get_version(SWMM_Output handle)
Get the SWMM version stored in the output file.
Definition openswmm_output_impl.cpp:55
SWMM_ENGINE_API int swmm_output_get_node_attribute(SWMM_Output handle, int node_idx, int period, float *values, int *count)
Get all result variables for a single node at one period.
Definition openswmm_output_impl.cpp:225
SWMM_ENGINE_API int swmm_output_get_subcatch_attribute(SWMM_Output handle, int subcatch_idx, int period, float *values, int *count)
Get all result variables for a single subcatchment at one period.
Definition openswmm_output_impl.cpp:215
SWMM_ENGINE_API int swmm_output_get_error_code(SWMM_Output handle)
Get the error code stored in the output file footer.
Definition openswmm_output_impl.cpp:296
SWMM_OutSystemVar
System-wide result variable indices.
Definition openswmm_output.h:117
@ SWMM_OUT_SYS_PET
Definition openswmm_output.h:131
@ SWMM_OUT_SYS_OUTFLOW
Definition openswmm_output.h:128
@ SWMM_OUT_SYS_RAINFALL
Definition openswmm_output.h:119
@ SWMM_OUT_SYS_TEMPERATURE
Definition openswmm_output.h:118
@ SWMM_OUT_SYS_DW_INFLOW
Definition openswmm_output.h:124
@ SWMM_OUT_SYS_SNOW_DEPTH
Definition openswmm_output.h:120
@ SWMM_OUT_SYS_INFIL
Definition openswmm_output.h:122
@ SWMM_OUT_SYS_RUNOFF
Definition openswmm_output.h:123
@ SWMM_OUT_SYS_STORAGE
Definition openswmm_output.h:129
@ SWMM_OUT_SYS_LAT_INFLOW
Definition openswmm_output.h:126
@ SWMM_OUT_SYS_GW_INFLOW
Definition openswmm_output.h:125
@ SWMM_OUT_SYS_EVAP_TOTAL
Definition openswmm_output.h:130
@ SWMM_OUT_SYS_FLOODING
Definition openswmm_output.h:127
@ SWMM_OUT_SYS_EVAP
Definition openswmm_output.h:121
SWMM_ENGINE_API int swmm_output_get_period_count(SWMM_Output handle)
Get the number of reporting periods (timesteps) in the output file.
Definition openswmm_output_impl.cpp:85
SWMM_ENGINE_API int swmm_output_get_subcatch_result(SWMM_Output handle, int period, int var, float *values)
Get one subcatchment variable for all subcatchments at a given period.
Definition openswmm_output_impl.cpp:129
SWMM_OutNodeVar
Node result variable indices.
Definition openswmm_output.h:87
@ SWMM_OUT_NODE_TOTAL_INFLOW
Definition openswmm_output.h:92
@ SWMM_OUT_NODE_POLLUT_BASE
Definition openswmm_output.h:94
@ SWMM_OUT_NODE_HEAD
Definition openswmm_output.h:89
@ SWMM_OUT_NODE_DEPTH
Definition openswmm_output.h:88
@ SWMM_OUT_NODE_VOLUME
Definition openswmm_output.h:90
@ SWMM_OUT_NODE_OVERFLOW
Definition openswmm_output.h:93
@ SWMM_OUT_NODE_LATERAL_INFLOW
Definition openswmm_output.h:91
SWMM_ENGINE_API int swmm_output_get_report_step(SWMM_Output handle)
Get the report step in seconds.
Definition openswmm_output_impl.cpp:98
SWMM_OutSubcatchVar
Subcatchment result variable indices.
Definition openswmm_output.h:69
@ SWMM_OUT_SUBCATCH_INFIL
Definition openswmm_output.h:73
@ SWMM_OUT_SUBCATCH_RAINFALL
Definition openswmm_output.h:70
@ SWMM_OUT_SUBCATCH_POLLUT_BASE
Definition openswmm_output.h:78
@ SWMM_OUT_SUBCATCH_GW_FLOW
Definition openswmm_output.h:75
@ SWMM_OUT_SUBCATCH_RUNOFF
Definition openswmm_output.h:74
@ SWMM_OUT_SUBCATCH_EVAP
Definition openswmm_output.h:72
@ SWMM_OUT_SUBCATCH_SNOW_DEPTH
Definition openswmm_output.h:71
@ SWMM_OUT_SUBCATCH_SOIL_MOIST
Definition openswmm_output.h:77
@ SWMM_OUT_SUBCATCH_GW_ELEV
Definition openswmm_output.h:76
SWMM_ENGINE_API int swmm_output_get_node_stat_max_overflow(SWMM_Output handle, int node_idx, double *value)
Maximum node overflow rate across all reporting periods.
Definition openswmm_output_impl.cpp:271
SWMM_ENGINE_API int swmm_output_get_node_series(SWMM_Output handle, int node_idx, int var, int start_period, int end_period, float *values)
Get a node variable time series across a range of periods.
Definition openswmm_output_impl.cpp:177
SWMM_ENGINE_API int swmm_output_get_node_stat_time_flooded(SWMM_Output handle, int node_idx, double *value)
Total time the node was flooded across the simulation.
Definition openswmm_output_impl.cpp:285
SWMM_ENGINE_API int swmm_output_get_node_stat_max_depth(SWMM_Output handle, int node_idx, double *value)
Maximum node depth across all reporting periods.
Definition openswmm_output_impl.cpp:264
SWMM_ENGINE_API int swmm_output_get_system_series(SWMM_Output handle, int var, int start_period, int end_period, float *values)
Get a system variable time series across a range of periods.
Definition openswmm_output_impl.cpp:201
SWMM_ENGINE_API int swmm_output_get_link_result(SWMM_Output handle, int period, int var, float *values)
Get one link variable for all links at a given period.
Definition openswmm_output_impl.cpp:145
SWMM_ENGINE_API int swmm_output_get_start_date(SWMM_Output handle, double *start_date)
Get the simulation start date as a SWMM DateTime double.
Definition openswmm_output_impl.cpp:90
SWMM_ENGINE_API int swmm_output_get_link_attribute(SWMM_Output handle, int link_idx, int period, float *values, int *count)
Get all result variables for a single link at one period.
Definition openswmm_output_impl.cpp:235
SWMM_ENGINE_API int swmm_output_get_flow_units(SWMM_Output handle)
Get the flow units code.
Definition openswmm_output_impl.cpp:60
SWMM_ENGINE_API int swmm_output_get_link_count(SWMM_Output handle)
Get the number of links in the output file.
Definition openswmm_output_impl.cpp:75
SWMM_ENGINE_API int swmm_output_get_link_series(SWMM_Output handle, int link_idx, int var, int start_period, int end_period, float *values)
Get a link variable time series across a range of periods.
Definition openswmm_output_impl.cpp:189
SWMM_ENGINE_API int swmm_output_get_subcatch_count(SWMM_Output handle)
Get the number of subcatchments in the output file.
Definition openswmm_output_impl.cpp:65
SWMM_ENGINE_API int swmm_output_get_node_result(SWMM_Output handle, int period, int var, float *values)
Get one node variable for all nodes at a given period.
Definition openswmm_output_impl.cpp:137
SWMM_OutLinkVar
Link result variable indices.
Definition openswmm_output.h:103
@ SWMM_OUT_LINK_FLOW
Definition openswmm_output.h:104
@ SWMM_OUT_LINK_VELOCITY
Definition openswmm_output.h:106
@ SWMM_OUT_LINK_DEPTH
Definition openswmm_output.h:105
@ SWMM_OUT_LINK_POLLUT_BASE
Definition openswmm_output.h:109
@ SWMM_OUT_LINK_VOLUME
Definition openswmm_output.h:107
@ SWMM_OUT_LINK_CAPACITY
Definition openswmm_output.h:108
void * SWMM_Output
Opaque handle to an opened output file reader.
Definition openswmm_output.h:57
SWMM_ENGINE_API int swmm_output_get_node_count(SWMM_Output handle)
Get the number of nodes in the output file.
Definition openswmm_output_impl.cpp:70
SWMM_ENGINE_API int swmm_output_get_system_result(SWMM_Output handle, int period, int var, float *value)
Get system-wide results at a given period.
Definition openswmm_output_impl.cpp:153
SWMM_ENGINE_API const char * swmm_output_get_subcatch_id(SWMM_Output handle, int index)
Get the string ID of a subcatchment by index.
Definition openswmm_output_impl.cpp:107
SWMM_ENGINE_API int swmm_output_get_period_time(SWMM_Output handle, int period, double *time)
Get the simulation time for a given period as a SWMM DateTime double.
Definition openswmm_output_impl.cpp:249
SWMM_ENGINE_API const char * swmm_output_get_node_id(SWMM_Output handle, int index)
Get the string ID of a node by index.
Definition openswmm_output_impl.cpp:113
SWMM_ENGINE_API int swmm_output_get_subcatch_series(SWMM_Output handle, int subcatch_idx, int var, int start_period, int end_period, float *values)
Get a subcatchment variable time series across a range of periods.
Definition openswmm_output_impl.cpp:165
SWMM_ENGINE_API SWMM_Output swmm_output_open(const char *path)
Open a binary output file for reading.
Definition openswmm_output_impl.cpp:33
SWMM_ENGINE_API const char * swmm_output_get_link_id(SWMM_Output handle, int index)
Get the string ID of a link by index.
Definition openswmm_output_impl.cpp:119
SWMM_ENGINE_API void swmm_output_close(SWMM_Output handle)
Close the output file and free all resources.
Definition openswmm_output_impl.cpp:44
SWMM_ENGINE_API int swmm_output_get_node_stat_vol_flooded(SWMM_Output handle, int node_idx, double *value)
Total flood volume at the node across the simulation.
Definition openswmm_output_impl.cpp:278
#define SWMM_ENGINE_API
Definition openswmm_2d.h:37