OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
openswmm_engine.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2//
3// Copyright 2026 Caleb Buahin
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing, software
12// distributed under the License is distributed on an "AS IS" BASIS,
13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14// See the License for the specific language governing permissions and
15// limitations under the License.
16
84
85#ifndef OPENSWMM_ENGINE_H
86#define OPENSWMM_ENGINE_H
87
88#include "openswmm_callbacks.h"
89
90/* =========================================================================
91 * Export macro
92 * ========================================================================= */
93
94#ifdef OPENSWMM_ENGINE_STATIC
95# define SWMM_ENGINE_API
96#else
97# ifdef _WIN32
98# ifdef openswmm_engine_EXPORTS
99# define SWMM_ENGINE_API __declspec(dllexport)
100# else
101# define SWMM_ENGINE_API __declspec(dllimport)
102# endif
103# else
104# define SWMM_ENGINE_API __attribute__((visibility("default")))
105# endif
106#endif
107
108#ifdef __cplusplus
109extern "C" {
110#endif
111
112/* =========================================================================
113 * Error codes
114 * ========================================================================= */
115
135
146
147/* =========================================================================
148 * Engine lifecycle state
149 * ========================================================================= */
150
162
163/* =========================================================================
164 * Object type identifiers
165 * ========================================================================= */
166
182
183/* =========================================================================
184 * Engine lifecycle functions
185 * ========================================================================= */
186
189
202 const char* inp, const char* rpt, const char* out,
203 const char* input_plugin_lib);
204
207
209SWMM_ENGINE_API int swmm_engine_start(SWMM_Engine engine, int save_results);
210
212SWMM_ENGINE_API int swmm_engine_step(SWMM_Engine engine, double* elapsed_time);
213
227SWMM_ENGINE_API int swmm_engine_stride(SWMM_Engine engine, int n_steps, double* elapsed_time);
228
231
234
237
240
243
244/* =========================================================================
245 * Convenience run functions
246 * ========================================================================= */
247
261SWMM_ENGINE_API int swmm_engine_run(const char* inp, const char* rpt, const char* out,
262 const char* input_plugin_lib);
263
279 const char* inp, const char* rpt, const char* out,
280 const char* input_plugin_lib,
281 SWMM_ProgressCallback callback, void* user_data);
282
283/* =========================================================================
284 * Callback registration
285 * ========================================================================= */
286
288 SWMM_ProgressCallback callback, void* user_data);
290 SWMM_WarningCallback callback, void* user_data);
292 SWMM_StepBeginCallback callback, void* user_data);
294 SWMM_StepEndCallback callback, void* user_data);
295
296/* =========================================================================
297 * Error reporting
298 * ========================================================================= */
299
302SWMM_ENGINE_API const char* swmm_error_message (int code);
303
315
316/* Enumerate the errors/warnings accumulated on the engine during open (e.g.
317 * after a lenient open). Index is 0-based; out-of-range returns "". */
319SWMM_ENGINE_API const char* swmm_get_error_at (SWMM_Engine engine, int index);
321SWMM_ENGINE_API const char* swmm_get_warning_at (SWMM_Engine engine, int index);
322
323/* =========================================================================
324 * Thread capability query (engine-independent)
325 * ========================================================================= */
326
343
346
360SWMM_ENGINE_API int swmm_get_effective_threads(SWMM_Engine engine, int threads_option,
361 int* global_threads, int* dw_threads,
362 int* twod_threads);
363
364/* =========================================================================
365 * Transport matrix (E2, 2026-09-07) — which species classes run in which
366 * domain, and why not. Engine-computed from the open model's options
367 * (IGNORE_QUALITY, WATER_AGE, HEAT_TRANSPORT, the reactions component,
368 * IGNORE_2D and the [2D_OPTIONS] TRANSPORT_* keys); the .rpt prints the
369 * same table. Valid after swmm_engine_open; re-read after option edits.
370 * ========================================================================= */
371
372#define SWMM_TRANSPORT_DOMAIN_RUNOFF 0
373#define SWMM_TRANSPORT_DOMAIN_GROUNDWATER 1
374#define SWMM_TRANSPORT_DOMAIN_NETWORK_1D 2
375#define SWMM_TRANSPORT_DOMAIN_SURFACE_2D 3
376#define SWMM_TRANSPORT_DOMAIN_COUNT 4
377
378#define SWMM_TRANSPORT_CLASS_POLLUTANTS 0
379#define SWMM_TRANSPORT_CLASS_MSX 1
380#define SWMM_TRANSPORT_CLASS_AGE 2
381#define SWMM_TRANSPORT_CLASS_TEMPERATURE 3
382#define SWMM_TRANSPORT_CLASS_COUNT 4
383
384#define SWMM_TRANSPORT_ENABLED 0
385#define SWMM_TRANSPORT_DISABLED_BY_USER 1
386#define SWMM_TRANSPORT_UNAVAILABLE 2
387
393
397
402
404SWMM_ENGINE_API const char* swmm_transport_domain_name(int domain);
405SWMM_ENGINE_API const char* swmm_transport_class_name(int species_class);
406
407/* =========================================================================
408 * Simulation timing
409 * ========================================================================= */
410
411SWMM_ENGINE_API int swmm_get_start_time (SWMM_Engine engine, double* start);
412SWMM_ENGINE_API int swmm_get_end_time (SWMM_Engine engine, double* end);
413SWMM_ENGINE_API int swmm_get_current_time(SWMM_Engine engine, double* current);
415
416/* =========================================================================
417 * Unit system query
418 * =========================================================================
419 * All C API getters return — and all setters accept — values in the project's
420 * DISPLAY units, selected by [OPTIONS] FLOW_UNITS. These accessors report which
421 * units are in effect so callers (bindings, coupling) can interpret values.
422 */
423
426SWMM_ENGINE_API int swmm_get_flow_units(SWMM_Engine engine, int* flow_units);
427
430SWMM_ENGINE_API int swmm_get_unit_system(SWMM_Engine engine, int* unit_system);
431
432/* =========================================================================
433 * Routing event and steady-state status
434 * ========================================================================= */
435
437SWMM_ENGINE_API int swmm_is_between_events(SWMM_Engine engine, int* is_between);
438
441SWMM_ENGINE_API int swmm_get_event_count(SWMM_Engine engine, int* count);
442
443/* -------------------------------------------------------------------------
444 * [EVENTS] section accessors (Slice CW — added 2026-05-21).
445 *
446 * Mirrors the per-row reader in `handle_events` (InfraHandler.cpp). All times
447 * are DateTime decimal days (consistent with `swmm_get_start_time` etc.).
448 * `swmm_events_count` is a synonym of the legacy `swmm_get_event_count` and
449 * is provided so the [EVENTS] surface is self-consistent.
450 * ------------------------------------------------------------------------- */
451
453SWMM_ENGINE_API int swmm_events_count(SWMM_Engine engine, int* count);
454
458 double* start, double* end);
459
464 double start, double end);
465
470 double start, double end, int* out_idx);
471
475
478
482
483/* =========================================================================
484 * Phase 1b: Runoff interface file (legacy "Frunoff").
485 *
486 * Persists per-subcatchment runoff snapshots to a binary file so the
487 * runoff phase of a long simulation can be cached and replayed in a
488 * downstream routing-only run. Mirrors the legacy SWMM-5 file format
489 * (see src/engine/hydrology/RunoffInterface.hpp).
490 *
491 * SAVE mode is fully integrated: open the file in SAVE before
492 * @c swmm_engine_start, run the simulation as normal, then close. The
493 * engine emits one record per runoff substep automatically.
494 *
495 * USE mode currently exposes the file but does NOT yet auto-skip the
496 * engine's runoff computation — callers must invoke
497 * @ref swmm_runoff_iface_read_step between simulation steps and
498 * understand that the engine will overwrite the loaded state if runoff
499 * still runs. Full USE-mode auto-skip is tracked as a follow-up.
500 *
501 * @since 6.0.0
502 * ========================================================================= */
503
514SWMM_ENGINE_API int swmm_runoff_iface_open_write(SWMM_Engine engine, const char* path);
515
525SWMM_ENGINE_API int swmm_runoff_iface_open_read(SWMM_Engine engine, const char* path);
526
541
555
563
564#ifdef __cplusplus
565} /* extern "C" */
566#endif
567
568/* =========================================================================
569 * Master include — pull in all domain headers
570 *
571 * Each domain header includes openswmm_engine.h itself (for SWMM_ENGINE_API
572 * and the handle typedef), so include guards prevent recursion.
573 * ========================================================================= */
574
575#include "openswmm_datetime.h"
576#include "openswmm_model.h"
577#include "openswmm_nodes.h"
578#include "openswmm_links.h"
580#include "openswmm_gages.h"
581#include "openswmm_massbalance.h"
582#include "openswmm_hotstart.h"
583#include "openswmm_spatial.h"
584#include "openswmm_pollutants.h"
586#include "openswmm_reactions.h"
588#include "openswmm_tables.h"
589#include "openswmm_inflows.h"
590#include "openswmm_controls.h"
592#include "openswmm_quality.h"
593#include "openswmm_statistics.h"
594#include "openswmm_forcing.h"
595#include "openswmm_climate.h"
596#include "openswmm_edit.h"
597
598#ifdef OPENSWMM_HAS_2D
599#include "openswmm_2d.h"
600#include "openswmm_gw_transport.h" /* U4 (2026-09-07) */
601#endif
602
603#endif /* OPENSWMM_ENGINE_H */
Optional 2D surface routing module — C API.
#define SWMM_ENGINE_API
Definition openswmm_2d.h:53
Callback function typedefs for the OpenSWMM Engine C API.
void * SWMM_Engine
Opaque handle to an OpenSWMM Engine instance.
Definition openswmm_callbacks.h:51
void(* SWMM_StepBeginCallback)(SWMM_Engine engine, double sim_time, double dt, void *user_data)
Called at the beginning of each simulation timestep, before physics.
Definition openswmm_callbacks.h:128
void(* SWMM_WarningCallback)(SWMM_Engine engine, int code, const char *message, void *user_data)
Called when the engine emits a warning or non-fatal error.
Definition openswmm_callbacks.h:106
void(* SWMM_StepEndCallback)(SWMM_Engine engine, double sim_time, double dt, void *user_data)
Called at the end of each simulation timestep, after physics.
Definition openswmm_callbacks.h:146
void(* SWMM_ProgressCallback)(SWMM_Engine engine, double elapsed_frac, double sim_time, void *user_data)
Called after each simulation timestep to report progress.
Definition openswmm_callbacks.h:81
OpenSWMM Engine — Climatology configuration C API.
OpenSWMM Engine — Control Rules C API.
OpenSWMM Engine — SWMM DateTime conversion utilities (C API).
OpenSWMM Engine — Model editing C API (deletion and type conversion).
SWMM_ENGINE_API int swmm_set_steady_state_skip(SWMM_Engine engine, int enabled)
Definition openswmm_engine_impl.cpp:514
SWMM_ENGINE_API int swmm_get_error_count(SWMM_Engine engine)
Definition openswmm_engine_impl.cpp:234
SWMM_ENGINE_API int swmm_engine_run(const char *inp, const char *rpt, const char *out, const char *input_plugin_lib)
Run a complete simulation to completion.
Definition openswmm_engine_impl.cpp:178
SWMM_ENGINE_API const char * swmm_get_last_error_msg(SWMM_Engine engine)
Definition openswmm_engine_impl.cpp:224
SWMM_ENGINE_API int swmm_set_progress_callback(SWMM_Engine engine, SWMM_ProgressCallback callback, void *user_data)
Definition openswmm_engine_impl.cpp:187
SWMM_ENGINE_API int swmm_runoff_iface_read_step(SWMM_Engine engine, int *has_data)
Read one runoff substep record from the open USE file into the current subcatchment state.
Definition openswmm_engine_impl.cpp:546
SWMM_ENGINE_API void swmm_engine_set_lenient_open(SWMM_Engine engine, int on)
Definition openswmm_engine_impl.cpp:229
SWMM_ENGINE_API int swmm_events_get(SWMM_Engine engine, int idx, double *start, double *end)
Get the start/end DateTime of the idx-th event.
Definition openswmm_engine_impl.cpp:460
SWMM_ENGINE_API int swmm_events_clear(SWMM_Engine engine)
Remove all events.
Definition openswmm_engine_impl.cpp:502
SWMM_ENGINE_API int swmm_get_routing_step(SWMM_Engine engine, double *dt)
Definition openswmm_engine_impl.cpp:399
SWMM_ENGINE_API int swmm_runoff_iface_open_read(SWMM_Engine engine, const char *path)
Open the runoff interface file for reading (USE mode).
Definition openswmm_engine_impl.cpp:534
SWMM_ENGINE_API int swmm_engine_open(SWMM_Engine engine, const char *inp, const char *rpt, const char *out, const char *input_plugin_lib)
Open and parse a SWMM input file; load plugins → SWMM_STATE_OPENED.
Definition openswmm_engine_impl.cpp:49
SWMM_ENGINE_API int swmm_events_count(SWMM_Engine engine, int *count)
Number of [EVENTS] entries. Alias of swmm_get_event_count.
Definition openswmm_engine_impl.cpp:456
SWMM_ENGINE_API int swmm_engine_end(SWMM_Engine engine)
End the simulation → SWMM_STATE_ENDED.
Definition openswmm_engine_impl.cpp:87
SWMM_ENGINE_API int swmm_get_transport_matrix(SWMM_Engine engine, SWMM_TransportMatrix *out)
Definition openswmm_engine_impl.cpp:308
SWMM_ENGINE_API int swmm_get_steady_state_skip(SWMM_Engine engine, int *enabled)
Get/set steady-state skip flag.
Definition openswmm_engine_impl.cpp:508
SWMM_ENGINE_API int swmm_get_current_time(SWMM_Engine engine, double *current)
Definition openswmm_engine_impl.cpp:393
#define SWMM_TRANSPORT_CLASS_COUNT
Definition openswmm_engine.h:382
SWMM_ENGINE_API int swmm_engine_close(SWMM_Engine engine)
Close all files → SWMM_STATE_CLOSED.
Definition openswmm_engine_impl.cpp:97
SWMM_ENGINE_API int swmm_set_warning_callback(SWMM_Engine engine, SWMM_WarningCallback callback, void *user_data)
Definition openswmm_engine_impl.cpp:194
SWMM_ENGINE_API int swmm_is_between_events(SWMM_Engine engine, int *is_between)
Check if simulation is currently between routing events.
Definition openswmm_engine_impl.cpp:434
#define SWMM_TRANSPORT_DOMAIN_COUNT
Definition openswmm_engine.h:376
SWMM_ENGINE_API const char * swmm_get_error_at(SWMM_Engine engine, int index)
Definition openswmm_engine_impl.cpp:239
SWMM_ENGINE_API const char * swmm_error_message(int code)
Definition openswmm_engine_impl.cpp:339
SWMM_ENGINE_API int swmm_events_remove(SWMM_Engine engine, int idx)
Remove the idx-th event. Trailing entries shift down by one.
Definition openswmm_engine_impl.cpp:493
SWMM_ENGINE_API int swmm_runoff_iface_open_write(SWMM_Engine engine, const char *path)
Open the runoff interface file for writing (SAVE mode).
Definition openswmm_engine_impl.cpp:528
SWMM_ENGINE_API int swmm_engine_run_with_callback(const char *inp, const char *rpt, const char *out, const char *input_plugin_lib, SWMM_ProgressCallback callback, void *user_data)
Run a complete simulation with a progress callback.
Definition openswmm_engine_impl.cpp:139
SWMM_ENGINE_API int swmm_get_warning_count(SWMM_Engine engine)
Definition openswmm_engine_impl.cpp:246
SWMM_ENGINE_API int swmm_engine_get_state(SWMM_Engine engine, int *state)
Query the current engine lifecycle state.
Definition openswmm_engine_impl.cpp:126
SWMM_ENGINE_API int swmm_get_event_count(SWMM_Engine engine, int *count)
Get number of routing events defined.
Definition openswmm_engine_impl.cpp:445
SWMM_WarnCode
Definition openswmm_engine.h:136
@ SWMM_WARN_NUMERICAL
Definition openswmm_engine.h:143
@ SWMM_WARN_DEPRECATED_KW
Definition openswmm_engine.h:141
@ SWMM_WARN_UNKNOWN_OPTION
Definition openswmm_engine.h:140
@ SWMM_WARN_NONE
Definition openswmm_engine.h:137
@ SWMM_WARN_UNKNOWN_SECTION
Definition openswmm_engine.h:139
@ SWMM_WARN_STABILITY_LIMIT
Definition openswmm_engine.h:144
@ SWMM_WARN_HOTSTART_MISSING
Definition openswmm_engine.h:138
@ SWMM_WARN_PLUGIN_INIT
Definition openswmm_engine.h:142
SWMM_ENGINE_API void swmm_engine_destroy(SWMM_Engine engine)
Destroy the engine handle (any state, NULL safe).
Definition openswmm_engine_impl.cpp:102
SWMM_ENGINE_API int swmm_events_set(SWMM_Engine engine, int idx, double start, double end)
Overwrite the idx-th event's window.
Definition openswmm_engine_impl.cpp:471
SWMM_ENGINE_API int swmm_get_effective_threads(SWMM_Engine engine, int threads_option, int *global_threads, int *dw_threads, int *twod_threads)
Definition openswmm_engine_impl.cpp:273
SWMM_ObjectType
Definition openswmm_engine.h:167
@ SWMM_OBJ_GAGE
Definition openswmm_engine.h:168
@ SWMM_OBJ_LINK
Definition openswmm_engine.h:171
@ SWMM_OBJ_SHAPE
Definition openswmm_engine.h:179
@ SWMM_OBJ_UNITHYD
Definition openswmm_engine.h:177
@ SWMM_OBJ_LANDUSE
Definition openswmm_engine.h:173
@ SWMM_OBJ_POLLUT
Definition openswmm_engine.h:172
@ SWMM_OBJ_RDII
Definition openswmm_engine.h:176
@ SWMM_OBJ_TIMESER
Definition openswmm_engine.h:174
@ SWMM_OBJ_LID
Definition openswmm_engine.h:180
@ SWMM_OBJ_SUBCATCH
Definition openswmm_engine.h:169
@ SWMM_OBJ_SNOWMELT
Definition openswmm_engine.h:178
@ SWMM_OBJ_NODE
Definition openswmm_engine.h:170
@ SWMM_OBJ_TABLE
Definition openswmm_engine.h:175
SWMM_EngineState
Definition openswmm_engine.h:151
@ SWMM_STATE_RUNNING
Definition openswmm_engine.h:157
@ SWMM_STATE_BUILDING
Definition openswmm_engine.h:160
@ SWMM_STATE_CREATED
Definition openswmm_engine.h:153
@ SWMM_STATE_NONE
Definition openswmm_engine.h:152
@ SWMM_STATE_INITIALIZED
Definition openswmm_engine.h:155
@ SWMM_STATE_ENDED
Definition openswmm_engine.h:158
@ SWMM_STATE_CLOSED
Definition openswmm_engine.h:159
@ SWMM_STATE_OPENED
Definition openswmm_engine.h:154
@ SWMM_STATE_STARTED
Definition openswmm_engine.h:156
SWMM_ENGINE_API int swmm_get_flow_units(SWMM_Engine engine, int *flow_units)
Get the active flow-units code (0=CFS,1=GPM,2=MGD,3=CMS,4=LPS,5=MLD).
Definition openswmm_engine_impl.cpp:414
SWMM_ENGINE_API SWMM_Engine swmm_engine_create(void)
Create a new engine instance (SWMM_STATE_CREATED).
Definition openswmm_engine_impl.cpp:41
SWMM_ENGINE_API int swmm_get_start_time(SWMM_Engine engine, double *start)
Definition openswmm_engine_impl.cpp:381
SWMM_ENGINE_API int swmm_engine_start(SWMM_Engine engine, int save_results)
Start the simulation → SWMM_STATE_STARTED.
Definition openswmm_engine_impl.cpp:61
SWMM_ErrorCode
Definition openswmm_engine.h:116
@ SWMM_ERR_DEPENDENCY
Definition openswmm_engine.h:132
@ SWMM_ERR_OUTFILE
Definition openswmm_engine.h:121
@ SWMM_ERR_INPFILE
Definition openswmm_engine.h:119
@ SWMM_ERR_RPTFILE
Definition openswmm_engine.h:120
@ SWMM_ERR_IO
Definition openswmm_engine.h:128
@ SWMM_ERR_CRS
Definition openswmm_engine.h:130
@ SWMM_ERR_BADINDEX
Definition openswmm_engine.h:125
@ SWMM_ERR_INTERNAL
Definition openswmm_engine.h:133
@ SWMM_ERR_LIFECYCLE
Definition openswmm_engine.h:123
@ SWMM_ERR_HOTSTART
Definition openswmm_engine.h:129
@ SWMM_OK
Definition openswmm_engine.h:117
@ SWMM_ERR_BADPARAM
Definition openswmm_engine.h:126
@ SWMM_ERR_NUMERICAL
Definition openswmm_engine.h:131
@ SWMM_ERR_PLUGIN
Definition openswmm_engine.h:127
@ SWMM_ERR_BADHANDLE
Definition openswmm_engine.h:124
@ SWMM_ERR_NOMEM
Definition openswmm_engine.h:118
@ SWMM_ERR_PARSE
Definition openswmm_engine.h:122
SWMM_ENGINE_API int swmm_get_last_error(SWMM_Engine engine)
Definition openswmm_engine_impl.cpp:219
SWMM_ENGINE_API int swmm_engine_report(SWMM_Engine engine)
Write summary report (SWMM_STATE_ENDED).
Definition openswmm_engine_impl.cpp:92
SWMM_ENGINE_API int swmm_get_end_time(SWMM_Engine engine, double *end)
Definition openswmm_engine_impl.cpp:387
SWMM_ENGINE_API int swmm_engine_stride(SWMM_Engine engine, int n_steps, double *elapsed_time)
Advance up to n_steps routing steps in one call (Gap #50 — swmm_stride equivalent).
Definition openswmm_engine_impl.cpp:72
SWMM_ENGINE_API const char * swmm_transport_domain_name(int domain)
Definition openswmm_engine_impl.cpp:327
SWMM_ENGINE_API int swmm_runoff_iface_save_step(SWMM_Engine engine, double dt)
Manually emit one runoff substep record to the open SAVE file.
Definition openswmm_engine_impl.cpp:540
SWMM_ENGINE_API const char * swmm_get_warning_at(SWMM_Engine engine, int index)
Definition openswmm_engine_impl.cpp:251
SWMM_ENGINE_API int swmm_get_thread_info(SWMM_ThreadInfo *out)
Definition openswmm_engine_impl.cpp:262
SWMM_ENGINE_API const char * swmm_transport_class_name(int species_class)
Definition openswmm_engine_impl.cpp:333
SWMM_ENGINE_API int swmm_set_step_end_callback(SWMM_Engine engine, SWMM_StepEndCallback callback, void *user_data)
Definition openswmm_engine_impl.cpp:208
SWMM_ENGINE_API int swmm_runoff_iface_close(SWMM_Engine engine)
Close the runoff interface file.
Definition openswmm_engine_impl.cpp:553
SWMM_ENGINE_API int swmm_engine_initialize(SWMM_Engine engine)
Initialize the simulation → SWMM_STATE_INITIALIZED.
Definition openswmm_engine_impl.cpp:56
SWMM_ENGINE_API int swmm_get_unit_system(SWMM_Engine engine, int *unit_system)
Get the active unit system (0 = US/imperial, 1 = SI/metric).
Definition openswmm_engine_impl.cpp:421
SWMM_ENGINE_API int swmm_engine_step(SWMM_Engine engine, double *elapsed_time)
Advance one explicit timestep. elapsed_time==0 when done.
Definition openswmm_engine_impl.cpp:66
SWMM_ENGINE_API int swmm_events_add(SWMM_Engine engine, double start, double end, int *out_idx)
Append a new event window.
Definition openswmm_engine_impl.cpp:483
SWMM_ENGINE_API int swmm_set_step_begin_callback(SWMM_Engine engine, SWMM_StepBeginCallback callback, void *user_data)
Definition openswmm_engine_impl.cpp:201
Runtime forcing API — inject fluxes with mass-balance tracking.
OpenSWMM Engine — Rain Gage C API.
U4 (2026-09-07) — C API for the [GW_*] subsurface-transport authoring sections.
Hot start file management — transparent C API.
OpenSWMM Engine — Inflows (External, DWF, RDII) C API.
OpenSWMM Engine — Infrastructure (Transects, Streets, Inlets, LIDs) C API.
C API — [INITIAL_QUALITY] per-element initial concentrations (E-A4).
OpenSWMM Engine — Mass Balance / Continuity C API.
OpenSWMM Engine — Model building and options C API.
OpenSWMM Engine — Node C API.
OpenSWMM Engine — Pollutant / Water Quality C API.
C API — [PROCESS_COMPONENTS] registrations (E-C3 subset of the transport IO plan §5): enumerate,...
OpenSWMM Engine — Water Quality (Landuse / Buildup / Washoff / Treatment) C API.
C API — the reaction system ([REACTION_*] / .rxn) surface for GUI editors (E-C1: validation + discove...
OpenSWMM Engine — Spatial Frame C API.
OpenSWMM Engine — Statistics Query C API.
OpenSWMM Engine — Subcatchment C API.
OpenSWMM Engine — Tables (Time Series & Curves) and Patterns C API.
Definition openswmm_engine.h:332
int perf_cores
Definition openswmm_engine.h:338
int kokkos_omp_threads
Definition openswmm_engine.h:340
int logical_cpus
Definition openswmm_engine.h:333
int omp_available
Definition openswmm_engine.h:337
int omp_max_threads
Definition openswmm_engine.h:334
Definition openswmm_engine.h:388
int state
Definition openswmm_engine.h:389
int count
Definition openswmm_engine.h:390
char reason[96]
Definition openswmm_engine.h:391
Definition openswmm_engine.h:394
SWMM_TransportCell cell[SWMM_TRANSPORT_DOMAIN_COUNT][SWMM_TRANSPORT_CLASS_COUNT]
Definition openswmm_engine.h:395