OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
openswmm_edit.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
47
48#ifndef OPENSWMM_EDIT_H
49#define OPENSWMM_EDIT_H
50
51#include "openswmm_engine.h"
52
53#ifdef __cplusplus
54extern "C" {
55#endif
56
57/* =========================================================================
58 * Impact report — returned by analyze_impact and delete functions
59 * ========================================================================= */
60
88
102
113
124
125/* =========================================================================
126 * Impact analysis — read-only, works in any state where data exists
127 * ========================================================================= */
128
145 SWMM_ImpactReport* report_out);
146
163 SWMM_ImpactReport* report_out);
164
181 SWMM_ImpactReport* report_out);
182
199 SWMM_ImpactReport* report_out);
200
217 SWMM_ImpactReport* report_out);
218
235 SWMM_ImpactReport* report_out);
236
253 SWMM_ImpactReport* report_out);
254
271 SWMM_ImpactReport* report_out);
272
289 SWMM_ImpactReport* report_out);
290
307 SWMM_ImpactReport* report_out);
308
325 SWMM_ImpactReport* report_out);
326
343 SWMM_ImpactReport* report_out);
344
361 SWMM_ImpactReport* report_out);
362
379 SWMM_ImpactReport* report_out);
380
396SWMM_ENGINE_API int swmm_hydrograph_analyze_impact(SWMM_Engine engine, const char* uh_name,
397 SWMM_ImpactReport* report_out);
398
399/* =========================================================================
400 * Deletion — BUILDING or OPENED state only
401 * ========================================================================= */
402
421SWMM_ENGINE_API int swmm_node_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
422
441SWMM_ENGINE_API int swmm_link_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
442
462 SWMM_ImpactReport* cascade_out);
463
478SWMM_ENGINE_API int swmm_gage_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
479
499SWMM_ENGINE_API int swmm_node_delete_many(SWMM_Engine engine, const int* indices, int n,
500 SWMM_ImpactReport* cascade_out);
501
521SWMM_ENGINE_API int swmm_link_delete_many(SWMM_Engine engine, const int* indices, int n,
522 SWMM_ImpactReport* cascade_out);
523
543SWMM_ENGINE_API int swmm_subcatch_delete_many(SWMM_Engine engine, const int* indices, int n,
544 SWMM_ImpactReport* cascade_out);
545
565SWMM_ENGINE_API int swmm_gage_delete_many(SWMM_Engine engine, const int* indices, int n,
566 SWMM_ImpactReport* cascade_out);
567
586SWMM_ENGINE_API int swmm_table_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
587
606 SWMM_ImpactReport* cascade_out);
607
629 SWMM_ImpactReport* cascade_out);
630
651 SWMM_ImpactReport* cascade_out);
652
669 SWMM_ImpactReport* cascade_out);
670
687 SWMM_ImpactReport* cascade_out);
688
704SWMM_ENGINE_API int swmm_lid_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
705
721SWMM_ENGINE_API int swmm_street_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
722
738SWMM_ENGINE_API int swmm_inlet_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
739
756 SWMM_ImpactReport* cascade_out);
757
773SWMM_ENGINE_API int swmm_hydrograph_delete(SWMM_Engine engine, const char* uh_name,
774 SWMM_ImpactReport* cascade_out);
775
776/* =========================================================================
777 * Type conversion result — returned by convert functions
778 * ========================================================================= */
779
795
806
807/* =========================================================================
808 * Type conversion — BUILDING or OPENED state only
809 * ========================================================================= */
810
834SWMM_ENGINE_API int swmm_node_convert(SWMM_Engine engine, int idx, int new_type,
835 SWMM_ConversionResult* result_out);
836
856SWMM_ENGINE_API int swmm_link_convert(SWMM_Engine engine, int idx, int new_type,
857 SWMM_ConversionResult* result_out);
858
859/* =========================================================================
860 * Conduit split / virtual-junction fusion — BUILDING or OPENED state only
861 * (refactored engine only; see openswmm_nodes.h swmm_node_set_virtual)
862 * ========================================================================= */
863
895SWMM_ENGINE_API int swmm_conduit_split(SWMM_Engine engine, int link_idx, double t,
896 const char* new_node_name, const char* new_link_name,
897 int make_virtual, int* new_node_idx, int* new_link_idx);
898
922 int* surviving_link_idx);
923
948SWMM_ENGINE_API int swmm_conduit_split_inlet(SWMM_Engine engine, int link_idx, double t,
949 const char* new_node_name, const char* new_link_name,
950 const char* inlet_id, const char* capture_node,
951 int* new_node_idx, int* new_link_idx);
952
968 int* surviving_link_idx);
969
970#ifdef __cplusplus
971} /* extern "C" */
972#endif
973
974#endif /* OPENSWMM_EDIT_H */
#define SWMM_ENGINE_API
Definition openswmm_2d.h:62
void * SWMM_Engine
Opaque handle to an OpenSWMM Engine instance.
Definition openswmm_callbacks.h:55
SWMM_ENGINE_API int swmm_link_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Inspect incoming references to a link without changing model data.
Definition openswmm_edit_impl.cpp:160
SWMM_ENGINE_API int swmm_gage_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Inspect incoming references to a rain gage without changing model data.
Definition openswmm_edit_impl.cpp:186
SWMM_ENGINE_API int swmm_snowpack_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Inspect incoming references to a snowpack without changing model data.
Definition openswmm_edit_impl.cpp:283
SWMM_ENGINE_API int swmm_street_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Inspect incoming references to a street without changing model data.
Definition openswmm_edit_impl.cpp:305
SWMM_ENGINE_API int swmm_pollutant_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a pollutant and re-pack every per-pollutant matrix.
Definition openswmm_edit_impl.cpp:462
SWMM_ENGINE_API int swmm_aquifer_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Inspect incoming references to an aquifer without changing model data.
Definition openswmm_edit_impl.cpp:272
SWMM_ENGINE_API int swmm_inlet_junction_fuse(SWMM_Engine engine, int node_idx, int *surviving_link_idx)
Remove an inlet junction usage and fuse its through-conduit pair.
Definition openswmm_edit_impl.cpp:676
SWMM_ENGINE_API int swmm_hydrograph_analyze_impact(SWMM_Engine engine, const char *uh_name, SWMM_ImpactReport *report_out)
Inspect references to an existing hydrograph group by exact-case name.
Definition openswmm_edit_impl.cpp:338
SWMM_ENGINE_API int swmm_link_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a link and cascade-delete or nullify all referencing objects.
Definition openswmm_edit_impl.cpp:366
SWMM_ENGINE_API int swmm_pattern_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Inspect incoming references to a time pattern without changing model data.
Definition openswmm_edit_impl.cpp:261
SWMM_ENGINE_API void swmm_impact_report_free(SWMM_ImpactReport *report)
Release report entries and reset their pointer/count.
Definition openswmm_edit_impl.cpp:119
SWMM_ENGINE_API int swmm_conduit_split_inlet(SWMM_Engine engine, int link_idx, double t, const char *new_node_name, const char *new_link_name, const char *inlet_id, const char *capture_node, int *new_node_idx, int *new_link_idx)
Split an eligible conduit and create a configured inlet junction.
Definition openswmm_edit_impl.cpp:642
SWMM_ENGINE_API int swmm_pollutant_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Inspect incoming references to a pollutant without changing model data.
Definition openswmm_edit_impl.cpp:250
SWMM_ENGINE_API int swmm_table_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Inspect incoming references to a time-series/curve table without changing model data.
Definition openswmm_edit_impl.cpp:199
SWMM_ENGINE_API int swmm_table_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a time series or curve and nullify all referencing objects.
Definition openswmm_edit_impl.cpp:441
SWMM_ENGINE_API int swmm_node_convert(SWMM_Engine engine, int idx, int new_type, SWMM_ConversionResult *result_out)
Convert a node to a different type in-place.
Definition openswmm_edit_impl.cpp:555
SWMM_ENGINE_API int swmm_subcatch_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a subcatchment and nullify all referencing objects.
Definition openswmm_edit_impl.cpp:376
SWMM_ENGINE_API int swmm_lid_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Inspect incoming references to a LID control without changing model data.
Definition openswmm_edit_impl.cpp:294
SWMM_ENGINE_API int swmm_gage_delete_many(SWMM_Engine engine, const int *indices, int n, SWMM_ImpactReport *cascade_out)
Delete a batch of rain gage rows using pre-batch indices.
Definition openswmm_edit_impl.cpp:434
SWMM_ENGINE_API void swmm_conversion_result_free(SWMM_ConversionResult *result)
Release all allocated conversion field/warning strings and arrays.
Definition openswmm_edit_impl.cpp:127
SWMM_ENGINE_API int swmm_inlet_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Inspect incoming references to an inlet design without changing model data.
Definition openswmm_edit_impl.cpp:316
SWMM_ENGINE_API int swmm_aquifer_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete an aquifer; referencing subcatchments lose their groundwater (gw_aquifer set to -1) and surviv...
Definition openswmm_edit_impl.cpp:482
SWMM_ENGINE_API int swmm_node_delete_many(SWMM_Engine engine, const int *indices, int n, SWMM_ImpactReport *cascade_out)
Delete a batch of node rows using pre-batch indices.
Definition openswmm_edit_impl.cpp:419
SWMM_ENGINE_API int swmm_transect_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Inspect incoming references to a transect without changing model data.
Definition openswmm_edit_impl.cpp:212
SWMM_ENGINE_API int swmm_street_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a street; inlet-usage rows referencing it are cascade-deleted (consistent with link deletion) ...
Definition openswmm_edit_impl.cpp:511
SWMM_ENGINE_API int swmm_landuse_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a land use; buildup/washoff rows and subcatchment coverage columns for it are re-packed.
Definition openswmm_edit_impl.cpp:530
SWMM_ENGINE_API int swmm_subcatch_delete_many(SWMM_Engine engine, const int *indices, int n, SWMM_ImpactReport *cascade_out)
Delete a batch of subcatchment rows using pre-batch indices.
Definition openswmm_edit_impl.cpp:429
SWMM_ENGINE_API int swmm_gage_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a rain gage and nullify subcatchment gage references.
Definition openswmm_edit_impl.cpp:387
SWMM_ENGINE_API int swmm_pattern_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a time pattern and clear all name-based references.
Definition openswmm_edit_impl.cpp:472
SWMM_ENGINE_API int swmm_virtual_junction_fuse(SWMM_Engine engine, int node_idx, int *surviving_link_idx)
Re-fuse the two conduits of a virtual junction into one, deleting the node (inverse of a virtual spli...
Definition openswmm_edit_impl.cpp:624
SWMM_ENGINE_API int swmm_snowpack_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a snowpack; referencing subcatchments' snowpack index and raw-name mirror are cleared,...
Definition openswmm_edit_impl.cpp:492
SWMM_ENGINE_API int swmm_node_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a node and cascade-delete or nullify all referencing objects.
Definition openswmm_edit_impl.cpp:354
SWMM_ENGINE_API int swmm_link_convert(SWMM_Engine engine, int idx, int new_type, SWMM_ConversionResult *result_out)
Convert a link to a different type in-place.
Definition openswmm_edit_impl.cpp:577
SWMM_ENGINE_API int swmm_inlet_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete an inlet design; inlet-usage rows referencing it are cascade-deleted and design_index values r...
Definition openswmm_edit_impl.cpp:521
SWMM_ENGINE_API int swmm_link_delete_many(SWMM_Engine engine, const int *indices, int n, SWMM_ImpactReport *cascade_out)
Delete a batch of link rows using pre-batch indices.
Definition openswmm_edit_impl.cpp:424
SWMM_ENGINE_API int swmm_lid_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a LID control; LID-usage rows referencing it are cascade-deleted and surviving lid_index value...
Definition openswmm_edit_impl.cpp:502
SWMM_ENGINE_API int swmm_node_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Inspect incoming references to a node without changing model data.
Definition openswmm_edit_impl.cpp:147
SWMM_ENGINE_API int swmm_conduit_split(SWMM_Engine engine, int link_idx, double t, const char *new_node_name, const char *new_link_name, int make_virtual, int *new_node_idx, int *new_link_idx)
Split a conduit at normalized position t, inserting a new node.
Definition openswmm_edit_impl.cpp:601
SWMM_ENGINE_API int swmm_subcatch_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Inspect incoming references to a subcatchment without changing model data.
Definition openswmm_edit_impl.cpp:173
SWMM_ENGINE_API int swmm_landuse_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Inspect incoming references to a land use without changing model data.
Definition openswmm_edit_impl.cpp:327
SWMM_ENGINE_API int swmm_hydrograph_delete(SWMM_Engine engine, const char *uh_name, SWMM_ImpactReport *cascade_out)
Delete an existing hydrograph group by exact-case name.
Definition openswmm_edit_impl.cpp:540
SWMM_ENGINE_API int swmm_transect_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a transect and nullify link xsect_curve references.
Definition openswmm_edit_impl.cpp:451
SWMM_RefType
Category of an object that holds a cross-reference to a deleted object.
Definition openswmm_edit.h:64
@ SWMM_REF_TABLE
Definition openswmm_edit.h:69
@ SWMM_REF_NODE
Definition openswmm_edit.h:65
@ SWMM_REF_GAGE
Definition openswmm_edit.h:68
@ SWMM_REF_LANDUSE
Definition openswmm_edit.h:85
@ SWMM_REF_AQUIFER
Definition openswmm_edit.h:81
@ SWMM_REF_TRANSECT
Definition openswmm_edit.h:70
@ SWMM_REF_PATTERN
Definition openswmm_edit.h:80
@ SWMM_REF_INLET_DESIGN
Definition openswmm_edit.h:84
@ SWMM_REF_EXT_INFLOW
Definition openswmm_edit.h:72
@ SWMM_REF_LID_USAGE
Definition openswmm_edit.h:76
@ SWMM_REF_LID_CONTROL
Definition openswmm_edit.h:82
@ SWMM_REF_TREATMENT
Definition openswmm_edit.h:75
@ SWMM_REF_RDII_ASSIGN
Definition openswmm_edit.h:74
@ SWMM_REF_INLET_USAGE
Definition openswmm_edit.h:71
@ SWMM_REF_SUBCATCH
Definition openswmm_edit.h:67
@ SWMM_REF_DWF_INFLOW
Definition openswmm_edit.h:73
@ SWMM_REF_STREET
Definition openswmm_edit.h:83
@ SWMM_REF_HYDROGRAPH
Definition openswmm_edit.h:78
@ SWMM_REF_LINK
Definition openswmm_edit.h:66
@ SWMM_REF_POLLUTANT
Definition openswmm_edit.h:79
@ SWMM_REF_SNOWPACK
Definition openswmm_edit.h:77
@ SWMM_REF_CONTROL_RULE
Definition openswmm_edit.h:86
OpenSWMM Engine — primary transparent C API (master header).
Result of a node or link type conversion.
Definition openswmm_edit.h:787
int new_type
Definition openswmm_edit.h:788
int n_warnings
Definition openswmm_edit.h:793
int n_cleared
Definition openswmm_edit.h:791
const char ** cleared_fields
Definition openswmm_edit.h:790
const char ** warnings
Definition openswmm_edit.h:792
One object that references the deletion target.
Definition openswmm_edit.h:96
int cascaded
Definition openswmm_edit.h:100
const char * field
Definition openswmm_edit.h:99
int obj_type
Definition openswmm_edit.h:97
int obj_idx
Definition openswmm_edit.h:98
Aggregate impact report for a deletion operation.
Definition openswmm_edit.h:109
SWMM_ImpactEntry * entries
Definition openswmm_edit.h:110
int n_entries
Definition openswmm_edit.h:111