openswmm 5.3.0.dev0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openswmm/CMakeLists.txt +31 -0
- openswmm/__init__.py +42 -0
- openswmm/_openswmm.pyx +12 -0
- openswmm/data/__init__.py +0 -0
- openswmm/gym/__init__.py +0 -0
- openswmm/openswmm.pxd +10 -0
- openswmm/output/CMakeLists.txt +45 -0
- openswmm/output/__init__.pxd +1 -0
- openswmm/output/__init__.py +13 -0
- openswmm/output/_output.pyi +732 -0
- openswmm/output/_output.pyx +1557 -0
- openswmm/output/output.pxd +368 -0
- openswmm/solver/CMakeLists.txt +50 -0
- openswmm/solver/__init__.pxd +1 -0
- openswmm/solver/__init__.py +22 -0
- openswmm/solver/_solver.pyi +1012 -0
- openswmm/solver/_solver.pyx +1646 -0
- openswmm/solver/solver.pxd +356 -0
- openswmm-5.3.0.dev0.dist-info/METADATA +228 -0
- openswmm-5.3.0.dev0.dist-info/RECORD +36 -0
- openswmm-5.3.0.dev0.dist-info/WHEEL +5 -0
- openswmm-5.3.0.dev0.dist-info/licenses/LICENSE +12 -0
- openswmm-5.3.0.dev0.dist-info/top_level.txt +2 -0
- tests/.DS_Store +0 -0
- tests/__init__.py +3 -0
- tests/data/.DS_Store +0 -0
- tests/data/__init__.py +3 -0
- tests/data/output/__init__.py +22 -0
- tests/data/output/example_output_1.out +0 -0
- tests/data/output/json_time_series.pickle +0 -0
- tests/data/solver/__init__.py +17 -0
- tests/data/solver/non_existent_input_file.rpt +2387 -0
- tests/data/solver/site_drainage_example.inp +499 -0
- tests/data/solver/site_drainage_example.rpt +354 -0
- tests/test_swmm_solver.py +716 -0
- tests/test_swwm_output.py +1048 -0
|
@@ -0,0 +1,732 @@
|
|
|
1
|
+
"""
|
|
2
|
+
This type stub file was generated by cyright.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from enum import Enum
|
|
6
|
+
from typing import Dict, List, Optional, Tuple, Union
|
|
7
|
+
from cpython.datetime import datetime
|
|
8
|
+
|
|
9
|
+
class UnitSystem(Enum):
|
|
10
|
+
"""
|
|
11
|
+
Enumeration of the unit system used in the output file.
|
|
12
|
+
|
|
13
|
+
:ivar US: US customary units.
|
|
14
|
+
:type US: int
|
|
15
|
+
:ivar SI: SI metric units.
|
|
16
|
+
:type SI: int
|
|
17
|
+
"""
|
|
18
|
+
US = ...
|
|
19
|
+
SI = ...
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class FlowUnits(Enum):
|
|
23
|
+
"""
|
|
24
|
+
Enumeration of the flow units used in the simulation.
|
|
25
|
+
|
|
26
|
+
:ivar CFS: Cubic feet per second.
|
|
27
|
+
:type CFS: int
|
|
28
|
+
:ivar GPM: Gallons per minute.
|
|
29
|
+
:type GPM: int
|
|
30
|
+
:ivar MGD: Million gallons per day.
|
|
31
|
+
:type MGD: int
|
|
32
|
+
:ivar CMS: Cubic meters per second.
|
|
33
|
+
:type CMS: int
|
|
34
|
+
:ivar LPS: Liters per second.
|
|
35
|
+
:type LPS: int
|
|
36
|
+
:ivar MLD: Million liters per day.
|
|
37
|
+
:type MLD: int
|
|
38
|
+
"""
|
|
39
|
+
CFS = ...
|
|
40
|
+
GPM = ...
|
|
41
|
+
MGD = ...
|
|
42
|
+
CMS = ...
|
|
43
|
+
LPS = ...
|
|
44
|
+
MLD = ...
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class ConcentrationUnits(Enum):
|
|
48
|
+
"""
|
|
49
|
+
Enumeration of the concentration units used in the simulation.
|
|
50
|
+
|
|
51
|
+
:ivar MG: Milligrams per liter.
|
|
52
|
+
:type MG: int
|
|
53
|
+
:ivar UG: Micrograms per liter.
|
|
54
|
+
:type UG: int
|
|
55
|
+
:ivar COUNT: Counts per liter.
|
|
56
|
+
:type COUNT: int
|
|
57
|
+
:ivar NONE: No units.
|
|
58
|
+
:type NONE: int
|
|
59
|
+
"""
|
|
60
|
+
MG = ...
|
|
61
|
+
UG = ...
|
|
62
|
+
COUNT = ...
|
|
63
|
+
NONE = ...
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class ElementType(Enum):
|
|
67
|
+
"""
|
|
68
|
+
Enumeration of the SWMM element types.
|
|
69
|
+
|
|
70
|
+
:ivar SUBCATCHMENT: Subcatchment.
|
|
71
|
+
:type SUBCATCHMENT: int
|
|
72
|
+
:ivar NODE: Node.
|
|
73
|
+
:type NODE: int
|
|
74
|
+
:ivar LINK: Link.
|
|
75
|
+
:type LINK: int
|
|
76
|
+
:ivar SYS: System.
|
|
77
|
+
:type SYS: int
|
|
78
|
+
:ivar POLLUTANT: Pollutant.
|
|
79
|
+
:type POLLUTANT: int
|
|
80
|
+
"""
|
|
81
|
+
SUBCATCHMENT = ...
|
|
82
|
+
NODE = ...
|
|
83
|
+
LINK = ...
|
|
84
|
+
SYSTEM = ...
|
|
85
|
+
POLLUTANT = ...
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
class TimeAttribute(Enum):
|
|
89
|
+
"""
|
|
90
|
+
Enumeration of the report time related attributes.
|
|
91
|
+
|
|
92
|
+
:ivar REPORT_STEP: Report step size (seconds).
|
|
93
|
+
:type REPORT_STEP: int
|
|
94
|
+
:ivar NUM_PERIODS: Number of reporting periods.
|
|
95
|
+
:type NUM_PERIODS: int
|
|
96
|
+
"""
|
|
97
|
+
REPORT_STEP = ...
|
|
98
|
+
NUM_PERIODS = ...
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
class SubcatchAttribute(Enum):
|
|
102
|
+
"""
|
|
103
|
+
Enumeration of the subcatchment attributes.
|
|
104
|
+
|
|
105
|
+
:ivar RAINFALL: Subcatchment rainfall (in/hr or mm/hr).
|
|
106
|
+
:type RAINFALL: int
|
|
107
|
+
:ivar SNOW_DEPTH: Subcatchment snow depth (in or mm).
|
|
108
|
+
:type SNOW_DEPTH: int
|
|
109
|
+
:ivar EVAPORATION_LOSS: Subcatchment evaporation loss (in/hr or mm/hr).
|
|
110
|
+
:type EVAPORATION_LOSS: int
|
|
111
|
+
:ivar INFILTRATION_LOSS: Subcatchment infiltration loss (in/hr or mm/hr).
|
|
112
|
+
:type INFILTRATION_LOSS: int
|
|
113
|
+
:ivar RUNOFF_RATE: Subcatchment runoff flow (flow units).
|
|
114
|
+
:type RUNOFF_RATE: int
|
|
115
|
+
:ivar GROUNDWATER_OUTFLOW: Subcatchment groundwater flow (flow units).
|
|
116
|
+
:type GROUNDWATER_OUTFLOW: int
|
|
117
|
+
:ivar GW_TABLE: Subcatchment groundwater elevation (ft or m).
|
|
118
|
+
:type GW_TABLE: int
|
|
119
|
+
:ivar SOIL_MOISTURE: Subcatchment soil moisture content (-).
|
|
120
|
+
:type SOIL_MOISTURE: int
|
|
121
|
+
:ivar POLLUTANT_CONCENTRATION: Subcatchment pollutant concentration (-).
|
|
122
|
+
:type POLLUTANT_CONCENTRATION: int
|
|
123
|
+
"""
|
|
124
|
+
RAINFALL = ...
|
|
125
|
+
SNOW_DEPTH = ...
|
|
126
|
+
EVAPORATION_LOSS = ...
|
|
127
|
+
INFILTRATION_LOSS = ...
|
|
128
|
+
RUNOFF_RATE = ...
|
|
129
|
+
GROUNDWATER_OUTFLOW = ...
|
|
130
|
+
GROUNDWATER_TABLE_ELEVATION = ...
|
|
131
|
+
SOIL_MOISTURE = ...
|
|
132
|
+
POLLUTANT_CONCENTRATION = ...
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
class NodeAttribute(Enum):
|
|
136
|
+
"""
|
|
137
|
+
Enumeration of the node attributes.
|
|
138
|
+
|
|
139
|
+
:ivar INVERT_DEPTH: Node depth above invert (ft or m).
|
|
140
|
+
:type INVERT_DEPTH: int
|
|
141
|
+
:ivar HYDRAULIC_HEAD: Node hydraulic head (ft or m).
|
|
142
|
+
:type HYDRAULIC_HEAD: int
|
|
143
|
+
:ivar STORED_VOLUME: Node volume stored (ft3 or m3).
|
|
144
|
+
:type STORED_VOLUME: int
|
|
145
|
+
:ivar LATERAL_INFLOW: Node lateral inflow (flow units).
|
|
146
|
+
:type LATERAL_INFLOW: int
|
|
147
|
+
:ivar TOTAL_INFLOW: Node total inflow (flow units).
|
|
148
|
+
:type TOTAL_INFLOW: int
|
|
149
|
+
:ivar FLOODING_LOSSES: Node flooding losses (flow units).
|
|
150
|
+
:type FLOODING_LOSSES: int
|
|
151
|
+
:ivar POLLUTANT_CONCENTRATION: Node pollutant concentration (-).
|
|
152
|
+
:type POLLUTANT_CONCENTRATION: int
|
|
153
|
+
"""
|
|
154
|
+
INVERT_DEPTH = ...
|
|
155
|
+
HYDRAULIC_HEAD = ...
|
|
156
|
+
STORED_VOLUME = ...
|
|
157
|
+
LATERAL_INFLOW = ...
|
|
158
|
+
TOTAL_INFLOW = ...
|
|
159
|
+
FLOODING_LOSSES = ...
|
|
160
|
+
POLLUTANT_CONCENTRATION = ...
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
class LinkAttribute(Enum):
|
|
164
|
+
"""
|
|
165
|
+
Enumeration of the link attributes.
|
|
166
|
+
|
|
167
|
+
:ivar FLOW_RATE: Link flow rate (flow units).
|
|
168
|
+
:type FLOW_RATE: int
|
|
169
|
+
:ivar FLOW_DEPTH: Link flow depth (ft or m).
|
|
170
|
+
:type FLOW_DEPTH: int
|
|
171
|
+
:ivar FLOW_VELOCITY: Link flow velocity (ft/s or m/s).
|
|
172
|
+
:type FLOW_VELOCITY: int
|
|
173
|
+
:ivar FLOW_VOLUME: Link flow volume (ft3 or m3).
|
|
174
|
+
:type FLOW_VOLUME: int
|
|
175
|
+
:ivar CAPACITY: Link capacity (fraction of conduit filled).
|
|
176
|
+
:type CAPACITY: int
|
|
177
|
+
:ivar POLLUTANT_CONCENTRATION: Link pollutant concentration (-).
|
|
178
|
+
:type POLLUTANT_CONCENTRATION: int
|
|
179
|
+
"""
|
|
180
|
+
FLOW_RATE = ...
|
|
181
|
+
FLOW_DEPTH = ...
|
|
182
|
+
FLOW_VELOCITY = ...
|
|
183
|
+
FLOW_VOLUME = ...
|
|
184
|
+
CAPACITY = ...
|
|
185
|
+
POLLUTANT_CONCENTRATION = ...
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
class SystemAttribute(Enum):
|
|
189
|
+
"""
|
|
190
|
+
Enumeration of the system attributes.
|
|
191
|
+
|
|
192
|
+
:ivar AIR_TEMP: Air temperature (deg. F or deg. C).
|
|
193
|
+
:type AIR_TEMP: int
|
|
194
|
+
:ivar RAINFALL: Rainfall intensity (in/hr or mm/hr).
|
|
195
|
+
:type RAINFALL: int
|
|
196
|
+
:ivar SNOW_DEPTH: Snow depth (in or mm).
|
|
197
|
+
:type SNOW_DEPTH: int
|
|
198
|
+
:ivar EVAP_INFIL_LOSS: Evaporation and infiltration loss rate (in/day or mm/day).
|
|
199
|
+
:type EVAP_INFIL_LOSS: int
|
|
200
|
+
:ivar RUNOFF_FLOW: Runoff flow (flow units).
|
|
201
|
+
:type RUNOFF_FLOW: int
|
|
202
|
+
:ivar DRY_WEATHER_INFLOW: Dry weather inflow (flow units).
|
|
203
|
+
:type DRY_WEATHER_INFLOW: int
|
|
204
|
+
:ivar GROUNDWATER_INFLOW: Groundwater inflow (flow units).
|
|
205
|
+
:type GROUNDWATER_INFLOW: int
|
|
206
|
+
:ivar RDII_INFLOW: Rainfall Derived Infiltration and Inflow (RDII) (flow units).
|
|
207
|
+
:type RDII_INFLOW: int
|
|
208
|
+
:ivar DIRECT_INFLOW: Direct inflow (flow units).
|
|
209
|
+
:type DIRECT_INFLOW: int
|
|
210
|
+
:ivar TOTAL_LATERAL_INFLOW: Total lateral inflow; sum of variables 4 to 8 (flow units).
|
|
211
|
+
:type TOTAL_LATERAL_INFLOW: int
|
|
212
|
+
:ivar FLOOD_LOSSES: Flooding losses (flow units).
|
|
213
|
+
:type FLOOD_LOSSES: int
|
|
214
|
+
:ivar OUTFALL_FLOWS: Outfall flow (flow units).
|
|
215
|
+
:type OUTFALL_FLOWS: int
|
|
216
|
+
:ivar VOLUME_STORED: Volume stored in storage nodes (ft3 or m3).
|
|
217
|
+
:type VOLUME_STORED: int
|
|
218
|
+
:ivar EVAPORATION_RATE: Evaporation rate (in/day or mm/day).
|
|
219
|
+
:type EVAPORATION_RATE: int
|
|
220
|
+
"""
|
|
221
|
+
AIR_TEMP = ...
|
|
222
|
+
RAINFALL = ...
|
|
223
|
+
SNOW_DEPTH = ...
|
|
224
|
+
EVAP_INFIL_LOSS = ...
|
|
225
|
+
RUNOFF_FLOW = ...
|
|
226
|
+
DRY_WEATHER_INFLOW = ...
|
|
227
|
+
GROUNDWATER_INFLOW = ...
|
|
228
|
+
RDII_INFLOW = ...
|
|
229
|
+
DIRECT_INFLOW = ...
|
|
230
|
+
TOTAL_LATERAL_INFLOW = ...
|
|
231
|
+
FLOOD_LOSSES = ...
|
|
232
|
+
OUTFALL_FLOWS = ...
|
|
233
|
+
VOLUME_STORED = ...
|
|
234
|
+
EVAPORATION_RATE = ...
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
class SWMMOutputException(Exception):
|
|
238
|
+
"""
|
|
239
|
+
Exception class for SWMM output file processing errors.
|
|
240
|
+
"""
|
|
241
|
+
def __init__(self, message: str) -> None:
|
|
242
|
+
"""
|
|
243
|
+
Constructor to initialize the exception message.
|
|
244
|
+
|
|
245
|
+
:param message: Error message.
|
|
246
|
+
:type message: str
|
|
247
|
+
"""
|
|
248
|
+
...
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
class Output:
|
|
253
|
+
"""
|
|
254
|
+
Class to read and process the output file generated by the SWMM simulation.
|
|
255
|
+
|
|
256
|
+
:cvar _output_file_handle: Handle to the SWMM output file.
|
|
257
|
+
:cvar _version: Version of the SWMM output file.
|
|
258
|
+
:cvar _units: Unit system used in the SWMM output file.
|
|
259
|
+
:cvar _flow_units: Flow units used in the SWMM output file.
|
|
260
|
+
:cvar _output_size: Size of the project in the SWMM output file.
|
|
261
|
+
:cvar _pollutant_units: Pollutant units used in the SWMM output file.
|
|
262
|
+
:cvar _start_date: Start date of the simulation in the SWMM output file.
|
|
263
|
+
:cvar _report_step: Report step size in seconds.
|
|
264
|
+
:cvar _num_periods: Number of reporting periods.
|
|
265
|
+
:cvar _times: Times of the simulation in the SWMM output file.
|
|
266
|
+
"""
|
|
267
|
+
def __init__(self, output_file: str) -> None:
|
|
268
|
+
"""
|
|
269
|
+
Constructor to open the SWMM output file.
|
|
270
|
+
|
|
271
|
+
:param output_file: Path to the SWMM output file.
|
|
272
|
+
:type output_file: str
|
|
273
|
+
"""
|
|
274
|
+
...
|
|
275
|
+
|
|
276
|
+
def __enter__(self): # -> Self@Output:
|
|
277
|
+
"""
|
|
278
|
+
Method to return the SWMM output file instance.
|
|
279
|
+
"""
|
|
280
|
+
...
|
|
281
|
+
|
|
282
|
+
def __exit__(self, exc_type, exc_value, traceback): # -> None:
|
|
283
|
+
"""
|
|
284
|
+
Method to close the SWMM output file instance.
|
|
285
|
+
"""
|
|
286
|
+
...
|
|
287
|
+
|
|
288
|
+
@property
|
|
289
|
+
def version(self) -> int:
|
|
290
|
+
"""
|
|
291
|
+
Method to get the version of the SWMM output file.
|
|
292
|
+
|
|
293
|
+
:return: Version of the SWMM output file.
|
|
294
|
+
:rtype: str
|
|
295
|
+
"""
|
|
296
|
+
...
|
|
297
|
+
|
|
298
|
+
@property
|
|
299
|
+
def output_size(self) -> Dict[str, int]:
|
|
300
|
+
"""
|
|
301
|
+
Method to get the size of the project in the SWMM output file.
|
|
302
|
+
|
|
303
|
+
:return: Size of the project in the SWMM output file.
|
|
304
|
+
:rtype: int
|
|
305
|
+
"""
|
|
306
|
+
...
|
|
307
|
+
|
|
308
|
+
@property
|
|
309
|
+
def units(self) -> Tuple[UnitSystem, FlowUnits, Optional[List[ConcentrationUnits]]]:
|
|
310
|
+
"""
|
|
311
|
+
Method to get the unit system used in the SWMM output file.
|
|
312
|
+
|
|
313
|
+
:return: Tuple of the unit system, flow units, and pollutant units used in the SWMM output file.
|
|
314
|
+
:rtype: Tuple[UnitSystem, FlowUnits, Optional[List[ConcentrationUnits]]]
|
|
315
|
+
"""
|
|
316
|
+
...
|
|
317
|
+
|
|
318
|
+
@property
|
|
319
|
+
def flow_units(self) -> FlowUnits:
|
|
320
|
+
"""
|
|
321
|
+
Method to get the flow units used in the SWMM output file.
|
|
322
|
+
|
|
323
|
+
:return: Flow units used in the SWMM output file.
|
|
324
|
+
:rtype: FlowUnits
|
|
325
|
+
"""
|
|
326
|
+
...
|
|
327
|
+
|
|
328
|
+
@property
|
|
329
|
+
def pollutant_units(self) -> List[ConcentrationUnits]:
|
|
330
|
+
"""
|
|
331
|
+
Method to get the pollutant units used in the SWMM output file.
|
|
332
|
+
|
|
333
|
+
:return: Pollutant units used in the SWMM output file.
|
|
334
|
+
:rtype: List[ConcentrationUnits]
|
|
335
|
+
"""
|
|
336
|
+
...
|
|
337
|
+
|
|
338
|
+
@property
|
|
339
|
+
def start_date(self) -> datetime:
|
|
340
|
+
"""
|
|
341
|
+
Method to get the start date of the simulation in the SWMM output file.
|
|
342
|
+
|
|
343
|
+
:return: Start date of the simulation in the SWMM output file.
|
|
344
|
+
:rtype: datetime
|
|
345
|
+
"""
|
|
346
|
+
...
|
|
347
|
+
|
|
348
|
+
@property
|
|
349
|
+
def times(self) -> List[datetime]:
|
|
350
|
+
"""
|
|
351
|
+
Method to get the times of the simulation in the SWMM output file.
|
|
352
|
+
|
|
353
|
+
:return: Times of the simulation in the SWMM output file.
|
|
354
|
+
:rtype: List[datetime]
|
|
355
|
+
"""
|
|
356
|
+
...
|
|
357
|
+
|
|
358
|
+
def get_num_variables(self, element_type: ElementType) -> int:
|
|
359
|
+
"""
|
|
360
|
+
Method to get the number of variables for an element type in the SWMM output file.
|
|
361
|
+
|
|
362
|
+
:param element_type: Type of the element.
|
|
363
|
+
:type element_type: int
|
|
364
|
+
|
|
365
|
+
:return: Number of variables for the element type.
|
|
366
|
+
:rtype: int
|
|
367
|
+
"""
|
|
368
|
+
...
|
|
369
|
+
|
|
370
|
+
def get_variable_code(self, element_type: ElementType, variable_index: int) -> int:
|
|
371
|
+
"""
|
|
372
|
+
Method to get the variable code for an element type in the SWMM output file.
|
|
373
|
+
|
|
374
|
+
:param element_type: Type of the element.
|
|
375
|
+
:type element_type: int
|
|
376
|
+
|
|
377
|
+
:param variable_index: Index of the variable.
|
|
378
|
+
:type variable_index: int
|
|
379
|
+
|
|
380
|
+
:return: Variable code for the element type.
|
|
381
|
+
:rtype: int
|
|
382
|
+
"""
|
|
383
|
+
...
|
|
384
|
+
|
|
385
|
+
def get_variable_codes(self, element_type: ElementType) -> List[int]:
|
|
386
|
+
"""
|
|
387
|
+
Method to get the variable codes for an element type in the SWMM output file.
|
|
388
|
+
|
|
389
|
+
:param element_type: Type of the element.
|
|
390
|
+
:type element_type: int
|
|
391
|
+
|
|
392
|
+
:return: Variable codes for the element type.
|
|
393
|
+
:rtype: List[int]
|
|
394
|
+
"""
|
|
395
|
+
...
|
|
396
|
+
|
|
397
|
+
def get_num_properties(self, element_type: ElementType) -> int:
|
|
398
|
+
"""
|
|
399
|
+
Method to get the number of properties for an element type in the SWMM output file.
|
|
400
|
+
|
|
401
|
+
:param element_type: Type of the element.
|
|
402
|
+
:type element_type: int
|
|
403
|
+
|
|
404
|
+
:return: Number of properties for the element type.
|
|
405
|
+
:rtype: int
|
|
406
|
+
"""
|
|
407
|
+
...
|
|
408
|
+
|
|
409
|
+
def get_property_code(self, element_type: ElementType, property_index: int) -> int:
|
|
410
|
+
"""
|
|
411
|
+
Method to get the property code for an element type in the SWMM output file.
|
|
412
|
+
|
|
413
|
+
:param element_type: Type of the element.
|
|
414
|
+
:type element_type: int
|
|
415
|
+
|
|
416
|
+
:param property_index: Index of the property.
|
|
417
|
+
:type property_index: int
|
|
418
|
+
|
|
419
|
+
:return: Property code for the element type.
|
|
420
|
+
:rtype: int
|
|
421
|
+
"""
|
|
422
|
+
...
|
|
423
|
+
|
|
424
|
+
def get_property_codes(self, element_type: ElementType) -> List[int]:
|
|
425
|
+
"""
|
|
426
|
+
Method to get the property codes for an element type in the SWMM output file.
|
|
427
|
+
|
|
428
|
+
:param element_type: Type of the element.
|
|
429
|
+
:type element_type: int
|
|
430
|
+
|
|
431
|
+
:return: Property codes for the element type.
|
|
432
|
+
:rtype: List[int]
|
|
433
|
+
"""
|
|
434
|
+
...
|
|
435
|
+
|
|
436
|
+
def get_property_value(self, element_type: ElementType, element_index: int, property_code: int) -> float:
|
|
437
|
+
"""
|
|
438
|
+
Method to get the property value for an element in the SWMM output file.
|
|
439
|
+
|
|
440
|
+
:param element_type: Type of the element.
|
|
441
|
+
:type element_type: int
|
|
442
|
+
|
|
443
|
+
:param element_index: Index of the element.
|
|
444
|
+
:type element_index: int
|
|
445
|
+
|
|
446
|
+
:param property_code: Property code.
|
|
447
|
+
:type property_code: int
|
|
448
|
+
|
|
449
|
+
:return: Property value for the element.
|
|
450
|
+
:rtype: float
|
|
451
|
+
"""
|
|
452
|
+
...
|
|
453
|
+
|
|
454
|
+
def get_property_values(self, element_type: ElementType, element_index: int) -> List[float]:
|
|
455
|
+
"""
|
|
456
|
+
Method to get the property values for an element type in the SWMM output file.
|
|
457
|
+
|
|
458
|
+
:param element_type: Type of the element.
|
|
459
|
+
:type element_type: int
|
|
460
|
+
|
|
461
|
+
:param element_index: Element index.
|
|
462
|
+
:type element_index: int
|
|
463
|
+
|
|
464
|
+
:return: Property values for the element type.
|
|
465
|
+
:rtype: List[float]
|
|
466
|
+
"""
|
|
467
|
+
...
|
|
468
|
+
|
|
469
|
+
def get_time_attribute(self, time_attribute: TimeAttribute) -> int:
|
|
470
|
+
"""
|
|
471
|
+
Method to get the temporal attributes of the simulation in the SWMM output file.
|
|
472
|
+
|
|
473
|
+
:param time_attribute: Temporal attribute.
|
|
474
|
+
:type time_attribute: TimeAttribute
|
|
475
|
+
|
|
476
|
+
:return: Temporal attributes of the simulation in the SWMM output file.
|
|
477
|
+
:rtype: int
|
|
478
|
+
|
|
479
|
+
"""
|
|
480
|
+
...
|
|
481
|
+
|
|
482
|
+
def get_element_name(self, element_type: ElementType, element_index: int) -> str:
|
|
483
|
+
"""
|
|
484
|
+
Method to get the name of an element in the SWMM output file.
|
|
485
|
+
|
|
486
|
+
:param element_type: Type of the element.
|
|
487
|
+
:type element_type: int
|
|
488
|
+
|
|
489
|
+
:param indelement_indexex: Index of the element.
|
|
490
|
+
:type element_index: int
|
|
491
|
+
|
|
492
|
+
:return: Name of the element.
|
|
493
|
+
:rtype: str
|
|
494
|
+
"""
|
|
495
|
+
...
|
|
496
|
+
|
|
497
|
+
def get_element_names(self, element_type: ElementType) -> List[str]:
|
|
498
|
+
"""
|
|
499
|
+
Method to get the names of all elements of a given type in the SWMM output file.
|
|
500
|
+
|
|
501
|
+
:param element_type: Type of the element.
|
|
502
|
+
:type element_type: int
|
|
503
|
+
|
|
504
|
+
:return: Names of all elements of the given type.
|
|
505
|
+
:rtype: List[str]
|
|
506
|
+
"""
|
|
507
|
+
...
|
|
508
|
+
|
|
509
|
+
def get_subcatchment_timeseries(self, element_index: Union[int, str], attribute: SubcatchAttribute, start_date_index: int = ..., end_date_index: int = ..., sub_index: int = ...) -> Dict[datetime, float]:
|
|
510
|
+
"""
|
|
511
|
+
Method to get the time series data for a subcatchment attribute in the SWMM output file.
|
|
512
|
+
|
|
513
|
+
:param element_index: Index of the subcatchment.
|
|
514
|
+
:type element_index: int or str
|
|
515
|
+
|
|
516
|
+
:param attribute: Subcatchment attribute.
|
|
517
|
+
:type attribute: SubcatchAttribute
|
|
518
|
+
|
|
519
|
+
:param start_date_index: Start date index. Default is 0.
|
|
520
|
+
:type start_date_index: int
|
|
521
|
+
|
|
522
|
+
:param end_date_index: End date index. Default is the last date index.
|
|
523
|
+
:type end_date_index: int
|
|
524
|
+
|
|
525
|
+
:param sub_index: Attribute index for the subcatchment non enumerated attributes primarily for the pollutants
|
|
526
|
+
:type sub_index: int
|
|
527
|
+
|
|
528
|
+
:return: Time series data for the subcatchment attribute.
|
|
529
|
+
:rtype: Dict[datetime, double]
|
|
530
|
+
"""
|
|
531
|
+
...
|
|
532
|
+
|
|
533
|
+
def get_node_timeseries(self, element_index: Union[int, str], attribute: NodeAttribute, start_date_index: int = ..., end_date_index: int = ..., sub_index: int = ...) -> Dict[datetime, float]:
|
|
534
|
+
"""
|
|
535
|
+
Method to get the time series data for a node attribute in the SWMM output file.
|
|
536
|
+
|
|
537
|
+
:param element_index: Index of the node.
|
|
538
|
+
:type element_index: int or str
|
|
539
|
+
|
|
540
|
+
:param attribute: Node attribute.
|
|
541
|
+
:type attribute: NodeAttribute
|
|
542
|
+
|
|
543
|
+
:param start_date_index: Start date index. Default is 0.
|
|
544
|
+
:type start_date_index: int
|
|
545
|
+
|
|
546
|
+
:param end_date_index: End date index. Default is the last date index.
|
|
547
|
+
:type end_date_index: int
|
|
548
|
+
|
|
549
|
+
:param sub_index: Attribute index for the subcatchment non enumerated attributes primarily for the pollutants
|
|
550
|
+
:type sub_index: int
|
|
551
|
+
|
|
552
|
+
:return: Time series data for the node attribute.
|
|
553
|
+
:rtype: Dict[datetime, double]
|
|
554
|
+
"""
|
|
555
|
+
...
|
|
556
|
+
|
|
557
|
+
def get_link_timeseries(self, element_index: Union[int, str], attribute: LinkAttribute, start_date_index: int = ..., end_date_index: int = ..., sub_index: int = ...) -> Dict[datetime, float]:
|
|
558
|
+
"""
|
|
559
|
+
Method to get the time series data for a link attribute in the SWMM output file.
|
|
560
|
+
|
|
561
|
+
:param element_index: Index of the link.
|
|
562
|
+
:type element_index: int
|
|
563
|
+
|
|
564
|
+
:param attribute: Link attribute.
|
|
565
|
+
:type attribute: LinkAttribute
|
|
566
|
+
|
|
567
|
+
:param start_date_index: Start date index. Default is 0.
|
|
568
|
+
:type start_date_index: int
|
|
569
|
+
|
|
570
|
+
:param end_date_index: End date index. Default is the last date index.
|
|
571
|
+
:type end_date_index: int
|
|
572
|
+
|
|
573
|
+
:param sub_index: Attribute index for the subcatchment non enumerated attributes primarily for the pollutants
|
|
574
|
+
:type sub_index: int
|
|
575
|
+
|
|
576
|
+
:return: Time series data for the link attribute.
|
|
577
|
+
:rtype: Dict[datetime, double]
|
|
578
|
+
"""
|
|
579
|
+
...
|
|
580
|
+
|
|
581
|
+
def get_system_timeseries(self, attribute: SystemAttribute, start_date_index: int = ..., end_date_index: int = ..., sub_index: int = ...) -> Dict[datetime, float]:
|
|
582
|
+
"""
|
|
583
|
+
Method to get the time series data for a system attribute in the SWMM output file.
|
|
584
|
+
|
|
585
|
+
:param attribute: System attribute.
|
|
586
|
+
:type attribute: SystemAttribute
|
|
587
|
+
|
|
588
|
+
:param start_date_index: Start date index. Default is 0.
|
|
589
|
+
:type start_date_index: int
|
|
590
|
+
|
|
591
|
+
:param end_date_index: End date index. Default is the last date index.
|
|
592
|
+
:type end_date_index: int
|
|
593
|
+
|
|
594
|
+
:param sub_index: Attribute index for the subcatchment non enumerated attributes primarily for the pollutants
|
|
595
|
+
:type sub_index: int
|
|
596
|
+
|
|
597
|
+
:return: Time series data for the system attribute.
|
|
598
|
+
:rtype: Dict[datetime, double]
|
|
599
|
+
"""
|
|
600
|
+
...
|
|
601
|
+
|
|
602
|
+
def get_subcatchment_values_by_time_and_attribute(self, time_index: int, attribute: SubcatchAttribute, sub_index: int = ...) -> Dict[str, float]:
|
|
603
|
+
"""
|
|
604
|
+
Method to get the subcatchment values for all subcatchments for a given time index and attribute.
|
|
605
|
+
|
|
606
|
+
:param time_index: Time index.
|
|
607
|
+
:type time_index: int
|
|
608
|
+
|
|
609
|
+
:param attribute: Subcatchment attribute.
|
|
610
|
+
:type attribute: SubcatchAttribute
|
|
611
|
+
|
|
612
|
+
:param sub_index: Attribute index for the subcatchment non enumerated attributes primarily for the pollutants
|
|
613
|
+
:type sub_index: int
|
|
614
|
+
|
|
615
|
+
:return: Subcatchment values for all subcatchments.
|
|
616
|
+
:rtype: Dict[str, float]
|
|
617
|
+
"""
|
|
618
|
+
...
|
|
619
|
+
|
|
620
|
+
def get_node_values_by_time_and_attribute(self, time_index: int, attribute: NodeAttribute, sub_index: int = ...) -> Dict[str, float]:
|
|
621
|
+
"""
|
|
622
|
+
Method to get the node values for all nodes for a given time index and attribute.
|
|
623
|
+
|
|
624
|
+
:param time_index: Time index.
|
|
625
|
+
:type time_index: int
|
|
626
|
+
|
|
627
|
+
:param attribute: Node attribute.
|
|
628
|
+
:type attribute: NodeAttribute
|
|
629
|
+
|
|
630
|
+
:param sub_index: Attribute index for the subcatchment non enumerated attributes primarily for the pollutants
|
|
631
|
+
:type sub_index: int
|
|
632
|
+
|
|
633
|
+
:return: Node values for all nodes.
|
|
634
|
+
:rtype: Dict[str, float]
|
|
635
|
+
"""
|
|
636
|
+
...
|
|
637
|
+
|
|
638
|
+
def get_link_values_by_time_and_attribute(self, time_index: int, attribute: LinkAttribute, sub_index: int = ...) -> Dict[str, float]:
|
|
639
|
+
"""
|
|
640
|
+
Method to get the link values for all links for a given time index and attribute.
|
|
641
|
+
|
|
642
|
+
:param time_index: Time index.
|
|
643
|
+
:type time_index: int
|
|
644
|
+
|
|
645
|
+
:param attribute: Link attribute.
|
|
646
|
+
:type attribute: LinkAttribute
|
|
647
|
+
|
|
648
|
+
:param sub_index: Attribute index for the subcatchment non enumerated attributes primarily for the pollutants
|
|
649
|
+
:type sub_index: int
|
|
650
|
+
|
|
651
|
+
:return: Link values for all links.
|
|
652
|
+
:rtype: Dict[str, float]
|
|
653
|
+
"""
|
|
654
|
+
...
|
|
655
|
+
|
|
656
|
+
def get_system_values_by_time_and_attribute(self, time_index: int, attribute: SystemAttribute, sub_index: int = ...) -> Dict[str, float]:
|
|
657
|
+
"""
|
|
658
|
+
Method to get the system values for a given time index and attribute.
|
|
659
|
+
|
|
660
|
+
:param time_index: Time index.
|
|
661
|
+
:type time_index: int
|
|
662
|
+
|
|
663
|
+
:param attribute: System attribute.
|
|
664
|
+
:type attribute: SystemAttribute
|
|
665
|
+
|
|
666
|
+
:param sub_index: Attribute index for the subcatchment non enumerated attributes primarily for the pollutants
|
|
667
|
+
:type sub_index: int
|
|
668
|
+
|
|
669
|
+
:return: System values.
|
|
670
|
+
:rtype: Dict[str, float]
|
|
671
|
+
"""
|
|
672
|
+
...
|
|
673
|
+
|
|
674
|
+
def get_subcatchment_values_by_time_and_element_index(self, time_index: int, element_index: Union[int, str]) -> Dict[str, float]:
|
|
675
|
+
"""
|
|
676
|
+
Method to get all attributes of a given subcatchment for specified time.
|
|
677
|
+
|
|
678
|
+
:param time_index: Time index.
|
|
679
|
+
:type time_index: int
|
|
680
|
+
|
|
681
|
+
:param element_index: Index of the subcatchment.
|
|
682
|
+
:type element_index: int or str
|
|
683
|
+
|
|
684
|
+
:return: Dictionary of subcatchment attributes.
|
|
685
|
+
:rtype: Dict[str, float]
|
|
686
|
+
"""
|
|
687
|
+
...
|
|
688
|
+
|
|
689
|
+
def get_node_values_by_time_and_element_index(self, time_index: int, element_index: Union[int, str]) -> Dict[str, float]:
|
|
690
|
+
"""
|
|
691
|
+
Method to get all attributes of a given node for specified time.
|
|
692
|
+
|
|
693
|
+
:param time_index: Time index.
|
|
694
|
+
:type time_index: int
|
|
695
|
+
|
|
696
|
+
:param element_index: Index of the node.
|
|
697
|
+
:type element_index: int
|
|
698
|
+
|
|
699
|
+
:return: Dictionary of node attributes.
|
|
700
|
+
:rtype: Dict[str, float]
|
|
701
|
+
"""
|
|
702
|
+
...
|
|
703
|
+
|
|
704
|
+
def get_link_values_by_time_and_element_index(self, time_index: int, element_index: Union[int, str]) -> Dict[str, float]:
|
|
705
|
+
"""
|
|
706
|
+
Method to get all attributes of a given link for specified time.
|
|
707
|
+
|
|
708
|
+
:param time_index: Time index.
|
|
709
|
+
:type time_index: int
|
|
710
|
+
|
|
711
|
+
:param element_index: Index of the link.
|
|
712
|
+
:type element_index: int, str
|
|
713
|
+
|
|
714
|
+
:return: Dictionary of link attributes.
|
|
715
|
+
:rtype: Dict[str, float]
|
|
716
|
+
"""
|
|
717
|
+
...
|
|
718
|
+
|
|
719
|
+
def get_system_values_by_time(self, time_index: int) -> Dict[str, float]:
|
|
720
|
+
"""
|
|
721
|
+
Method to get all attributes of the system for specified time.
|
|
722
|
+
|
|
723
|
+
:param time_index: Time index.
|
|
724
|
+
:type time_index: int
|
|
725
|
+
|
|
726
|
+
:return: Dictionary of system attributes.
|
|
727
|
+
:rtype: Dict[str, float]
|
|
728
|
+
"""
|
|
729
|
+
...
|
|
730
|
+
|
|
731
|
+
|
|
732
|
+
|