OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
openswmm_climate.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
56
57#ifndef OPENSWMM_CLIMATE_H
58#define OPENSWMM_CLIMATE_H
59
60#include "openswmm_engine.h"
61
62#ifdef __cplusplus
63extern "C" {
64#endif
65
67#define SWMM_CLIMATE_MONTHS 12
68
70#define SWMM_CLIMATE_ADC_POINTS 10
71
80
91
99
108
120
137
145
154
163
164/* =========================================================================
165 * Temperature ([TEMPERATURE])
166 * ========================================================================= */
167
189
201SWMM_ENGINE_API int swmm_climate_get_temp_timeseries(SWMM_Engine engine, char* buf, int buflen);
216
240
264
286
295SWMM_ENGINE_API int swmm_climate_get_latitude(SWMM_Engine engine, double* latitude);
308SWMM_ENGINE_API int swmm_climate_set_latitude(SWMM_Engine engine, double latitude);
309
331
332/* =========================================================================
333 * Evaporation ([EVAPORATION])
334 * ========================================================================= */
335
359
371SWMM_ENGINE_API int swmm_climate_get_evap_monthly(SWMM_Engine engine, double* buf, int count);
387SWMM_ENGINE_API int swmm_climate_set_evap_monthly(SWMM_Engine engine, const double* values,
388 int count);
389
401SWMM_ENGINE_API int swmm_climate_get_evap_timeseries(SWMM_Engine engine, char* buf, int buflen);
416
451 double end_date, double sample_interval_days,
452 SWMM_EvapPreviewSample* samples, int capacity,
453 int* sample_count,
455 char* diagnostic, int diagnostic_capacity);
456
494 SWMM_Engine engine, const SWMM_EvapPreviewConfig* config, double start_date, double end_date,
495 double sample_interval_days, SWMM_EvapPreviewSample* samples, int capacity, int* sample_count,
496 SWMM_EvapPreviewSummary* summary, char* diagnostic, int diagnostic_capacity);
497
509SWMM_ENGINE_API int swmm_climate_get_pan_coeff(SWMM_Engine engine, double* buf, int count);
524SWMM_ENGINE_API int swmm_climate_set_pan_coeff(SWMM_Engine engine, const double* values, int count);
525
537SWMM_ENGINE_API int swmm_climate_get_evap_recovery(SWMM_Engine engine, char* buf, int buflen);
551SWMM_ENGINE_API int swmm_climate_set_evap_recovery(SWMM_Engine engine, const char* pattern_id);
552
553/* =========================================================================
554 * Wind speed ([TEMPERATURE] WINDSPEED)
555 * ========================================================================= */
556
578
589SWMM_ENGINE_API int swmm_climate_get_wind_monthly(SWMM_Engine engine, double* buf, int count);
604SWMM_ENGINE_API int swmm_climate_set_wind_monthly(SWMM_Engine engine, const double* values,
605 int count);
606
607/* =========================================================================
608 * Humidity ([TEMPERATURE] HUMIDITY) — heat-model met input
609 * ========================================================================= */
610
633
657
669SWMM_ENGINE_API int swmm_climate_get_humidity_monthly(SWMM_Engine engine, double* buf, int count);
685SWMM_ENGINE_API int swmm_climate_set_humidity_monthly(SWMM_Engine engine, const double* values,
686 int count);
687
699SWMM_ENGINE_API int swmm_climate_get_humidity_timeseries(SWMM_Engine engine, char* buf, int buflen);
714
715/* =========================================================================
716 * Snowmelt globals ([TEMPERATURE] SNOWMELT)
717 * ========================================================================= */
718
728SWMM_ENGINE_API int swmm_climate_get_snow_temp(SWMM_Engine engine, double* divide_temp);
741SWMM_ENGINE_API int swmm_climate_set_snow_temp(SWMM_Engine engine, double divide_temp);
742
764
786
787/* =========================================================================
788 * Areal-depletion curves ([TEMPERATURE] ADC)
789 * ========================================================================= */
790
804SWMM_ENGINE_API int swmm_climate_get_adc_impervious(SWMM_Engine engine, double* buf, int count);
819SWMM_ENGINE_API int swmm_climate_set_adc_impervious(SWMM_Engine engine, const double* values,
820 int count);
821
835SWMM_ENGINE_API int swmm_climate_get_adc_pervious(SWMM_Engine engine, double* buf, int count);
850SWMM_ENGINE_API int swmm_climate_set_adc_pervious(SWMM_Engine engine, const double* values,
851 int count);
852
853/* =========================================================================
854 * Monthly adjustments ([ADJUSTMENTS])
855 * ========================================================================= */
856
868SWMM_ENGINE_API int swmm_climate_get_adjust_temperature(SWMM_Engine engine, double* buf, int count);
884 int count);
885
897SWMM_ENGINE_API int swmm_climate_get_adjust_evaporation(SWMM_Engine engine, double* buf, int count);
914 int count);
915
927SWMM_ENGINE_API int swmm_climate_get_adjust_rainfall(SWMM_Engine engine, double* buf, int count);
943SWMM_ENGINE_API int swmm_climate_set_adjust_rainfall(SWMM_Engine engine, const double* values,
944 int count);
945
958 int count);
974 int count);
975
976#ifdef __cplusplus
977} /* extern "C" */
978#endif
979
980#endif /* OPENSWMM_CLIMATE_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_climate_set_humidity_timeseries(SWMM_Engine engine, const char *ts_id)
Copy a configured humidity time-series ID.
Definition openswmm_climate_impl.cpp:917
SWMM_ENGINE_API int swmm_climate_set_adc_pervious(SWMM_Engine engine, const double *values, int count)
Replace all pervious areal-depletion fractions in the configured ten-point depletion-curve order.
Definition openswmm_climate_impl.cpp:1012
SWMM_ENGINE_API int swmm_climate_get_temp_timeseries(SWMM_Engine engine, char *buf, int buflen)
Copy the configured temperature time-series ID.
Definition openswmm_climate_impl.cpp:279
SWMM_ENGINE_API int swmm_climate_set_adjust_evaporation(SWMM_Engine engine, const double *values, int count)
Replace all monthly evaporation offsets in January through December.
Definition openswmm_climate_impl.cpp:1052
SWMM_ENGINE_API int swmm_climate_set_elevation(SWMM_Engine engine, double elev)
Set the configured site elevation.
Definition openswmm_climate_impl.cpp:341
SWMM_ENGINE_API int swmm_climate_set_temp_units(SWMM_Engine engine, int units)
Set the configured climate-file temperature-unit selector.
Definition openswmm_climate_impl.cpp:323
SWMM_ENGINE_API int swmm_climate_get_pan_coeff(SWMM_Engine engine, double *buf, int count)
Copy all monthly pan coefficients in January through December.
Definition openswmm_climate_impl.cpp:778
SWMM_ENGINE_API int swmm_climate_get_temp_file_start(SWMM_Engine engine, double *date)
Read the configured climate-file start date.
Definition openswmm_climate_impl.cpp:299
SWMM_ENGINE_API int swmm_climate_get_wind_type(SWMM_Engine engine, int *type)
Read the configured wind-speed source.
Definition openswmm_climate_impl.cpp:817
SWMM_ENGINE_API int swmm_climate_set_humidity_variable(SWMM_Engine engine, int var)
Set the configured humidity quantity.
Definition openswmm_climate_impl.cpp:881
SWMM_ENGINE_API int swmm_climate_get_wind_monthly(SWMM_Engine engine, double *buf, int count)
Copy all monthly average wind speeds in January through December.
Definition openswmm_climate_impl.cpp:835
SWMM_ENGINE_API int swmm_climate_get_adc_pervious(SWMM_Engine engine, double *buf, int count)
Copy all pervious areal-depletion fractions in the configured ten-point depletion-curve order.
Definition openswmm_climate_impl.cpp:1006
SWMM_ENGINE_API int swmm_climate_set_latitude(SWMM_Engine engine, double latitude)
Set the configured site latitude.
Definition openswmm_climate_impl.cpp:357
SWMM_ENGINE_API int swmm_climate_set_neg_melt_ratio(SWMM_Engine engine, double rnm)
Set the configured negative-melt-coefficient ratio.
Definition openswmm_climate_impl.cpp:974
SWMM_ENGINE_API int swmm_climate_set_wind_type(SWMM_Engine engine, int type)
Set the configured wind-speed source.
Definition openswmm_climate_impl.cpp:825
SWMM_ENGINE_API int swmm_climate_get_elevation(SWMM_Engine engine, double *elev)
Read the configured site elevation.
Definition openswmm_climate_impl.cpp:333
SWMM_ENGINE_API int swmm_climate_get_temp_units(SWMM_Engine engine, int *units)
Read the configured climate-file temperature-unit selector.
Definition openswmm_climate_impl.cpp:315
SWMM_ENGINE_API int swmm_climate_get_adc_impervious(SWMM_Engine engine, double *buf, int count)
Copy all impervious areal-depletion fractions in the configured ten-point depletion-curve order.
Definition openswmm_climate_impl.cpp:988
SWMM_ENGINE_API int swmm_climate_set_pan_coeff(SWMM_Engine engine, const double *values, int count)
Replace all monthly pan coefficients in January through December.
Definition openswmm_climate_impl.cpp:784
SWMM_ENGINE_API int swmm_climate_get_snow_temp(SWMM_Engine engine, double *divide_temp)
Read the configured snow/rain dividing temperature.
Definition openswmm_climate_impl.cpp:932
SWMM_ENGINE_API int swmm_climate_set_adjust_rainfall(SWMM_Engine engine, const double *values, int count)
Replace all monthly rainfall multipliers in January through December.
Definition openswmm_climate_impl.cpp:1068
SWMM_ENGINE_API int swmm_climate_set_adjust_conductivity(SWMM_Engine engine, const double *values, int count)
Replace all monthly hydraulic-conductivity multipliers in January through December.
Definition openswmm_climate_impl.cpp:1085
SWMM_ENGINE_API int swmm_climate_get_adjust_evaporation(SWMM_Engine engine, double *buf, int count)
Copy all monthly evaporation offsets in January through December.
Definition openswmm_climate_impl.cpp:1045
SWMM_TempSource
Air-temperature data source (matches [TEMPERATURE]).
Definition openswmm_climate.h:75
@ SWMM_TEMP_FILE
Definition openswmm_climate.h:78
@ SWMM_TEMP_TIMESERIES
Definition openswmm_climate.h:77
@ SWMM_TEMP_NONE
Definition openswmm_climate.h:76
SWMM_HumidityVar
Quantity the HUMIDITY values express.
Definition openswmm_climate.h:158
@ SWMM_HUMIDITY_RELATIVE
Definition openswmm_climate.h:159
@ SWMM_HUMIDITY_DEWPOINT
Definition openswmm_climate.h:160
SWMM_ENGINE_API int swmm_climate_get_evap_type(SWMM_Engine engine, int *type)
Read the configured evaporation method.
Definition openswmm_climate_impl.cpp:387
SWMM_WindType
Wind-speed data source (matches [TEMPERATURE] WINDSPEED).
Definition openswmm_climate.h:141
@ SWMM_WIND_FILE
Definition openswmm_climate.h:143
@ SWMM_WIND_MONTHLY
Definition openswmm_climate.h:142
SWMM_ENGINE_API int swmm_climate_get_humidity_timeseries(SWMM_Engine engine, char *buf, int buflen)
Copy the configured humidity time-series ID.
Definition openswmm_climate_impl.cpp:907
SWMM_ENGINE_API int swmm_climate_set_adjust_temperature(SWMM_Engine engine, const double *values, int count)
Replace all monthly temperature offsets in January through December.
Definition openswmm_climate_impl.cpp:1035
SWMM_ENGINE_API int swmm_climate_get_humidity_type(SWMM_Engine engine, int *type)
Read the configured humidity source.
Definition openswmm_climate_impl.cpp:855
SWMM_ENGINE_API int swmm_climate_get_humidity_variable(SWMM_Engine engine, int *var)
Read the configured humidity quantity.
Definition openswmm_climate_impl.cpp:873
SWMM_ENGINE_API int swmm_climate_get_evap_recovery(SWMM_Engine engine, char *buf, int buflen)
Copy the configured soil-moisture recovery pattern ID.
Definition openswmm_climate_impl.cpp:794
SWMM_ENGINE_API int swmm_climate_set_ati_weight(SWMM_Engine engine, double tipm)
Set the configured antecedent-temperature-index weight.
Definition openswmm_climate_impl.cpp:956
SWMM_ENGINE_API int swmm_climate_preview_evaporation_with_config(SWMM_Engine engine, const SWMM_EvapPreviewConfig *config, double start_date, double end_date, double sample_interval_days, SWMM_EvapPreviewSample *samples, int capacity, int *sample_count, SWMM_EvapPreviewSummary *summary, char *diagnostic, int diagnostic_capacity)
Preview draft or saved evaporation without runtime forcing.
Definition openswmm_climate_impl.cpp:441
SWMM_ENGINE_API int swmm_climate_set_longitude_correction(SWMM_Engine engine, double minutes)
Set the configured longitude/solar-time correction.
Definition openswmm_climate_impl.cpp:375
SWMM_ENGINE_API int swmm_climate_set_evap_monthly(SWMM_Engine engine, const double *values, int count)
Replace all monthly evaporation rates in January through December.
Definition openswmm_climate_impl.cpp:411
SWMM_EvapType
Evaporation method (matches [EVAPORATION]).
Definition openswmm_climate.h:84
@ SWMM_EVAP_TIMESERIES
Definition openswmm_climate.h:87
@ SWMM_EVAP_MONTHLY
Definition openswmm_climate.h:86
@ SWMM_EVAP_CONSTANT
Definition openswmm_climate.h:85
@ SWMM_EVAP_FILE
Definition openswmm_climate.h:89
@ SWMM_EVAP_TEMPERATURE
Definition openswmm_climate.h:88
SWMM_ENGINE_API int swmm_climate_set_temp_source(SWMM_Engine engine, int source)
Set the configured air-temperature source.
Definition openswmm_climate_impl.cpp:269
SWMM_ENGINE_API int swmm_climate_set_evap_type(SWMM_Engine engine, int type)
Set the configured evaporation method.
Definition openswmm_climate_impl.cpp:395
SWMM_ENGINE_API int swmm_climate_set_humidity_monthly(SWMM_Engine engine, const double *values, int count)
Replace all monthly humidity values in January through December.
Definition openswmm_climate_impl.cpp:897
SWMM_HumidityType
Humidity data source (matches [TEMPERATURE] HUMIDITY).
Definition openswmm_climate.h:149
@ SWMM_HUMIDITY_TIMESERIES
Definition openswmm_climate.h:152
@ SWMM_HUMIDITY_MONTHLY
Definition openswmm_climate.h:151
@ SWMM_HUMIDITY_CONSTANT
Definition openswmm_climate.h:150
SWMM_ENGINE_API int swmm_climate_set_snow_temp(SWMM_Engine engine, double divide_temp)
Set the configured snow/rain dividing temperature.
Definition openswmm_climate_impl.cpp:940
SWMM_ENGINE_API int swmm_climate_set_humidity_type(SWMM_Engine engine, int type)
Set the configured humidity source.
Definition openswmm_climate_impl.cpp:863
SWMM_ENGINE_API int swmm_climate_get_evap_timeseries(SWMM_Engine engine, char *buf, int buflen)
Copy the configured evaporation time-series ID.
Definition openswmm_climate_impl.cpp:421
SWMM_ENGINE_API int swmm_climate_preview_evaporation(SWMM_Engine engine, double start_date, double end_date, double sample_interval_days, SWMM_EvapPreviewSample *samples, int capacity, int *sample_count, SWMM_EvapPreviewSummary *summary, char *diagnostic, int diagnostic_capacity)
Preview saved evaporation without runtime forcing.
Definition openswmm_climate_impl.cpp:767
#define SWMM_CLIMATE_MONTHS
Number of monthly values in a climate monthly table.
Definition openswmm_climate.h:67
SWMM_ENGINE_API int swmm_climate_set_evap_timeseries(SWMM_Engine engine, const char *ts_id)
Copy a configured evaporation time-series ID.
Definition openswmm_climate_impl.cpp:430
SWMM_ENGINE_API int swmm_climate_get_neg_melt_ratio(SWMM_Engine engine, double *rnm)
Read the configured negative-melt-coefficient ratio.
Definition openswmm_climate_impl.cpp:966
SWMM_ENGINE_API int swmm_climate_get_ati_weight(SWMM_Engine engine, double *tipm)
Read the configured antecedent-temperature-index weight.
Definition openswmm_climate_impl.cpp:948
SWMM_ENGINE_API int swmm_climate_get_adjust_conductivity(SWMM_Engine engine, double *buf, int count)
Copy all monthly hydraulic-conductivity multipliers in January through December.
Definition openswmm_climate_impl.cpp:1078
SWMM_ENGINE_API int swmm_climate_set_evap_recovery(SWMM_Engine engine, const char *pattern_id)
Copy a configured soil-moisture recovery pattern ID.
Definition openswmm_climate_impl.cpp:803
SWMM_ENGINE_API int swmm_climate_get_adjust_rainfall(SWMM_Engine engine, double *buf, int count)
Copy all monthly rainfall multipliers in January through December.
Definition openswmm_climate_impl.cpp:1062
SWMM_ENGINE_API int swmm_climate_set_temp_file_start(SWMM_Engine engine, double date)
Set the configured climate-file start date.
Definition openswmm_climate_impl.cpp:307
SWMM_ENGINE_API int swmm_climate_get_latitude(SWMM_Engine engine, double *latitude)
Read the configured site latitude.
Definition openswmm_climate_impl.cpp:349
SWMM_ENGINE_API int swmm_climate_get_longitude_correction(SWMM_Engine engine, double *minutes)
Read the configured longitude/solar-time correction.
Definition openswmm_climate_impl.cpp:367
SWMM_ENGINE_API int swmm_climate_get_temp_source(SWMM_Engine engine, int *source)
Read the configured air-temperature source.
Definition openswmm_climate_impl.cpp:261
SWMM_ENGINE_API int swmm_climate_set_temp_timeseries(SWMM_Engine engine, const char *ts_id)
Copy a configured temperature time-series ID.
Definition openswmm_climate_impl.cpp:288
SWMM_ENGINE_API int swmm_climate_get_evap_monthly(SWMM_Engine engine, double *buf, int count)
Copy all monthly evaporation rates in January through December.
Definition openswmm_climate_impl.cpp:405
SWMM_ENGINE_API int swmm_climate_set_wind_monthly(SWMM_Engine engine, const double *values, int count)
Replace all monthly average wind speeds in January through December.
Definition openswmm_climate_impl.cpp:841
SWMM_ENGINE_API int swmm_climate_get_adjust_temperature(SWMM_Engine engine, double *buf, int count)
Copy all monthly temperature offsets in January through December.
Definition openswmm_climate_impl.cpp:1028
SWMM_ENGINE_API int swmm_climate_get_humidity_monthly(SWMM_Engine engine, double *buf, int count)
Copy all monthly humidity values in January through December.
Definition openswmm_climate_impl.cpp:891
SWMM_ENGINE_API int swmm_climate_set_adc_impervious(SWMM_Engine engine, const double *values, int count)
Replace all impervious areal-depletion fractions in the configured ten-point depletion-curve order.
Definition openswmm_climate_impl.cpp:994
SWMM_EvapPreviewStatus
Definition openswmm_climate.h:93
@ SWMM_EVAP_PREVIEW_ESTIMATED
Definition openswmm_climate.h:97
@ SWMM_EVAP_PREVIEW_AVAILABLE
Definition openswmm_climate.h:94
@ SWMM_EVAP_PREVIEW_MISSING
Definition openswmm_climate.h:96
@ SWMM_EVAP_PREVIEW_HELD
Definition openswmm_climate.h:95
OpenSWMM Engine — primary transparent C API (master header).
Definition openswmm_climate.h:122
double evap_monthly[SWMM_CLIMATE_MONTHS]
Definition openswmm_climate.h:124
double climate_file_start
Definition openswmm_climate.h:131
double adjust_temperature[SWMM_CLIMATE_MONTHS]
Definition openswmm_climate.h:135
const char * evap_timeseries
Definition openswmm_climate.h:127
int evap_type
Definition openswmm_climate.h:123
double pan_coeff[SWMM_CLIMATE_MONTHS]
Definition openswmm_climate.h:125
double longitude_correction_minutes
Definition openswmm_climate.h:134
double adjust_evaporation[SWMM_CLIMATE_MONTHS]
Definition openswmm_climate.h:126
int temp_source
Definition openswmm_climate.h:128
double latitude
Definition openswmm_climate.h:133
int climate_file_temp_units
Definition openswmm_climate.h:132
const char * temp_timeseries
Definition openswmm_climate.h:129
const char * climate_file_path
Definition openswmm_climate.h:130
Definition openswmm_climate.h:101
double adjustment
Definition openswmm_climate.h:104
double date
Definition openswmm_climate.h:102
double source_rate
Definition openswmm_climate.h:103
double effective_rate
Definition openswmm_climate.h:105
int status
Definition openswmm_climate.h:106
Definition openswmm_climate.h:110
int runtime_forcing_unknown
Definition openswmm_climate.h:116
double minimum_rate
Definition openswmm_climate.h:117
double maximum_rate
Definition openswmm_climate.h:118
int missing_count
Definition openswmm_climate.h:114
int available_count
Definition openswmm_climate.h:112
int source_type
Definition openswmm_climate.h:111
int estimated_count
Definition openswmm_climate.h:115
int held_count
Definition openswmm_climate.h:113