OpenSWMM Engine  6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
Loading...
Searching...
No Matches
openswmm_engine.h
Go to the documentation of this file.
1
68#ifndef OPENSWMM_ENGINE_H
69#define OPENSWMM_ENGINE_H
70
71#include "openswmm_callbacks.h"
72
73/* =========================================================================
74 * Export macro
75 * ========================================================================= */
76
77#ifdef OPENSWMM_ENGINE_STATIC
78# define SWMM_ENGINE_API
79#else
80# ifdef _WIN32
81# ifdef openswmm_engine_EXPORTS
82# define SWMM_ENGINE_API __declspec(dllexport)
83# else
84# define SWMM_ENGINE_API __declspec(dllimport)
85# endif
86# else
87# define SWMM_ENGINE_API __attribute__((visibility("default")))
88# endif
89#endif
90
91#ifdef __cplusplus
92extern "C" {
93#endif
94
95/* =========================================================================
96 * Error codes
97 * ========================================================================= */
98
117
128
129/* =========================================================================
130 * Engine lifecycle state
131 * ========================================================================= */
132
144
145/* =========================================================================
146 * Object type identifiers
147 * ========================================================================= */
148
164
165/* =========================================================================
166 * Engine lifecycle functions
167 * ========================================================================= */
168
171
174 const char* inp, const char* rpt, const char* out);
175
178
180SWMM_ENGINE_API int swmm_engine_start(SWMM_Engine engine, int save_results);
181
183SWMM_ENGINE_API int swmm_engine_step(SWMM_Engine engine, double* elapsed_time);
184
187
190
193
196
199
200/* =========================================================================
201 * Callback registration
202 * ========================================================================= */
203
205 SWMM_ProgressCallback callback, void* user_data);
207 SWMM_WarningCallback callback, void* user_data);
209 SWMM_StepBeginCallback callback, void* user_data);
211 SWMM_StepEndCallback callback, void* user_data);
212
213/* =========================================================================
214 * Error reporting
215 * ========================================================================= */
216
219SWMM_ENGINE_API const char* swmm_error_message (int code);
220
221/* =========================================================================
222 * Simulation timing
223 * ========================================================================= */
224
225SWMM_ENGINE_API int swmm_get_start_time (SWMM_Engine engine, double* start);
226SWMM_ENGINE_API int swmm_get_end_time (SWMM_Engine engine, double* end);
227SWMM_ENGINE_API int swmm_get_current_time(SWMM_Engine engine, double* current);
229
230#ifdef __cplusplus
231} /* extern "C" */
232#endif
233
234/* =========================================================================
235 * Master include — pull in all domain headers
236 *
237 * Each domain header includes openswmm_engine.h itself (for SWMM_ENGINE_API
238 * and the handle typedef), so include guards prevent recursion.
239 * ========================================================================= */
240
241#include "openswmm_model.h"
242#include "openswmm_nodes.h"
243#include "openswmm_links.h"
245#include "openswmm_gages.h"
246#include "openswmm_massbalance.h"
247#include "openswmm_hotstart.h"
248#include "openswmm_spatial.h"
249#include "openswmm_pollutants.h"
250#include "openswmm_tables.h"
251#include "openswmm_inflows.h"
252#include "openswmm_controls.h"
254#include "openswmm_quality.h"
255#include "openswmm_statistics.h"
256#include "openswmm_output.h"
257#include "openswmm_forcing.h"
258
259#endif /* OPENSWMM_ENGINE_H */
Header file for SWMM output API.
Callback function typedefs for the OpenSWMM Engine C API.
void * SWMM_Engine
Opaque handle to an OpenSWMM Engine instance.
Definition openswmm_callbacks.h:35
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:111
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:89
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:129
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:64
OpenSWMM Engine — Control Rules C API.
SWMM_ENGINE_API const char * swmm_get_last_error_msg(SWMM_Engine engine)
Definition openswmm_engine_impl.cpp:116
SWMM_ENGINE_API int swmm_set_progress_callback(SWMM_Engine engine, SWMM_ProgressCallback callback, void *user_data)
Definition openswmm_engine_impl.cpp:79
#define SWMM_ENGINE_API
Definition openswmm_engine.h:87
SWMM_ENGINE_API int swmm_get_routing_step(SWMM_Engine engine, double *dt)
Definition openswmm_engine_impl.cpp:165
SWMM_ENGINE_API int swmm_engine_end(SWMM_Engine engine)
End the simulation → SWMM_STATE_ENDED.
Definition openswmm_engine_impl.cpp:50
SWMM_ENGINE_API int swmm_get_current_time(SWMM_Engine engine, double *current)
Definition openswmm_engine_impl.cpp:159
SWMM_ENGINE_API int swmm_engine_close(SWMM_Engine engine)
Close all files → SWMM_STATE_CLOSED.
Definition openswmm_engine_impl.cpp:60
SWMM_ENGINE_API int swmm_set_warning_callback(SWMM_Engine engine, SWMM_WarningCallback callback, void *user_data)
Definition openswmm_engine_impl.cpp:86
SWMM_ENGINE_API const char * swmm_error_message(int code)
Definition openswmm_engine_impl.cpp:121
SWMM_ENGINE_API int swmm_engine_get_state(SWMM_Engine engine, int *state)
Query the current engine lifecycle state.
Definition openswmm_engine_impl.cpp:69
SWMM_WarnCode
Definition openswmm_engine.h:118
@ SWMM_WARN_NUMERICAL
Definition openswmm_engine.h:125
@ SWMM_WARN_DEPRECATED_KW
Definition openswmm_engine.h:123
@ SWMM_WARN_UNKNOWN_OPTION
Definition openswmm_engine.h:122
@ SWMM_WARN_NONE
Definition openswmm_engine.h:119
@ SWMM_WARN_UNKNOWN_SECTION
Definition openswmm_engine.h:121
@ SWMM_WARN_STABILITY_LIMIT
Definition openswmm_engine.h:126
@ SWMM_WARN_HOTSTART_MISSING
Definition openswmm_engine.h:120
@ SWMM_WARN_PLUGIN_INIT
Definition openswmm_engine.h:124
SWMM_ENGINE_API void swmm_engine_destroy(SWMM_Engine engine)
Destroy the engine handle (any state, NULL safe).
Definition openswmm_engine_impl.cpp:65
SWMM_ENGINE_API int swmm_engine_open(SWMM_Engine engine, const char *inp, const char *rpt, const char *out)
Open and parse a SWMM input file; load plugins → SWMM_STATE_OPENED.
Definition openswmm_engine_impl.cpp:29
SWMM_ObjectType
Definition openswmm_engine.h:149
@ SWMM_OBJ_GAGE
Definition openswmm_engine.h:150
@ SWMM_OBJ_LINK
Definition openswmm_engine.h:153
@ SWMM_OBJ_SHAPE
Definition openswmm_engine.h:161
@ SWMM_OBJ_UNITHYD
Definition openswmm_engine.h:159
@ SWMM_OBJ_LANDUSE
Definition openswmm_engine.h:155
@ SWMM_OBJ_POLLUT
Definition openswmm_engine.h:154
@ SWMM_OBJ_RDII
Definition openswmm_engine.h:158
@ SWMM_OBJ_TIMESER
Definition openswmm_engine.h:156
@ SWMM_OBJ_LID
Definition openswmm_engine.h:162
@ SWMM_OBJ_SUBCATCH
Definition openswmm_engine.h:151
@ SWMM_OBJ_SNOWMELT
Definition openswmm_engine.h:160
@ SWMM_OBJ_NODE
Definition openswmm_engine.h:152
@ SWMM_OBJ_TABLE
Definition openswmm_engine.h:157
SWMM_EngineState
Definition openswmm_engine.h:133
@ SWMM_STATE_RUNNING
Definition openswmm_engine.h:139
@ SWMM_STATE_BUILDING
Definition openswmm_engine.h:142
@ SWMM_STATE_CREATED
Definition openswmm_engine.h:135
@ SWMM_STATE_NONE
Definition openswmm_engine.h:134
@ SWMM_STATE_INITIALIZED
Definition openswmm_engine.h:137
@ SWMM_STATE_ENDED
Definition openswmm_engine.h:140
@ SWMM_STATE_CLOSED
Definition openswmm_engine.h:141
@ SWMM_STATE_OPENED
Definition openswmm_engine.h:136
@ SWMM_STATE_STARTED
Definition openswmm_engine.h:138
SWMM_ENGINE_API SWMM_Engine swmm_engine_create(void)
Create a new engine instance (SWMM_STATE_CREATED).
Definition openswmm_engine_impl.cpp:21
SWMM_ENGINE_API int swmm_get_start_time(SWMM_Engine engine, double *start)
Definition openswmm_engine_impl.cpp:147
SWMM_ENGINE_API int swmm_engine_start(SWMM_Engine engine, int save_results)
Start the simulation → SWMM_STATE_STARTED.
Definition openswmm_engine_impl.cpp:40
SWMM_ErrorCode
Definition openswmm_engine.h:99
@ SWMM_ERR_OUTFILE
Definition openswmm_engine.h:104
@ SWMM_ERR_INPFILE
Definition openswmm_engine.h:102
@ SWMM_ERR_RPTFILE
Definition openswmm_engine.h:103
@ SWMM_ERR_IO
Definition openswmm_engine.h:111
@ SWMM_ERR_CRS
Definition openswmm_engine.h:113
@ SWMM_ERR_BADINDEX
Definition openswmm_engine.h:108
@ SWMM_ERR_INTERNAL
Definition openswmm_engine.h:115
@ SWMM_ERR_LIFECYCLE
Definition openswmm_engine.h:106
@ SWMM_ERR_HOTSTART
Definition openswmm_engine.h:112
@ SWMM_OK
Definition openswmm_engine.h:100
@ SWMM_ERR_BADPARAM
Definition openswmm_engine.h:109
@ SWMM_ERR_NUMERICAL
Definition openswmm_engine.h:114
@ SWMM_ERR_PLUGIN
Definition openswmm_engine.h:110
@ SWMM_ERR_BADHANDLE
Definition openswmm_engine.h:107
@ SWMM_ERR_NOMEM
Definition openswmm_engine.h:101
@ SWMM_ERR_PARSE
Definition openswmm_engine.h:105
SWMM_ENGINE_API int swmm_get_last_error(SWMM_Engine engine)
Definition openswmm_engine_impl.cpp:111
SWMM_ENGINE_API int swmm_engine_report(SWMM_Engine engine)
Write summary report (SWMM_STATE_ENDED).
Definition openswmm_engine_impl.cpp:55
SWMM_ENGINE_API int swmm_get_end_time(SWMM_Engine engine, double *end)
Definition openswmm_engine_impl.cpp:153
SWMM_ENGINE_API int swmm_set_step_end_callback(SWMM_Engine engine, SWMM_StepEndCallback callback, void *user_data)
Definition openswmm_engine_impl.cpp:100
SWMM_ENGINE_API int swmm_engine_initialize(SWMM_Engine engine)
Initialize the simulation → SWMM_STATE_INITIALIZED.
Definition openswmm_engine_impl.cpp:35
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:45
SWMM_ENGINE_API int swmm_set_step_begin_callback(SWMM_Engine engine, SWMM_StepBeginCallback callback, void *user_data)
Definition openswmm_engine_impl.cpp:93
Runtime forcing API — inject fluxes with mass-balance tracking.
OpenSWMM Engine — Rain Gage C API.
Hot start file management — transparent C API.
OpenSWMM Engine — Inflows (External, DWF, RDII) C API.
OpenSWMM Engine — Infrastructure (Transects, Streets, Inlets, LIDs) C API.
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.
OpenSWMM Engine — Water Quality (Landuse / Buildup / Washoff / Treatment) C API.
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.