12#ifndef OPENSWMM_COUPLING_H
13#define OPENSWMM_COUPLING_H
18#define SWMM_COUPLING_SURFACE 0
19#define SWMM_COUPLING_GROUNDWATER 1
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
166 const int* cells,
int count,
168 double* applied_species,
int species_count);
197 double* requested_species,
198 double* applied_species,
int species_count);
223 double* requested_species,
224 double* applied_species,
283 int cell,
double flow_m3_s,
double heat_w,
284 const double* concentrations,
const double* rates,
285 int species_count,
double until_seconds);
316 double value,
const double* concentrations,
388 double value,
const double* concentrations,
457 double* requested_species,
double* applied_species,
474 double* incoming_m3,
double* outgoing_m3);
493 double* actual_seconds);
#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