OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
openswmm_infil2d.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
67
72
73#ifndef OPENSWMM_INFIL2D_H
74#define OPENSWMM_INFIL2D_H
75
76#include "openswmm_engine.h"
77
78#ifdef __cplusplus
79extern "C" {
80#endif
81
82/* =========================================================================
83 * Codes and limits
84 * ========================================================================= */
85
92#define SWMM_INFIL2D_MAX_PARAMS 5
93
97#define SWMM_INFIL2D_HORTON 0
98#define SWMM_INFIL2D_MOD_HORTON 1
99#define SWMM_INFIL2D_GREEN_AMPT 2
100#define SWMM_INFIL2D_MOD_GREEN_AMPT 3
101#define SWMM_INFIL2D_CURVE_NUMBER 4
102#define SWMM_INFIL2D_CONSTANT 5
103
110#define SWMM_INFIL2D_DEST_LOST 0
111#define SWMM_INFIL2D_DEST_SUBCATCH_AQUIFER 1
112#define SWMM_INFIL2D_DEST_AQUIFER_2D 2
113
114/* =========================================================================
115 * Value types
116 * ========================================================================= */
117
128
164
191 int len, int* written);
208 const SWMM_Infil2DAuthoredRow* rows,
209 int count);
210
226SWMM_ENGINE_API int swmm_infil2d_get_ownership_bulk(SWMM_Engine engine, int* owners, int* aq_rows,
227 int* conflicts, int len, int* written);
239SWMM_ENGINE_API int swmm_infil2d_get_ownership(SWMM_Engine engine, int cell, int* owner,
240 int* aq_row, int* conflict);
241
242/* =========================================================================
243 * Options — `[2D_INFILTRATION_OPTIONS]`
244 * ========================================================================= */
245
258
282 const SWMM_Infil2DOptions* options);
283
284/* =========================================================================
285 * Tag defaults — `[2D_INFILTRATION_DEFAULTS]`
286 * ========================================================================= */
287
299
313
326SWMM_ENGINE_API int swmm_infil2d_get_default_tag(SWMM_Engine engine, int idx, char* buf,
327 int buflen);
328
350SWMM_ENGINE_API int swmm_infil2d_set_default(SWMM_Engine engine, const char* tag,
351 const SWMM_Infil2DRow* row);
352
366SWMM_ENGINE_API int swmm_infil2d_remove_default(SWMM_Engine engine, const char* tag);
367
368/* =========================================================================
369 * Per-cell overrides — `[2D_INFILTRATION]`
370 * ========================================================================= */
371
396 int* is_override);
397
418
441SWMM_ENGINE_API int swmm_infil2d_set_cells(SWMM_Engine engine, const int* tris, int n,
442 const SWMM_Infil2DRow* row);
443
444/* =========================================================================
445 * State readback (SI, like the rest of the 2D API)
446 * ========================================================================= */
447
464SWMM_ENGINE_API int swmm_infil2d_get_rate_bulk(SWMM_Engine engine, double* f, int n);
465
483SWMM_ENGINE_API int swmm_infil2d_get_cum_bulk(SWMM_Engine engine, double* F, int n);
484
499
500#ifdef __cplusplus
501} /* extern "C" */
502#endif
503
504#endif /* OPENSWMM_INFIL2D_H */
SWMM_ENGINE_API int swmm_infil2d_set_options(SWMM_Engine engine, const SWMM_Infil2DOptions *options)
Set the 2D infiltration options (INFIL_STEP, seconds).
Definition ApiInfil2D.cpp:315
SWMM_ENGINE_API int swmm_infil2d_set_cells(SWMM_Engine engine, const int *tris, int n, const SWMM_Infil2DRow *row)
Assign one specification to many triangles in a single call.
Definition ApiInfil2D.cpp:657
SWMM_ENGINE_API int swmm_infil2d_get_options(SWMM_Engine engine, SWMM_Infil2DOptions *options)
Get the 2D infiltration options (INFIL_STEP).
Definition ApiInfil2D.cpp:305
SWMM_ENGINE_API int swmm_infil2d_set_default(SWMM_Engine engine, const char *tag, const SWMM_Infil2DRow *row)
Add or replace the default row for a tag.
Definition ApiInfil2D.cpp:377
SWMM_ENGINE_API int swmm_infil2d_defaults_count(SWMM_Engine engine, int *count)
Number of authored tag-default rows, including the ‘’*'` row.
Definition ApiInfil2D.cpp:334
SWMM_ENGINE_API int swmm_infil2d_get_default(SWMM_Engine engine, int idx, SWMM_Infil2DRow *row)
Read one tag-default row by index.
Definition ApiInfil2D.cpp:344
SWMM_ENGINE_API int swmm_infil2d_get_cell(SWMM_Engine engine, int tri, SWMM_Infil2DRow *row, int *is_override)
Read the infiltration specification in force at one triangle.
Definition ApiInfil2D.cpp:597
SWMM_ENGINE_API int swmm_infil2d_get_total_volume(SWMM_Engine engine, double *volume)
Get the cumulative 2D infiltration loss (m³) — the infil_out mass-balance ledger row.
Definition ApiInfil2D.cpp:723
SWMM_ENGINE_API int swmm_infil2d_get_rate_bulk(SWMM_Engine engine, double *f, int n)
Bulk get the held per-cell infiltration rate (m/s, >= 0).
Definition ApiInfil2D.cpp:695
#define SWMM_INFIL2D_MAX_PARAMS
Number of positional parameter columns carried per row.
Definition openswmm_infil2d.h:92
SWMM_ENGINE_API int swmm_infil2d_remove_default(SWMM_Engine engine, const char *tag)
Remove every default row carrying a tag.
Definition ApiInfil2D.cpp:405
SWMM_ENGINE_API int swmm_infil2d_get_default_tag(SWMM_Engine engine, int idx, char *buf, int buflen)
Read the TAG of one default row by index.
Definition ApiInfil2D.cpp:358
SWMM_ENGINE_API int swmm_infil2d_get_cum_bulk(SWMM_Engine engine, double *F, int n)
Bulk get the cumulative infiltrated depth per cell (m).
Definition ApiInfil2D.cpp:708
SWMM_ENGINE_API int swmm_infil2d_set_cell(SWMM_Engine engine, int tri, const SWMM_Infil2DRow *row)
Set (or clear) the per-cell [2D_INFILTRATION] override of one triangle.
Definition ApiInfil2D.cpp:633
#define SWMM_ENGINE_API
Definition openswmm_2d.h:62
void * SWMM_Engine
Opaque handle to an OpenSWMM Engine instance.
Definition openswmm_callbacks.h:55
OpenSWMM Engine — primary transparent C API (master header).
SWMM_ENGINE_API int swmm_infil2d_get_authored_rows(SWMM_Engine engine, SWMM_Infil2DAuthoredRow *out, int len, int *written)
Copy the complete ordered infiltration authoring records, including inheritance flags.
Definition ApiInfil2D.cpp:430
SWMM_ENGINE_API int swmm_infil2d_replace_authored_rows(SWMM_Engine engine, const SWMM_Infil2DAuthoredRow *rows, int count)
Validate and replace infiltration authoring rows as one edit.
Definition ApiInfil2D.cpp:465
SWMM_ENGINE_API int swmm_infil2d_get_ownership(SWMM_Engine engine, int cell, int *owner, int *aq_row, int *conflict)
Preview one triangle's infiltration/aquifer ownership and conflict.
Definition ApiInfil2D.cpp:559
SWMM_ENGINE_API int swmm_infil2d_get_ownership_bulk(SWMM_Engine engine, int *owners, int *aq_rows, int *conflicts, int len, int *written)
Preview infiltration/aquifer ownership and authoring conflicts for all triangles.
Definition ApiInfil2D.cpp:498
Definition openswmm_infil2d.h:170
int dest_explicit
Definition openswmm_infil2d.h:174
SWMM_Infil2DRow row
Definition openswmm_infil2d.h:173
char tag[4096]
Definition openswmm_infil2d.h:172
int cell
Definition openswmm_infil2d.h:171
[2D_INFILTRATION_OPTIONS] — POD mirror of openswmm::twoD::Infil2DOptions.
Definition openswmm_infil2d.h:121
double infil_step
Definition openswmm_infil2d.h:126
One infiltration specification — POD mirror of openswmm::twoD::Infil2DRow.
Definition openswmm_infil2d.h:152
int has_method
Definition openswmm_infil2d.h:155
int dest
Definition openswmm_infil2d.h:162
int method
Definition openswmm_infil2d.h:157
double p[SWMM_INFIL2D_MAX_PARAMS]
Definition openswmm_infil2d.h:159