OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
openswmm_coupling.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: Apache-2.0 */
2
11
12#ifndef OPENSWMM_COUPLING_H
13#define OPENSWMM_COUPLING_H
14#include "openswmm_engine.h"
15#ifdef __cplusplus
16extern "C" {
17#endif
18#define SWMM_COUPLING_SURFACE 0
19#define SWMM_COUPLING_GROUNDWATER 1
29typedef struct SWMM_CouplingSource {
30 unsigned struct_size;
31 const char* id;
32 int domain;
33 int cell;
34 double flow_m3_s;
35 double heat_w;
38 const double* concentrations;
39 const double* rates;
51#define SWMM_COUPLING_FRAME_VERSION 1
52#define SWMM_COUPLING_RAINFALL 1
53#define SWMM_COUPLING_EVAPORATION 2
54#define SWMM_COUPLING_INFILTRATION 3
55#define SWMM_COUPLING_RAIN_QUALITY 4
76typedef struct SWMM_CouplingClear {
77 int domain, cell; /* cell=-1 clears all cells for this source ID. */
78 const char* id;
137SWMM_ENGINE_API int swmm_coupling_clear_source_cell(SWMM_Engine engine, int domain, const char* id,
138 int cell);
165SWMM_ENGINE_API int swmm_coupling_get_receipts(SWMM_Engine engine, int domain, const char* id,
166 const int* cells, int count,
167 SWMM_CouplingReceipt* out, double* requested_species,
168 double* applied_species, int species_count);
195SWMM_ENGINE_API int swmm_coupling_get_boundary_receipt(SWMM_Engine engine, int domain, int cell,
196 int edge, SWMM_CouplingReceipt* out,
197 double* requested_species,
198 double* applied_species, int species_count);
223 double* requested_species,
224 double* applied_species,
225 int species_count);
243SWMM_ENGINE_API int swmm_2d_get_species_ledger(SWMM_Engine engine, int species, int term,
244 double* value);
245
282SWMM_ENGINE_API int swmm_coupling_set_source(SWMM_Engine engine, const char* id, int domain,
283 int cell, double flow_m3_s, double heat_w,
284 const double* concentrations, const double* rates,
285 int species_count, double until_seconds);
315SWMM_ENGINE_API int swmm_gw2d_set_runtime_boundary(SWMM_Engine engine, int cell, int edge, int kind,
316 double value, const double* concentrations,
317 int species_count);
337SWMM_ENGINE_API int swmm_gw2d_clear_runtime_boundary(SWMM_Engine engine, int cell, int edge);
357 double* flow_m3_s);
387SWMM_ENGINE_API int swmm_2d_set_runtime_boundary(SWMM_Engine engine, int cell, int edge, int kind,
388 double value, const double* concentrations,
389 int species_count);
409 const SWMM_CouplingSource* sources, int count);
428SWMM_ENGINE_API int swmm_coupling_clear_source(SWMM_Engine engine, int domain, const char* id);
455SWMM_ENGINE_API int swmm_coupling_get_receipt(SWMM_Engine engine, int domain, const char* id,
456 int cell, SWMM_CouplingReceipt* out,
457 double* requested_species, double* applied_species,
458 int capacity);
474 double* incoming_m3, double* outgoing_m3);
492SWMM_ENGINE_API int swmm_coupling_advance_to(SWMM_Engine engine, double target_seconds,
493 double* actual_seconds);
509SWMM_ENGINE_API int swmm_coupling_capabilities(SWMM_Engine engine, unsigned* flags);
510#ifdef __cplusplus
511}
512#endif
513#endif
#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_coupling_get_boundary_receipt(SWMM_Engine engine, int domain, int cell, int edge, SWMM_CouplingReceipt *out, double *requested_species, double *applied_species, int species_count)
Read signed cumulative hydraulic and advective exchange for a perimeter edge.
Definition ApiCoupling.cpp:607
SWMM_ENGINE_API int swmm_coupling_get_water_totals(SWMM_Engine engine, int domain, double *incoming_m3, double *outgoing_m3)
Sum gross cumulative external source inflow and outflow for a domain.
Definition ApiCoupling.cpp:713
SWMM_ENGINE_API int swmm_gw2d_set_runtime_boundary(SWMM_Engine engine, int cell, int edge, int kind, double value, const double *concentrations, int species_count)
Install or clear a saturated groundwater perimeter head or outward flow.
Definition ApiCoupling.cpp:547
SWMM_ENGINE_API int swmm_coupling_clear_source_cell(SWMM_Engine engine, int domain, const char *id, int cell)
Disable a legacy source in one cell or all of its cells while retaining receipts.
Definition ApiCoupling.cpp:556
SWMM_ENGINE_API int swmm_coupling_set_sources(SWMM_Engine engine, const SWMM_CouplingSource *sources, int count)
Atomically replace a batch of legacy source ID/cell prescriptions.
Definition ApiCoupling.cpp:530
SWMM_ENGINE_API int swmm_coupling_set_source(SWMM_Engine engine, const char *id, int domain, int cell, double flow_m3_s, double heat_w, const double *concentrations, const double *rates, int species_count, double until_seconds)
Replace one copied legacy source prescription without altering species topology.
Definition ApiCoupling.cpp:535
SWMM_ENGINE_API int swmm_coupling_get_infiltration_receipt(SWMM_Engine engine, int cell, SWMM_CouplingReceipt *out, double *requested_species, double *applied_species, int species_count)
Read the paired surface-to-groundwater infiltration receipt for one cell.
Definition ApiCoupling.cpp:651
SWMM_ENGINE_API int swmm_2d_get_species_ledger(SWMM_Engine engine, int species, int term, double *value)
Read a surface species storage or cumulative balance term.
Definition ApiCoupling.cpp:684
SWMM_ENGINE_API int swmm_gw2d_clear_runtime_boundary(SWMM_Engine engine, int cell, int edge)
Restore native no-flow on a legacy-owned groundwater perimeter edge.
Definition ApiCoupling.cpp:553
SWMM_ENGINE_API int swmm_coupling_get_receipt(SWMM_Engine engine, int domain, const char *id, int cell, SWMM_CouplingReceipt *out, double *requested_species, double *applied_species, int capacity)
Read one stored source receipt, including retained cleared/expired history.
Definition ApiCoupling.cpp:564
SWMM_ENGINE_API int swmm_coupling_apply_frame(SWMM_Engine engine, const SWMM_CouplingFrame *frame)
Atomically apply copied cross-domain sources, boundaries, forcings and clears.
Definition ApiCoupling.cpp:215
SWMM_ENGINE_API int swmm_coupling_advance_to(SWMM_Engine engine, double target_seconds, double *actual_seconds)
Advance synchronously to an elapsed-second exchange time without overshoot.
Definition ApiCoupling.cpp:727
SWMM_ENGINE_API int swmm_gw2d_get_runtime_boundary_flow(SWMM_Engine engine, int cell, int edge, double *flow_m3_s)
Read the last accepted outward groundwater boundary discharge.
Definition ApiCoupling.cpp:665
SWMM_ENGINE_API int swmm_2d_set_runtime_boundary(SWMM_Engine engine, int cell, int edge, int kind, double value, const double *concentrations, int species_count)
Install or clear a surface perimeter stage or total outward flow.
Definition ApiCoupling.cpp:541
SWMM_ENGINE_API int swmm_coupling_clear_source(SWMM_Engine engine, int domain, const char *id)
Disable all legacy source cells for one ID and preserve their receipts.
Definition ApiCoupling.cpp:561
SWMM_ENGINE_API int swmm_coupling_get_receipts(SWMM_Engine engine, int domain, const char *id, const int *cells, int count, SWMM_CouplingReceipt *out, double *requested_species, double *applied_species, int species_count)
Read several source receipts after validating the entire request.
Definition ApiCoupling.cpp:584
SWMM_ENGINE_API int swmm_coupling_capabilities(SWMM_Engine engine, unsigned *flags)
Query runtime coupling features currently available in this engine.
Definition ApiCoupling.cpp:731
OpenSWMM Engine — primary transparent C API (master header).
Definition openswmm_coupling.h:57
int domain
Definition openswmm_coupling.h:59
unsigned struct_size
Definition openswmm_coupling.h:58
int cell
Definition openswmm_coupling.h:59
int species_count
Definition openswmm_coupling.h:61
const double * concentrations
Definition openswmm_coupling.h:62
double value
Definition openswmm_coupling.h:60
int edge
Definition openswmm_coupling.h:59
int kind
Definition openswmm_coupling.h:59
Definition openswmm_coupling.h:76
const char * id
Definition openswmm_coupling.h:78
int cell
Definition openswmm_coupling.h:77
int domain
Definition openswmm_coupling.h:77
Definition openswmm_coupling.h:69
int cell
Definition openswmm_coupling.h:71
double until_seconds
Definition openswmm_coupling.h:72
double rate_m_s
Definition openswmm_coupling.h:72
unsigned struct_size
Definition openswmm_coupling.h:70
int channel
Definition openswmm_coupling.h:71
int species_count
Definition openswmm_coupling.h:73
const double * concentrations
Definition openswmm_coupling.h:74
int mode
Definition openswmm_coupling.h:71
Definition openswmm_coupling.h:85
unsigned struct_size
Definition openswmm_coupling.h:86
const SWMM_CouplingForcing * forcings
Definition openswmm_coupling.h:93
const SWMM_CouplingBoundary * boundaries
Definition openswmm_coupling.h:91
const char * provider
Definition openswmm_coupling.h:87
int boundary_count
Definition openswmm_coupling.h:90
unsigned version
Definition openswmm_coupling.h:86
int source_count
Definition openswmm_coupling.h:88
const SWMM_CouplingSource * sources
Definition openswmm_coupling.h:89
int forcing_count
Definition openswmm_coupling.h:92
int clear_count
Definition openswmm_coupling.h:94
const SWMM_CouplingClear * clears
Definition openswmm_coupling.h:95
Definition openswmm_coupling.h:46
double last_interval_seconds
Definition openswmm_coupling.h:49
double requested_m3
Definition openswmm_coupling.h:47
double applied_heat_j
Definition openswmm_coupling.h:48
double rejected_m3
Definition openswmm_coupling.h:47
double requested_heat_j
Definition openswmm_coupling.h:48
double last_applied_m3_s
Definition openswmm_coupling.h:49
double rejected_heat_j
Definition openswmm_coupling.h:48
double applied_m3
Definition openswmm_coupling.h:47
Definition openswmm_coupling.h:29
int cell
Definition openswmm_coupling.h:33
double until_seconds
Definition openswmm_coupling.h:36
int species_count
Definition openswmm_coupling.h:37
int domain
Definition openswmm_coupling.h:32
const double * concentrations
Definition openswmm_coupling.h:38
unsigned struct_size
Definition openswmm_coupling.h:30
const double * rates
Definition openswmm_coupling.h:39
double heat_w
Definition openswmm_coupling.h:35
double flow_m3_s
Definition openswmm_coupling.h:34
const char * id
Definition openswmm_coupling.h:31