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
82
87
92
93#ifndef OPENSWMM_ENGINE_H
94#define OPENSWMM_ENGINE_H
95
96#include "openswmm_callbacks.h"
97
98/* =========================================================================
99 * Export macro
100 * ========================================================================= */
101
102#ifdef OPENSWMM_ENGINE_STATIC
103#define SWMM_ENGINE_API
104#else
105#ifdef _WIN32
106#ifdef openswmm_engine_EXPORTS
107#define SWMM_ENGINE_API __declspec(dllexport)
108#else
109#define SWMM_ENGINE_API __declspec(dllimport)
110#endif
111#else
112#define SWMM_ENGINE_API __attribute__((visibility("default")))
113#endif
114#endif
115
116#ifdef __cplusplus
117extern "C" {
118#endif
119
120/* =========================================================================
121 * Error codes
122 * ========================================================================= */
123
146
157
158/* =========================================================================
159 * Engine lifecycle state
160 * ========================================================================= */
161
173
174/* =========================================================================
175 * Object type identifiers
176 * ========================================================================= */
177
193
194/* =========================================================================
195 * Engine lifecycle functions
196 * ========================================================================= */
197
204
211SWMM_ENGINE_API const char *swmm_engine_abi_tag(void);
212
232SWMM_ENGINE_API int swmm_engine_open(SWMM_Engine engine, const char* inp, const char* rpt,
233 const char* out, const char* input_plugin_lib);
234
248SWMM_ENGINE_API int swmm_engine_open_metadata(SWMM_Engine engine, const char* inp);
249
264
279SWMM_ENGINE_API int swmm_engine_start(SWMM_Engine engine, int save_results);
280
298SWMM_ENGINE_API int swmm_engine_advance_to(SWMM_Engine engine, double target_seconds,
299 double* actual_seconds);
329SWMM_ENGINE_API int swmm_engine_step(SWMM_Engine engine, double* elapsed_time);
330
347SWMM_ENGINE_API int swmm_engine_stride(SWMM_Engine engine, int n_steps, double* elapsed_time);
348
362
376
389
400
414
415/* =========================================================================
416 * Convenience run functions
417 * ========================================================================= */
418
434SWMM_ENGINE_API int swmm_engine_run(const char* inp, const char* rpt, const char* out,
435 const char* input_plugin_lib);
436
456SWMM_ENGINE_API int swmm_engine_run_with_callback(const char* inp, const char* rpt, const char* out,
457 const char* input_plugin_lib,
458 SWMM_ProgressCallback callback, void* user_data);
459
460/* =========================================================================
461 * Callback registration
462 * ========================================================================= */
463
480 void* user_data);
497 void* user_data);
514 SWMM_StepBeginCallback callback, void* user_data);
531 void* user_data);
532
533/* =========================================================================
534 * Error reporting
535 * ========================================================================= */
536
567SWMM_ENGINE_API const char* swmm_error_message(int code);
568
580
581/* Enumerate the errors/warnings accumulated on the engine during open (e.g.
582 * after a lenient open). Index is 0-based; out-of-range returns "". */
602SWMM_ENGINE_API const char* swmm_get_error_at(SWMM_Engine engine, int index);
622SWMM_ENGINE_API const char* swmm_get_warning_at(SWMM_Engine engine, int index);
623
624/* =========================================================================
625 * Thread capability query (engine-independent)
626 * ========================================================================= */
627
644
657
677SWMM_ENGINE_API int swmm_get_effective_threads(SWMM_Engine engine, int threads_option,
678 int* global_threads, int* dw_threads,
679 int* twod_threads);
680
681/* =========================================================================
682 * Transport matrix (E2, 2026-09-07) — which species classes run in which
683 * domain, and why not. Engine-computed from the open model's options
684 * (IGNORE_QUALITY, WATER_AGE, HEAT_TRANSPORT, the reactions component,
685 * IGNORE_2D and the [2D_OPTIONS] TRANSPORT_* keys); the .rpt prints the
686 * same table. Valid after swmm_engine_open; re-read after option edits.
687 * ========================================================================= */
688
689#define SWMM_TRANSPORT_DOMAIN_RUNOFF 0
690#define SWMM_TRANSPORT_DOMAIN_GROUNDWATER 1
691#define SWMM_TRANSPORT_DOMAIN_NETWORK_1D 2
692#define SWMM_TRANSPORT_DOMAIN_SURFACE_2D 3
693#define SWMM_TRANSPORT_DOMAIN_COUNT 4
694
695#define SWMM_TRANSPORT_CLASS_POLLUTANTS 0
696#define SWMM_TRANSPORT_CLASS_MSX 1
697#define SWMM_TRANSPORT_CLASS_AGE 2
698#define SWMM_TRANSPORT_CLASS_TEMPERATURE 3
699#define SWMM_TRANSPORT_CLASS_COUNT 4
700
701#define SWMM_TRANSPORT_ENABLED 0
702#define SWMM_TRANSPORT_DISABLED_BY_USER 1
703#define SWMM_TRANSPORT_UNAVAILABLE 2
704
710
714
730
754 const SWMM_TransportDraft* draft,
756
764SWMM_ENGINE_API const char* swmm_transport_domain_name(int domain);
772SWMM_ENGINE_API const char* swmm_transport_class_name(int species_class);
773
774/* =========================================================================
775 * Simulation timing
776 * ========================================================================= */
777
786SWMM_ENGINE_API int swmm_get_start_time(SWMM_Engine engine, double* start);
795SWMM_ENGINE_API int swmm_get_end_time(SWMM_Engine engine, double* end);
805SWMM_ENGINE_API int swmm_get_current_time(SWMM_Engine engine, double* current);
816
817/* =========================================================================
818 * Unit system query
819 * =========================================================================
820 * Most legacy model-object getters/setters use project DISPLAY units selected
821 * by [OPTIONS] FLOW_UNITS. Individual APIs explicitly document exceptions,
822 * including SI mesh/coupling quantities and elapsed/calendar time units. These
823 * accessors report the project display-unit selection.
824 */
825
834SWMM_ENGINE_API int swmm_get_flow_units(SWMM_Engine engine, int* flow_units);
835
845SWMM_ENGINE_API int swmm_get_unit_system(SWMM_Engine engine, int* unit_system);
846
847/* =========================================================================
848 * Routing event and steady-state status
849 * ========================================================================= */
850
863SWMM_ENGINE_API int swmm_is_between_events(SWMM_Engine engine, int* is_between);
864
874SWMM_ENGINE_API int swmm_get_event_count(SWMM_Engine engine, int* count);
875
876/* -------------------------------------------------------------------------
877 * [EVENTS] section accessors (Slice CW — added 2026-05-21).
878 *
879 * Mirrors the per-row reader in `handle_events` (InfraHandler.cpp). All times
880 * are DateTime decimal days (consistent with `swmm_get_start_time` etc.).
881 * `swmm_events_count` is a synonym of the legacy `swmm_get_event_count` and
882 * is provided so the [EVENTS] surface is self-consistent.
883 * ------------------------------------------------------------------------- */
884
894SWMM_ENGINE_API int swmm_events_count(SWMM_Engine engine, int* count);
895
907SWMM_ENGINE_API int swmm_events_get(SWMM_Engine engine, int idx, double* start, double* end);
908
924SWMM_ENGINE_API int swmm_events_set(SWMM_Engine engine, int idx, double start, double end);
925
940SWMM_ENGINE_API int swmm_events_add(SWMM_Engine engine, double start, double end, int* out_idx);
941
951
962
984
985/* =========================================================================
986 * Phase 1b: Runoff interface file (legacy "Frunoff").
987 *
988 * Persists per-subcatchment runoff snapshots to a binary file so the
989 * runoff phase of a long simulation can be cached and replayed in a
990 * downstream routing-only run. Mirrors the legacy SWMM-5 file format
991 * (see src/engine/hydrology/RunoffInterface.hpp).
992 *
993 * SAVE mode is fully integrated: open the file in SAVE before
994 * @c swmm_engine_start, run the simulation as normal, then close. The
995 * engine emits one record per runoff substep automatically.
996 *
997 * USE mode currently exposes the file but does NOT yet auto-skip the
998 * engine's runoff computation — callers must invoke
999 * @ref swmm_runoff_iface_read_step between simulation steps and
1000 * understand that the engine will overwrite the loaded state if runoff
1001 * still runs. Full USE-mode auto-skip is tracked as a follow-up.
1002 *
1003 * @since 6.0.0
1004 * ========================================================================= */
1005
1019SWMM_ENGINE_API int swmm_runoff_iface_open_write(SWMM_Engine engine, const char* path);
1020
1035SWMM_ENGINE_API int swmm_runoff_iface_open_read(SWMM_Engine engine, const char* path);
1036
1049
1063
1075
1076#ifdef __cplusplus
1077} /* extern "C" */
1078#endif
1079
1080/* =========================================================================
1081 * Master include — pull in all domain headers
1082 *
1083 * Each domain header includes openswmm_engine.h itself (for SWMM_ENGINE_API
1084 * and the handle typedef), so include guards prevent recursion.
1085 * ========================================================================= */
1086
1087#include "openswmm_datetime.h"
1088#include "openswmm_model.h"
1089#include "openswmm_nodes.h"
1090#include "openswmm_links.h"
1091#include "openswmm_subcatchments.h"
1092#include "openswmm_gages.h"
1093#include "openswmm_massbalance.h"
1094#include "openswmm_hotstart.h"
1095#include "openswmm_spatial.h"
1096#include "openswmm_pollutants.h"
1098#include "openswmm_reactions.h"
1100#include "openswmm_tables.h"
1101#include "openswmm_inflows.h"
1102#include "openswmm_controls.h"
1104#include "openswmm_quality.h"
1105#include "openswmm_statistics.h"
1106#include "openswmm_forcing.h"
1107#include "openswmm_climate.h"
1108#include "openswmm_edit.h"
1109#include "openswmm_checkpoint.h"
1110
1111#ifdef OPENSWMM_HAS_2D
1112#include "openswmm_2d.h"
1113#include "openswmm_gw_transport.h" /* U4 (2026-09-07) */
1114#endif
1115
1116#endif /* OPENSWMM_ENGINE_H */
Optional 2D surface routing module — C API.
#define SWMM_ENGINE_API
Definition openswmm_2d.h:62
Callback function typedefs for the OpenSWMM Engine C API.
void * SWMM_Engine
Opaque handle to an OpenSWMM Engine instance.
Definition openswmm_callbacks.h:55
void(* SWMM_StepBeginCallback)(SWMM_Engine engine, double sim_time, double dt, void *user_data)
Run before physics at the start of a physical simulation step.
Definition openswmm_callbacks.h:142
void(* SWMM_WarningCallback)(SWMM_Engine engine, int code, const char *message, void *user_data)
Receive a diagnostic synchronously when the engine emits it.
Definition openswmm_callbacks.h:120
void(* SWMM_StepEndCallback)(SWMM_Engine engine, double sim_time, double dt, void *user_data)
Run after physics and output snapshots for one physical simulation step.
Definition openswmm_callbacks.h:161
void(* SWMM_ProgressCallback)(SWMM_Engine engine, double elapsed_frac, double sim_time, void *user_data)
Report the simulation fraction immediately before a physical step.
Definition openswmm_callbacks.h:78
Public C API for creating, inspecting, and restoring simulation checkpoints.
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)
Set the stored steady-state routing-skip option.
Definition openswmm_engine_impl.cpp:666
SWMM_ENGINE_API int swmm_get_error_count(SWMM_Engine engine)
Count accumulated error messages.
Definition openswmm_engine_impl.cpp:294
SWMM_ENGINE_API int swmm_engine_run(const char *inp, const char *rpt, const char *out, const char *input_plugin_lib)
Create an engine, run the full lifecycle synchronously, and destroy it.
Definition openswmm_engine_impl.cpp:235
SWMM_ENGINE_API const char * swmm_get_last_error_msg(SWMM_Engine engine)
Borrow the stored simulation error text.
Definition openswmm_engine_impl.cpp:282
SWMM_ENGINE_API int swmm_set_progress_callback(SWMM_Engine engine, SWMM_ProgressCallback callback, void *user_data)
Register, replace or disable pre-step progress.
Definition openswmm_engine_impl.cpp:244
SWMM_ENGINE_API int swmm_runoff_iface_read_step(SWMM_Engine engine, int *has_data)
Read one available runoff record into the current subcatchment state.
Definition openswmm_engine_impl.cpp:700
SWMM_ENGINE_API void swmm_engine_set_lenient_open(SWMM_Engine engine, int on)
Select permissive model validation for subsequent editor loads.
Definition openswmm_engine_impl.cpp:288
SWMM_ENGINE_API int swmm_events_get(SWMM_Engine engine, int idx, double *start, double *end)
Read the calendar window of a configured routing event.
Definition openswmm_engine_impl.cpp:609
SWMM_ENGINE_API int swmm_events_clear(SWMM_Engine engine)
Remove all configured routing events.
Definition openswmm_engine_impl.cpp:653
SWMM_ENGINE_API int swmm_engine_open_metadata(SWMM_Engine engine, const char *inp)
Open a model for configured metadata without preparing simulation plugins.
Definition openswmm_engine_impl.cpp:60
SWMM_ENGINE_API int swmm_get_routing_step(SWMM_Engine engine, double *dt)
Read the configured routing timestep limit.
Definition openswmm_engine_impl.cpp:546
SWMM_ENGINE_API int swmm_runoff_iface_open_read(SWMM_Engine engine, const char *path)
Open a compatible runoff cache for USE-mode record reads.
Definition openswmm_engine_impl.cpp:687
SWMM_ENGINE_API int swmm_engine_open(SWMM_Engine engine, const char *inp, const char *rpt, const char *out, const char *input_plugin_lib)
Load a model and prepare its plugin configuration in SWMM_STATE_OPENED.
Definition openswmm_engine_impl.cpp:49
SWMM_ENGINE_API int swmm_events_count(SWMM_Engine engine, int *count)
Count configured routing-event entries.
Definition openswmm_engine_impl.cpp:605
SWMM_ENGINE_API int swmm_engine_end(SWMM_Engine engine)
Finalize a running or completed simulation and enter SWMM_STATE_ENDED.
Definition openswmm_engine_impl.cpp:114
SWMM_ENGINE_API int swmm_get_transport_matrix(SWMM_Engine engine, SWMM_TransportMatrix *out)
Resolve planned transport classes for each configured model domain.
Definition openswmm_engine_impl.cpp:377
SWMM_ENGINE_API int swmm_get_steady_state_skip(SWMM_Engine engine, int *enabled)
Read the stored steady-state routing-skip option.
Definition openswmm_engine_impl.cpp:659
SWMM_ENGINE_API int swmm_get_current_time(SWMM_Engine engine, double *current)
Read the current elapsed physics time.
Definition openswmm_engine_impl.cpp:539
#define SWMM_TRANSPORT_CLASS_COUNT
Definition openswmm_engine.h:699
SWMM_ENGINE_API int swmm_preview_transport_matrix(SWMM_Engine engine, const SWMM_TransportDraft *draft, SWMM_TransportMatrix *out)
Resolve transport for a temporary draft without mutating the model.
Definition openswmm_engine_impl.cpp:396
SWMM_ENGINE_API int swmm_engine_close(SWMM_Engine engine)
Stop IO and release active model files, plugins and checkpoint attachments.
Definition openswmm_engine_impl.cpp:124
SWMM_ENGINE_API int swmm_set_warning_callback(SWMM_Engine engine, SWMM_WarningCallback callback, void *user_data)
Register, replace or disable diagnostics.
Definition openswmm_engine_impl.cpp:251
SWMM_ENGINE_API int swmm_is_between_events(SWMM_Engine engine, int *is_between)
Read the current implementation event-list presence flag.
Definition openswmm_engine_impl.cpp:582
#define SWMM_TRANSPORT_DOMAIN_COUNT
Definition openswmm_engine.h:693
SWMM_ENGINE_API const char * swmm_get_error_at(SWMM_Engine engine, int index)
Borrow one accumulated error message.
Definition openswmm_engine_impl.cpp:300
SWMM_ENGINE_API const char * swmm_error_message(int code)
Translate a known public error code to a static English description.
Definition openswmm_engine_impl.cpp:448
SWMM_ENGINE_API int swmm_events_remove(SWMM_Engine engine, int idx)
Remove one configured event and shift later indices down.
Definition openswmm_engine_impl.cpp:644
SWMM_ENGINE_API int swmm_runoff_iface_open_write(SWMM_Engine engine, const char *path)
Open a runoff cache for SAVE records using the current model schema.
Definition openswmm_engine_impl.cpp:680
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 the full synchronous lifecycle with a borrowed progress callback.
Definition openswmm_engine_impl.cpp:185
SWMM_ENGINE_API int swmm_get_warning_count(SWMM_Engine engine)
Count accumulated warning messages.
Definition openswmm_engine_impl.cpp:309
SWMM_ENGINE_API int swmm_engine_get_state(SWMM_Engine engine, int *state)
Read the public lifecycle state of a live engine.
Definition openswmm_engine_impl.cpp:173
SWMM_ENGINE_API int swmm_get_event_count(SWMM_Engine engine, int *count)
Count configured routing-event entries.
Definition openswmm_engine_impl.cpp:593
SWMM_WarnCode
Definition openswmm_engine.h:147
@ SWMM_WARN_NUMERICAL
Definition openswmm_engine.h:154
@ SWMM_WARN_DEPRECATED_KW
Definition openswmm_engine.h:152
@ SWMM_WARN_UNKNOWN_OPTION
Definition openswmm_engine.h:151
@ SWMM_WARN_NONE
Definition openswmm_engine.h:148
@ SWMM_WARN_UNKNOWN_SECTION
Definition openswmm_engine.h:150
@ SWMM_WARN_STABILITY_LIMIT
Definition openswmm_engine.h:155
@ SWMM_WARN_HOTSTART_MISSING
Definition openswmm_engine.h:149
@ SWMM_WARN_PLUGIN_INIT
Definition openswmm_engine.h:153
SWMM_ENGINE_API void swmm_engine_destroy(SWMM_Engine engine)
Delete an engine and all resources it owns.
Definition openswmm_engine_impl.cpp:129
SWMM_ENGINE_API int swmm_events_set(SWMM_Engine engine, int idx, double start, double end)
Replace one event calendar window in place.
Definition openswmm_engine_impl.cpp:621
SWMM_ENGINE_API int swmm_get_effective_threads(SWMM_Engine engine, int threads_option, int *global_threads, int *dw_threads, int *twod_threads)
Preview thread-team sizes for a request and the current model.
Definition openswmm_engine_impl.cpp:340
SWMM_ObjectType
Definition openswmm_engine.h:178
@ SWMM_OBJ_GAGE
Definition openswmm_engine.h:179
@ SWMM_OBJ_LINK
Definition openswmm_engine.h:182
@ SWMM_OBJ_SHAPE
Definition openswmm_engine.h:190
@ SWMM_OBJ_UNITHYD
Definition openswmm_engine.h:188
@ SWMM_OBJ_LANDUSE
Definition openswmm_engine.h:184
@ SWMM_OBJ_POLLUT
Definition openswmm_engine.h:183
@ SWMM_OBJ_RDII
Definition openswmm_engine.h:187
@ SWMM_OBJ_TIMESER
Definition openswmm_engine.h:185
@ SWMM_OBJ_LID
Definition openswmm_engine.h:191
@ SWMM_OBJ_SUBCATCH
Definition openswmm_engine.h:180
@ SWMM_OBJ_SNOWMELT
Definition openswmm_engine.h:189
@ SWMM_OBJ_NODE
Definition openswmm_engine.h:181
@ SWMM_OBJ_TABLE
Definition openswmm_engine.h:186
SWMM_EngineState
Definition openswmm_engine.h:162
@ SWMM_STATE_RUNNING
Definition openswmm_engine.h:168
@ SWMM_STATE_BUILDING
Definition openswmm_engine.h:171
@ SWMM_STATE_CREATED
Definition openswmm_engine.h:164
@ SWMM_STATE_NONE
Definition openswmm_engine.h:163
@ SWMM_STATE_INITIALIZED
Definition openswmm_engine.h:166
@ SWMM_STATE_ENDED
Definition openswmm_engine.h:169
@ SWMM_STATE_CLOSED
Definition openswmm_engine.h:170
@ SWMM_STATE_OPENED
Definition openswmm_engine.h:165
@ SWMM_STATE_STARTED
Definition openswmm_engine.h:167
SWMM_ENGINE_API int swmm_get_flow_units(SWMM_Engine engine, int *flow_units)
Read the project display-flow unit code.
Definition openswmm_engine_impl.cpp:562
SWMM_ENGINE_API int swmm_engine_advance_to(SWMM_Engine engine, double target_seconds, double *actual_seconds)
Advance to a specified elapsed-second exchange boundary without overshooting.
Definition openswmm_engine_impl.cpp:82
SWMM_ENGINE_API int swmm_engine_get_elapsed_seconds(SWMM_Engine engine, double *seconds)
Read the routing elapsed clock, including during step callbacks.
Definition openswmm_engine_impl.cpp:72
SWMM_ENGINE_API SWMM_Engine swmm_engine_create(void)
Allocate an independent engine in SWMM_STATE_CREATED.
Definition openswmm_engine_impl.cpp:41
SWMM_ENGINE_API int swmm_get_start_time(SWMM_Engine engine, double *start)
Read the configured simulation start calendar date.
Definition openswmm_engine_impl.cpp:525
SWMM_ENGINE_API int swmm_engine_start(SWMM_Engine engine, int save_results)
Start an initialized simulation, entering SWMM_STATE_RUNNING.
Definition openswmm_engine_impl.cpp:67
SWMM_ENGINE_API const char * swmm_engine_abi_tag(void)
Identify the public C ABI compiled into the running engine image.
Definition EngineAbi.cpp:17
SWMM_ErrorCode
Definition openswmm_engine.h:124
@ SWMM_ERR_DEPENDENCY
Definition openswmm_engine.h:140
@ SWMM_ERR_OUTFILE
Definition openswmm_engine.h:129
@ SWMM_ERR_INPFILE
Definition openswmm_engine.h:127
@ SWMM_ERR_BUFSIZE
Definition openswmm_engine.h:142
@ SWMM_ERR_RPTFILE
Definition openswmm_engine.h:128
@ SWMM_ERR_IO
Definition openswmm_engine.h:136
@ SWMM_ERR_CRS
Definition openswmm_engine.h:138
@ SWMM_ERR_BADINDEX
Definition openswmm_engine.h:133
@ SWMM_ERR_INTERNAL
Definition openswmm_engine.h:144
@ SWMM_ERR_LIFECYCLE
Definition openswmm_engine.h:131
@ SWMM_ERR_HOTSTART
Definition openswmm_engine.h:137
@ SWMM_OK
Definition openswmm_engine.h:125
@ SWMM_ERR_BADPARAM
Definition openswmm_engine.h:134
@ SWMM_ERR_NUMERICAL
Definition openswmm_engine.h:139
@ SWMM_ERR_PLUGIN
Definition openswmm_engine.h:135
@ SWMM_ERR_BADHANDLE
Definition openswmm_engine.h:132
@ SWMM_ERR_NOMEM
Definition openswmm_engine.h:126
@ SWMM_ERR_PARSE
Definition openswmm_engine.h:130
@ SWMM_ERR_CANCELLED
Definition openswmm_engine.h:141
SWMM_ENGINE_API int swmm_get_last_error(SWMM_Engine engine)
Read the stored simulation error code without clearing it.
Definition openswmm_engine_impl.cpp:276
SWMM_ENGINE_API int swmm_engine_report(SWMM_Engine engine)
Write final model/simulation reports after ending the simulation.
Definition openswmm_engine_impl.cpp:119
SWMM_ENGINE_API int swmm_get_end_time(SWMM_Engine engine, double *end)
Read the configured simulation end calendar date.
Definition openswmm_engine_impl.cpp:532
SWMM_ENGINE_API int swmm_engine_stride(SWMM_Engine engine, int n_steps, double *elapsed_time)
Perform up to a requested number of physical steps synchronously.
Definition openswmm_engine_impl.cpp:95
SWMM_ENGINE_API const char * swmm_transport_domain_name(int domain)
Get the display name of a transport-domain axis value.
Definition openswmm_engine_impl.cpp:435
SWMM_ENGINE_API int swmm_runoff_iface_save_step(SWMM_Engine engine, double dt)
Request a manual runoff-cache snapshot.
Definition openswmm_engine_impl.cpp:694
SWMM_ENGINE_API const char * swmm_get_warning_at(SWMM_Engine engine, int index)
Borrow one accumulated warning message.
Definition openswmm_engine_impl.cpp:315
SWMM_ENGINE_API int swmm_get_thread_info(SWMM_ThreadInfo *out)
Query hardware and parallel-runtime limits without an engine.
Definition openswmm_engine_impl.cpp:328
SWMM_ENGINE_API const char * swmm_transport_class_name(int species_class)
Get the display name of a transport-species class.
Definition openswmm_engine_impl.cpp:441
SWMM_ENGINE_API int swmm_set_step_end_callback(SWMM_Engine engine, SWMM_StepEndCallback callback, void *user_data)
Register, replace or disable post-physics step notifications.
Definition openswmm_engine_impl.cpp:265
SWMM_ENGINE_API int swmm_runoff_iface_close(SWMM_Engine engine)
Close and release the runoff-cache file if present.
Definition openswmm_engine_impl.cpp:708
SWMM_ENGINE_API int swmm_engine_initialize(SWMM_Engine engine)
Allocate simulation modules and initial state, entering SWMM_STATE_INITIALIZED.
Definition openswmm_engine_impl.cpp:55
SWMM_ENGINE_API int swmm_get_unit_system(SWMM_Engine engine, int *unit_system)
Read the unit system implied by project flow units.
Definition openswmm_engine_impl.cpp:569
SWMM_ENGINE_API int swmm_engine_step(SWMM_Engine engine, double *elapsed_time)
Advance one physical simulation step and report elapsed days.
Definition openswmm_engine_impl.cpp:89
SWMM_ENGINE_API int swmm_events_add(SWMM_Engine engine, double start, double end, int *out_idx)
Append a routing-event window in insertion order.
Definition openswmm_engine_impl.cpp:633
SWMM_ENGINE_API int swmm_set_step_begin_callback(SWMM_Engine engine, SWMM_StepBeginCallback callback, void *user_data)
Register, replace or disable pre-physics step notifications.
Definition openswmm_engine_impl.cpp:258
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:633
int perf_cores
Definition openswmm_engine.h:639
int kokkos_omp_threads
Definition openswmm_engine.h:641
int logical_cpus
Definition openswmm_engine.h:634
int omp_available
Definition openswmm_engine.h:638
int omp_max_threads
Definition openswmm_engine.h:635
Definition openswmm_engine.h:705
int state
Definition openswmm_engine.h:706
int count
Definition openswmm_engine.h:707
char reason[96]
Definition openswmm_engine.h:708
Definition openswmm_engine.h:734
int surface_class[SWMM_TRANSPORT_CLASS_COUNT]
Definition openswmm_engine.h:736
int heat
Definition openswmm_engine.h:735
int ignore_2d
Definition openswmm_engine.h:735
int groundwater
Definition openswmm_engine.h:737
int ignore_quality
Definition openswmm_engine.h:735
int age
Definition openswmm_engine.h:735
Definition openswmm_engine.h:711
SWMM_TransportCell cell[SWMM_TRANSPORT_DOMAIN_COUNT][SWMM_TRANSPORT_CLASS_COUNT]
Definition openswmm_engine.h:712