OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
openswmm_snow.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2
11
12#ifndef OPENSWMM_SNOW_H
13#define OPENSWMM_SNOW_H
14#include "openswmm_engine.h"
15#ifdef __cplusplus
16extern "C" {
17#endif
18
20// All new UEB/radiation values are SI in both US and SI projects. The existing
21// three surface rows keep their existing project units. Setters require an
22// editable model and never change it after a validation error.
23typedef struct SWMM_UebSnowpack {
24 int model; // DEFAULT uses the global model and removes the UEB row
36SWMM_ENGINE_API int swmm_snow_get_model(SWMM_Engine engine, int* model);
55SWMM_ENGINE_API int swmm_snow_get_step(SWMM_Engine engine, double* seconds);
65SWMM_ENGINE_API int swmm_snow_set_step(SWMM_Engine engine, double seconds);
77SWMM_ENGINE_API int swmm_ueb_option_get(SWMM_Engine engine, const char* key, char* value,
78 int capacity);
89SWMM_ENGINE_API int swmm_ueb_option_set(SWMM_Engine engine, const char* key, const char* value);
90// Each monthly mean diurnal range is °C; <=0 means derive from the temperature source.
112SWMM_ENGINE_API int swmm_ueb_set_monthly_ranges(SWMM_Engine engine, const double values[12]);
139 const SWMM_UebSnowpack* value);
140
141typedef struct SWMM_SnowpackEdit {
142 const char* name;
143 double surface[3][7]; // existing PLOWABLE, IMPERVIOUS, PERVIOUS row units/order
144 double removal[6];
145 const char* removal_subcatch;
148// Validate and upsert all named packs as one edit. Existing assignments and
149// packs omitted from the batch are preserved. No partial saves on error.
169 int count, char* diagnostic, int capacity);
170
177// Surface 0 plowable, 1 impervious, 2 pervious. Energy and dimensionless
178// surface age describe the covered pack; SWE is averaged over the subarea.
179// UEB-only quantities are NaN for the degree-day model, never invented zeros.
195 int surface, SWMM_SnowState* value);
202// UEB subcatchment inventory only; transfers are signed into that inventory.
214
215typedef struct SWMM_RadiationConfig {
218 int shortwave_mode, longwave_mode; // 0 computed, 1 timeseries, 2 met file
219 int shortwave_authored, longwave_authored; // 0 preserves legacy heat aliases
244 const SWMM_RadiationConfig* value);
245// channel 0 shortwave series, 1 longwave series, 2 met file path. These only
246// bind names; the source selector is set through swmm_climate_set_radiation.
260SWMM_ENGINE_API int swmm_climate_get_radiation_source(SWMM_Engine engine, int channel, char* value,
261 int capacity);
275 const char* value);
276// Atomically replace the global snow/radiation configuration from section
277// bodies (no [section] headers). Snowpack assignments are preserved. Omitted
278// keys return to defaults. A diagnostic is returned before any publication.
295SWMM_ENGINE_API int swmm_snow_apply_configuration(SWMM_Engine engine, const char* temperature_rows,
296 const char* ueb_rows, char* diagnostic,
297 int capacity);
299 int mode; // 0 default (UEB transmissivity / legacy clear sky), 1 constant, 2 series
315 char* series, int capacity);
318 double first_date, last_date; // OLE dates, covered half-open interval
319 double minimum[5], maximum[5]; // °C, RH %, m/s, shortwave W/m2, longwave W/m2
336 char* diagnostic, int capacity);
337// A single atomic edit for the Climatology view. Null cloud preserves the
338// existing shared Heat/Climatology cloud record.
362swmm_snow_apply_configuration_with_cloud(SWMM_Engine engine, const char* temperature_rows,
363 const char* ueb_rows, const SWMM_ClimateCloudConfig* cloud,
364 const char* cloud_series, char* diagnostic, int capacity);
365#ifdef __cplusplus
366}
367#endif
368#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
OpenSWMM Engine — primary transparent C API (master header).
SWMM_ENGINE_API int swmm_snowpack_set_ueb(SWMM_Engine engine, int pack, const SWMM_UebSnowpack *value)
Replace a named pack's UEB/model overrides.
Definition openswmm_snow_impl.cpp:173
SWMM_ENGINE_API int swmm_subcatch_get_snow_process_state(SWMM_Engine engine, int subcatch, int surface, SWMM_SnowState *value)
Snapshot one subcatchment snow surface's accepted process state.
Definition openswmm_snow_impl.cpp:274
SWMM_ENGINE_API int swmm_climate_set_radiation_source(SWMM_Engine engine, int channel, const char *value)
Bind one radiation source name or meteorology path.
Definition openswmm_snow_impl.cpp:457
SWMM_ENGINE_API int swmm_snow_set_model(SWMM_Engine engine, int model)
Select the global snow-process model.
Definition openswmm_snow_impl.cpp:62
SWMM_ENGINE_API int swmm_ueb_option_get(SWMM_Engine engine, const char *key, char *value, int capacity)
Read a recognized UEB option in its input-section text format.
Definition openswmm_snow_impl.cpp:89
SWMM_ENGINE_API int swmm_climate_preview_meteorology(SWMM_Engine engine, const char *path, SWMM_ClimateMetSummary *result, char *diagnostic, int capacity)
Read and validate hourly meteorology without changing the model binding.
Definition openswmm_snow_impl.cpp:479
SWMM_ENGINE_API int swmm_climate_get_cloud(SWMM_Engine engine, SWMM_ClimateCloudConfig *config, char *series, int capacity)
Snapshot the shared heat/climatology cloud configuration and series name.
Definition openswmm_snow_impl.cpp:515
SWMM_ENGINE_API int swmm_climate_get_radiation(SWMM_Engine engine, SWMM_RadiationConfig *value)
Read the shared radiation site and source selectors.
Definition openswmm_snow_impl.cpp:392
SWMM_ENGINE_API int swmm_snow_get_step(SWMM_Engine engine, double *seconds)
Read the snow-process cadence in seconds.
Definition openswmm_snow_impl.cpp:72
SWMM_ENGINE_API int swmm_climate_set_radiation(SWMM_Engine engine, const SWMM_RadiationConfig *value)
Replace the shared radiation site and source selectors.
Definition openswmm_snow_impl.cpp:417
SWMM_ENGINE_API int swmm_ueb_get_monthly_ranges(SWMM_Engine engine, double values[12])
Read monthly mean diurnal temperature ranges.
SWMM_ENGINE_API int swmm_snowpack_apply(SWMM_Engine engine, const SWMM_SnowpackEdit *edits, int count, char *diagnostic, int capacity)
Validate and upsert a batch of named snowpacks as one atomic edit.
Definition openswmm_snow_impl.cpp:195
SWMM_ENGINE_API int swmm_ueb_option_set(SWMM_Engine engine, const char *key, const char *value)
Parse and assign one UEB option from a textual value.
Definition openswmm_snow_impl.cpp:97
SWMM_ENGINE_API int swmm_snow_get_ueb_ledger(SWMM_Engine engine, SWMM_SnowLedger *value)
Aggregate the active UEB subcatchment water and energy inventory.
Definition openswmm_snow_impl.cpp:327
SWMM_ENGINE_API int swmm_climate_get_radiation_source(SWMM_Engine engine, int channel, char *value, int capacity)
Read one radiation source name or meteorology path.
Definition openswmm_snow_impl.cpp:446
SWMM_ENGINE_API int swmm_ueb_set_monthly_ranges(SWMM_Engine engine, const double values[12])
Replace monthly mean diurnal temperature ranges.
SWMM_ENGINE_API int swmm_snow_set_step(SWMM_Engine engine, double seconds)
Configure the snow-process cadence in seconds.
Definition openswmm_snow_impl.cpp:79
SWMM_ENGINE_API int swmm_snow_apply_configuration(SWMM_Engine engine, const char *temperature_rows, const char *ueb_rows, char *diagnostic, int capacity)
Atomically replace global snow/radiation section configuration.
Definition openswmm_snow_impl.cpp:473
SWMM_ENGINE_API int swmm_snowpack_get_ueb(SWMM_Engine engine, int pack, SWMM_UebSnowpack *value)
Read a named pack's UEB/model overrides.
Definition openswmm_snow_impl.cpp:156
SWMM_ENGINE_API int swmm_snow_apply_configuration_with_cloud(SWMM_Engine engine, const char *temperature_rows, const char *ueb_rows, const SWMM_ClimateCloudConfig *cloud, const char *cloud_series, char *diagnostic, int capacity)
Atomically replace global snow/radiation section configuration, optionally including clouds.
Definition openswmm_snow_impl.cpp:532
@ SWMM_SNOW_DEFAULT
Definition openswmm_snow.h:19
@ SWMM_SNOW_DEGREE_DAY
Definition openswmm_snow.h:19
@ SWMM_SNOW_UEB
Definition openswmm_snow.h:19
SWMM_ENGINE_API int swmm_snow_get_model(SWMM_Engine engine, int *model)
Read the global snow-process model.
Definition openswmm_snow_impl.cpp:55
Definition openswmm_snow.h:298
double longwave_k
Definition openswmm_snow.h:300
double fraction
Definition openswmm_snow.h:300
int mode
Definition openswmm_snow.h:299
double shortwave_n
Definition openswmm_snow.h:300
double shortwave_k
Definition openswmm_snow.h:300
Definition openswmm_snow.h:316
double last_date
Definition openswmm_snow.h:318
int records
Definition openswmm_snow.h:317
double maximum[5]
Definition openswmm_snow.h:319
double minimum[5]
Definition openswmm_snow.h:319
double first_date
Definition openswmm_snow.h:318
Definition openswmm_snow.h:215
double longitude
Definition openswmm_snow.h:217
int longwave_authored
Definition openswmm_snow.h:219
int shortwave_mode
Definition openswmm_snow.h:218
double timezone
Definition openswmm_snow.h:217
double elevation_m
Definition openswmm_snow.h:217
double latitude
Definition openswmm_snow.h:217
int shortwave_authored
Definition openswmm_snow.h:219
int explicit_site
Definition openswmm_snow.h:216
int longwave_mode
Definition openswmm_snow.h:218
Definition openswmm_snow.h:196
double liquid_m3
Definition openswmm_snow.h:197
double initial_m3
Definition openswmm_snow.h:197
double throughfall_m3
Definition openswmm_snow.h:197
double residual_m3
Definition openswmm_snow.h:198
double energy_residual_kj
Definition openswmm_snow.h:200
double elapsed_s
Definition openswmm_snow.h:197
double stored_m3
Definition openswmm_snow.h:198
double net_energy_kj
Definition openswmm_snow.h:199
double initial_energy_kj
Definition openswmm_snow.h:200
double stored_energy_kj
Definition openswmm_snow.h:200
double sublimation_m3
Definition openswmm_snow.h:198
double removed_m3
Definition openswmm_snow.h:198
double geometry_energy_kj
Definition openswmm_snow.h:199
double precipitation_m3
Definition openswmm_snow.h:197
double plowed_energy_kj
Definition openswmm_snow.h:199
double transferred_m3
Definition openswmm_snow.h:198
Definition openswmm_snow.h:171
double water_age_s
Definition openswmm_snow.h:175
double surface_age
Definition openswmm_snow.h:174
double swe_m
Definition openswmm_snow.h:173
double melt_ms
Definition openswmm_snow.h:173
double sublimation_ms
Definition openswmm_snow.h:175
double surface_temperature_c
Definition openswmm_snow.h:174
double energy_kjm2
Definition openswmm_snow.h:174
double cover_fraction
Definition openswmm_snow.h:173
int model
Definition openswmm_snow.h:172
double albedo
Definition openswmm_snow.h:174
double surface_input_ms
Definition openswmm_snow.h:173
double bulk_temperature_c
Definition openswmm_snow.h:174
Definition openswmm_snow.h:141
double removal[6]
Definition openswmm_snow.h:144
double surface[3][7]
Definition openswmm_snow.h:143
const char * name
Definition openswmm_snow.h:142
const char * removal_subcatch
Definition openswmm_snow.h:145
SWMM_UebSnowpack ueb
Definition openswmm_snow.h:146
Definition openswmm_snow.h:23
double drift_factor
Definition openswmm_snow.h:25
double extinction_depth_m
Definition openswmm_snow.h:26
double forest_fraction
Definition openswmm_snow.h:25
double initial_energy_kjm2
Definition openswmm_snow.h:26
int model
Definition openswmm_snow.h:24
double ground_heat_wm2
Definition openswmm_snow.h:25