API Reference#
This page is generated from the Cython type-stub files (.pyi) so
signatures and docstrings are always in sync with the compiled extensions.
Each entry below lists the public class for the module; private helpers
prefixed with _ are intentionally hidden.
For task-oriented documentation see the User Guide.
openswmm#
The top-level package. Importing openswmm configures the
platform-specific shared-library search path and re-exports the legacy
SWMM 5 symbols for backward compatibility.
openswmm – Python bindings for the OpenSWMM stormwater modelling engine.
- author:
Caleb Buahin
- copyright:
Copyright (c) 2026 Caleb Buahin
- license:
MIT
Subpackages#
- legacy.engine
Legacy EPA SWMM 5.x solver bindings (Cython).
- legacy.output
Legacy EPA SWMM 5.x binary output reader (Cython).
- engine
New data-oriented engine 6.x bindings (Cython).
This top-level package additionally:
Configures the platform-specific shared-library search path so the bundled C/C++ shared libraries can be located by the dynamic linker.
Resolves the package version string into
__version__.Re-exports the legacy engine and legacy output public symbols when their compiled Cython extensions are available, for backward compatibility with pre-6.x callers.
OpenSWMM 6 — refactored engine#
The openswmm.engine subpackage exposes the new, refactored
OpenSWMM 6 engine — the recommended API for all new work.
All domain access is class-based: each class takes an active
Solver in its constructor and may only be
called when the solver is in an appropriate EngineState.
See also
OpenSWMM 6 User Guide (refactored engine) — task-oriented user guide for this engine.
openswmm.engine#
- author:
Caleb Buahin
- copyright:
Copyright (c) 2026 Caleb Buahin
- license:
MIT
Cython bindings for the OpenSWMM Engine 6.0 C API.
The package is split by domain to mirror the C header organisation:
Python class |
C header |
Contents |
|---|---|---|
|
|
Engine lifecycle, timing, error reporting |
|
|
Programmatic model construction |
|
|
In-place model editing (delete + type conversion) |
|
|
Node get/set, lateral inflow, bulk arrays |
|
|
Link get/set, control settings, bulk arrays |
|
|
Cross-section geometry kernels (standalone or per-link) |
|
|
Subcatchment runoff, rainfall override |
|
|
Rain gage rainfall get/set |
|
|
Hot start save/open/apply/close |
|
|
Continuity error queries |
|
|
Cumulative simulation statistics |
|
|
Binary output file reader |
|
|
Pollutant management and quality injection |
|
|
Landuse, buildup, washoff, treatment |
|
|
Time series, curves, patterns |
|
|
External inflows, DWF, RDII |
|
|
Control rules and direct actions |
|
|
Advanced runtime forcing (mode + persistence) |
|
|
Transects, streets, inlets, LIDs |
|
|
Coordinates, CRS, vertices, polygons |
|
|
2D surface mesh / coupled overland flow |
|
|
GeoPackage import/export (requires |
Quick start#
from openswmm.engine import Solver, Nodes, Links
with Solver("model.inp", "model.rpt", "model.out") as s:
nodes = Nodes(s)
links = Links(s)
while s.state == EngineState.RUNNING:
if s.step() != 0:
break
depths = nodes.get_depths_bulk() # numpy array
flows = links.get_flows_bulk() # numpy array
Programmatic model building#
from openswmm.engine import ModelBuilder, NodeType, LinkType, XSectShape
m = ModelBuilder()
m.add_node("J1", NodeType.JUNCTION)
m.add_node("OUT1", NodeType.OUTFALL)
m.add_link("C1", LinkType.CONDUIT)
m.set_link_nodes(0, 0, 1)
m.set_link_length(0, 300.0)
m.set_link_roughness(0, 0.013)
m.set_link_xsect(0, XSectShape.CIRCULAR, 1.0)
m.validate()
m.finalize()
solver = m.to_solver()
solver.start()
while solver.state == EngineState.RUNNING:
if solver.step() != 0:
break
pass
solver.end()
solver.destroy()
Advanced forcing#
from openswmm.engine import Solver, Nodes, Forcing, ForcingMode
with Solver("model.inp", "model.rpt", "model.out") as s:
nodes = Nodes(s)
forcing = Forcing(s)
j1 = nodes.get_index("J1")
forcing.node_lat_inflow(j1, 1.5, ForcingMode.REPLACE, persist=True)
while s.state == EngineState.RUNNING:
if s.step() != 0:
break
pass
forcing.clear_all()
Solver lifecycle#
Engine Lifecycle (Pythonic v1 surface)#
- author:
Caleb Buahin
- copyright:
Copyright (c) 2026 Caleb Buahin
- license:
MIT
Type stubs for openswmm.engine._solver.
- class Event(start, end)#
Bases:
NamedTupleCreate new instance of Event(start, end)
- class EventsView(solver)#
Bases:
MutableSequence[Event][EVENTS]block as aMutableSequence. SeeSolver.events.- Parameters:
solver (Solver)
- append(value)#
S.append(value) – append value to the end of the sequence
- Parameters:
value (Any)
- Return type:
None
- clear() None -- remove all items from S#
- Return type:
None
- class SimulationOptions(solver)#
Bases:
MutableMapping[str,str]View over the
[OPTIONS]block. SeeSolver.options.- Parameters:
solver (Solver)
- ext: _OptionsExtView#
- class Solver(inp='', rpt=None, out=None, *, plugin_lib=None)#
Bases:
objectSWMM engine lifecycle manager.
Accepts
strorpathlib.Pathfor every file argument.from datetime import timedelta from openswmm.engine import Solver with Solver("model.inp", "model.rpt", "model.out") as s: for elapsed in s.steps(): if elapsed >= timedelta(hours=24): break
- Parameters:
inp (_PathLike)
rpt (Optional[_PathLike])
out (Optional[_PathLike])
plugin_lib (Optional[_PathLike])
- property climate: Climate#
- close()#
- Return type:
None
- close_runoff_interface()#
- Return type:
None
- create()#
- Return type:
None
- destroy()#
- Return type:
None
- property editor: ModelEditor#
- end()#
- Return type:
None
- property events: EventsView#
- property flow_units: FlowUnits#
The model’s flow-unit system, resolved from
FLOW_UNITS.- Returns:
Active flow-unit system; read this to interpret the project-unit magnitudes returned by all getters.
- Return type:
L{FlowUnits}
- property infrastructure: Infrastructure#
- initialize()#
- Return type:
None
- property mass_balance: MassBalance#
- property options: SimulationOptions#
- property pollutants: Pollutants#
- report()#
- Return type:
None
- run()#
- Return type:
None
- property save_schedule: SaveSchedule#
- set_progress_callback(callback)#
Register a progress callback receiving the elapsed fraction [0, 1].
- set_step_begin_callback(callback)#
- set_step_end_callback(callback)#
- set_warning_callback(callback)#
- property sim_start_time: datetime#
Resolved simulation start (
swmm_get_start_time).- Return type:
datetime
- property state: EngineState#
- property statistics: Statistics#
- property subcatchments: Subcatchments#
- write_geopackage(path, crs=Ellipsis)#
- class UserFlagDef(name, type, description)#
Bases:
NamedTupleA
[USER_FLAGS]schema definition:(name, type, description).typeis 0=BOOLEAN, 1=INTEGER, 2=REAL, 3=STRING (seeUserFlagType).Create new instance of UserFlagDef(name, type, description)
- class UserFlags(solver)#
Bases:
MutableMapping[str,bool|int|float|str]Typed user-flag mapping. See
Solver.userflags.- Parameters:
solver (Solver)
- clear_value(obj_type, obj_name, flag_name)#
- define(name, type, description='')#
- definitions()#
- Return type:
- get_value(obj_type, obj_name, flag_name)#
- set_value(obj_type, obj_name, flag_name, value)#
- run(inp, rpt=None, out=None, *, plugin_lib=None)#
Run a SWMM simulation start-to-finish. Raises
EngineErroron failure.
- run_with_callback(inp, rpt=None, out=None, callback=None, *, plugin_lib=None)#
Run a SWMM simulation with an optional progress callback. Raises
EngineErroron failure.
Exceptions#
The EngineError hierarchy and the dispatch helper used by
_check(). Each subclass also inherits from a standard-library
exception so idiomatic except IndexError: / except ValueError:
handlers do the right thing.
Type stubs for openswmm.engine._exceptions.
- exception BadHandleError(code, message=Ellipsis)#
Bases:
EngineError,RuntimeError
- exception BadIndexError(code, message=Ellipsis)#
Bases:
EngineError,IndexError
- exception BadParamError(code, message=Ellipsis)#
Bases:
EngineError,ValueError
- exception CRSError(code, message=Ellipsis)#
Bases:
EngineError,ValueError
- exception DependencyError(code, message=Ellipsis)#
Bases:
EngineError,RuntimeError
- exception FileError(code, message=Ellipsis)#
Bases:
EngineError,OSError
- exception HotStartError(code, message=Ellipsis)#
Bases:
EngineError,RuntimeError
- exception LifecycleError(code, message=Ellipsis)#
Bases:
EngineError,RuntimeError
- exception NumericalError(code, message=Ellipsis)#
Bases:
EngineError,RuntimeError
- exception ParseError(code, message=Ellipsis)#
Bases:
EngineError,ValueError
- exception PluginError(code, message=Ellipsis)#
Bases:
EngineError,RuntimeError
- exception StaleObjectError(message=Ellipsis)#
Bases:
LifecycleError- Parameters:
message (str)
- Return type:
None
DateTime conversion#
The low-level C API encode/decode primitives plus the high-level
oadate_to_datetime / datetime_to_oadate helpers used throughout
the bindings.
Type stubs for openswmm.engine._datetime.
Low-level Python bindings around the SWMM DateTime conversion C API
declared in openswmm_datetime.h. SWMM’s native DateTime is a double
whose integer part is days since 1899-12-30 and fractional part is the
time-of-day fraction.
- encode_time(hour, minute, second)#
Type stubs for openswmm.engine._dates.
High-level helpers that convert between SWMM’s native DateTime double
(decimal days since 1899-12-30) and datetime.datetime. The
calendar arithmetic is delegated to the C API in openswmm_datetime.h.
Model construction#
Programmatic Model Building#
- author:
Caleb Buahin
- copyright:
Copyright (c) 2026 Caleb Buahin
- license:
MIT
Type stubs for openswmm.engine._model.
The ModelBuilder class creates a SWMM model entirely through the API
without requiring a .inp file.
- class ModelBuilder#
Bases:
objectBuild a SWMM model programmatically (no
.inpfile).The engine starts in
BUILDINGstate. Useadd_node,add_link, etc. to populate the model, then callfinalizeto transition toINITIALIZED.Note
The
ModelBuilderowns its engine handle untilto_solveris called; the resultingSolverthen takes ownership.Example:
m = ModelBuilder() m.add_node("J1", 0) # JUNCTION m.add_node("OUT1", 1) # OUTFALL m.add_link("C1", 0) # CONDUIT m.set_link_nodes(0, 0, 1) m.set_link_length(0, 300.0) m.set_link_roughness(0, 0.013) m.validate() m.finalize() solver = m.to_solver()
- add_gage(gage_id)#
Add a rain gage to the model.
- add_link(link_id, link_type)#
Add a link to the model.
Valid in
BUILDINGorOPENEDstate.- Parameters:
- Returns:
Error code (
0on success).- Return type:
@see: L{openswmm.engine.LinkType}
- add_node(node_id, node_type)#
Add a node to the model.
Valid in
BUILDINGorOPENEDstate.- Parameters:
- Returns:
Error code (
0on success).- Return type:
@see: L{openswmm.engine.NodeType}
- add_subcatch(sc_id)#
Backward-compatible alias for
add_subcatchment.
- add_subcatchment(sc_id)#
Add a subcatchment to the model.
- add_title_line(line)#
Append a new line to the
[TITLE]section.- Raises:
EngineError – On C API failure.
- Parameters:
line (str)
- Return type:
None
- clear_title()#
Remove all lines from the
[TITLE]section.- Raises:
EngineError – On C API failure.
- Return type:
None
- clear_userflag_value(obj_type, obj_name, flag_name)#
Remove a per-object flag value (idempotent).
- Raises:
EngineError – On C API failure.
- Parameters:
- Return type:
None
- define_userflag(name, type, description='')#
Define (or redefine) a user-flag schema entry (
[USER_FLAGS]).- Parameters:
- Raises:
EngineError – On empty name or invalid type.
- Return type:
None
- files_get(key)#
Read one [FILES] field by key.
- files_set(key, value)#
Write one [FILES] field by key.
- finalize()#
Finalize the model – build connectivity and allocate arrays.
Transitions to
INITIALIZEDstate.- Returns:
None
- Return type:
None
- Raises:
EngineError – If finalization fails.
- property generation: int#
Monotonic counter bumped on every structural mutation.
Mirrors
Solver.generationso wrapper objects minted from aModelBuildercan detect staleness the same way.
- get_crs()#
Return the model’s coordinate reference system string.
- Returns:
CRS string (EPSG identifier, PROJ string, or WKT).
- Raises:
EngineError – On C API failure.
- Return type:
- get_file_path(role, owner=Ellipsis)#
Read an external-file slot’s
(absolute, original)paths.
- get_option(key)#
Return a SWMM option value as a string.
- Raises:
EngineError – On unknown key.
- Parameters:
key (str)
- Return type:
- get_option_ext(key)#
Return the value of an extension option (unknown to base SWMM).
- Raises:
EngineError – On unknown key.
- Parameters:
key (str)
- Return type:
- get_title_count()#
Number of lines in the
[TITLE]section.- Raises:
EngineError – On C API failure.
- Return type:
- get_title_line(index)#
Return a title line by zero-based index.
- Raises:
EngineError – On bad index.
- Parameters:
index (int)
- Return type:
- get_userflag_bool(name)#
Return a boolean user flag value.
- Raises:
EngineError – On unknown flag.
- Parameters:
name (str)
- Return type:
- get_userflag_def(index)#
Return
(name, type, description)for the definition atindex.
- get_userflag_int(name)#
Return an integer user flag value.
- Raises:
EngineError – On unknown flag.
- Parameters:
name (str)
- Return type:
- get_userflag_real(name)#
Return a real-valued user flag.
- Raises:
EngineError – On unknown flag.
- Parameters:
name (str)
- Return type:
- get_userflag_value(obj_type, obj_name, flag_name)#
Return a per-object flag value string, or
Nonewhen unassigned.- Raises:
EngineError – On C API failure.
- Parameters:
- Return type:
str | None
- property handle: int#
Raw engine handle as an integer (for use by
ModelEditor).- Returns:
The underlying C engine pointer cast to an integer.
- Return type:
- plugin_get(idx)#
Read one [PLUGINS] row by index.
- plugin_remove(path_or_id)#
Remove the [PLUGINS] row matching
path_or_id.- Parameters:
path_or_id (str) – Library path, plugin id, or
id:versionstring.- Return type:
None
- plugin_set(path_or_id, args='')#
Add or replace a [PLUGINS] row keyed by path/id.
- plugins_count()#
Return the number of [PLUGINS] entries on the engine.
- Returns:
Plugin count.
- Return type:
- pop_last_link(link_id)#
Remove the most recently added link (undo-of-add).
Valid in
BUILDINGorOPENEDstate. Thelink_idmust match the current tail; otherwiseSWMM_ERR_BADINDEXis returned.
- pop_last_node(node_id)#
Remove the most recently added node (undo-of-add).
Valid in
BUILDINGorOPENEDstate. Thenode_idmust match the current tail; otherwiseSWMM_ERR_BADINDEXis returned. ReturnsSWMM_ERR_BADPARAMif any link still references the tail node – pop those links first viapop_last_link.
- set_file_path(role, new_path, owner=Ellipsis)#
Set an external-file slot’s path token (empty clears it).
- set_link_length(idx, length)#
Set the length of a conduit link.
- Parameters:
- Returns:
None
- Return type:
None
- Raises:
EngineError – On C API failure.
- set_link_nodes(idx, from_node, to_node)#
Set the upstream and downstream nodes for a link.
- Parameters:
- Returns:
None
- Return type:
None
- Raises:
EngineError – On C API failure.
- set_link_roughness(idx, n)#
Set Manning’s roughness coefficient for a conduit.
- Parameters:
- Returns:
None
- Return type:
None
- Raises:
EngineError – On C API failure.
- set_link_xsect(idx, shape, g1, g2=0, g3=0, g4=0)#
Set the cross-section geometry of a conduit.
- Parameters:
- Returns:
None
- Return type:
None
- Raises:
EngineError – On C API failure.
@see: L{openswmm.engine.XSectShape}
- set_node_invert(idx, elev)#
Set the invert elevation of a node.
- Parameters:
- Returns:
None
- Return type:
None
- Raises:
EngineError – On C API failure.
- set_node_max_depth(idx, depth)#
Set the maximum depth of a node.
- Parameters:
- Returns:
None
- Return type:
None
- Raises:
EngineError – On C API failure.
- set_option(key, value)#
Set a SWMM option.
- Raises:
EngineError – On unknown key or invalid value.
- Parameters:
- Return type:
None
- set_option_ext(key, value)#
Set the value of an extension option.
- Raises:
EngineError – On C API failure.
- Parameters:
- Return type:
None
- set_title(text)#
Replace all title lines with new text. Newlines split lines.
- Raises:
EngineError – On C API failure.
- Parameters:
text (str)
- Return type:
None
- set_userflag_bool(name, value)#
Set a boolean user flag.
- Raises:
EngineError – On C API failure.
- Parameters:
- Return type:
None
- set_userflag_int(name, value)#
Set an integer user flag.
- Raises:
EngineError – On C API failure.
- Parameters:
- Return type:
None
- set_userflag_real(name, value)#
Set a real-valued user flag.
- Raises:
EngineError – On C API failure.
- Parameters:
- Return type:
None
- set_userflag_value(obj_type, obj_name, flag_name, value)#
Assign a per-object flag value from a string (typed parse).
- Raises:
EngineError – On undefined flag or unparseable value.
- Parameters:
- Return type:
None
- to_solver()#
Transfer ownership of the engine handle to a
Solver.After this call, the
ModelBuilderis invalidated and must not be used. The returnedSolverowns the engine handle.- Returns:
A new
Solverwrapping this model’s engine.- Return type:
L{Solver}
- undefine_userflag(name)#
Remove a user-flag definition and all its per-object values.
- Raises:
EngineError – If the flag is not defined.
- Parameters:
name (str)
- Return type:
None
- validate()#
Validate model topology.
Checks for orphaned links and ensures at least one outfall is present. Does not change state. Safe to call multiple times.
- Returns:
None
- Return type:
None
- Raises:
EngineError – If topology validation fails.
- write(path)#
Write the model to a SWMM
.inpfile.- Parameters:
path (str) – Output file path.
- Returns:
None
- Return type:
None
- Raises:
EngineError – On C API failure.
- write_with_plugin(path, output_plugin_id='')#
Write the current model to disk using an output plugin.
Model editing (deletion + type conversion)#
Model Editing — Object Deletion and Type Conversion#
- author:
Caleb Buahin
- copyright:
Copyright (c) 2026 Caleb Buahin
- license:
MIT
Type stubs for openswmm.engine._edit.
- class ConversionResult(new_type, cleared_fields, warnings)#
Bases:
objectResult of an in-place node or link type conversion.
- Variables:
new_type – The new C-API type enum value.
cleared_fields – List of field names cleared during conversion.
warnings – Non-fatal topology warnings.
- Parameters:
new_type (int) – The new C-API type enum value.
cleared_fields (list[str]) – List of field names that were cleared (reset to defaults) during the conversion.
warnings (list[str]) – Non-fatal topology warnings (e.g. “model has no outfall after this conversion”). Conversion still proceeds even when warnings are present.
- class ImpactEntry(obj_type, obj_idx, field, cascaded)#
Bases:
objectOne cross-reference that would be affected by a deletion.
- Variables:
obj_type – Integer code for the referencing object type (0=node, 1=link, 2=subcatchment, 3=gage, 4=table, 5=transect, 6=inlet_usage).
obj_type_name – Human-readable name for
obj_type.obj_idx – Zero-based index of the referencing object.
field – Name of the specific cross-reference field (e.g.
"node1","outlet_node").cascaded –
Trueif the referencing object will be deleted;Falseif only the reference will be nullified.
- Parameters:
- class ModelEditor(engine)#
Bases:
objectEdit an existing SWMM model – delete objects and convert types.
Accepts any object that exposes a
handleproperty returning the raw engine pointer as an integer. BothModelBuilder(BUILDINGstate) andSolver(OPENEDstate) satisfy this contract.- Parameters:
engine (object) – A
ModelBuilderorSolverinstance.
Example:
from openswmm.engine import ModelBuilder, ModelEditor, NodeType, LinkType m = ModelBuilder() m.add_node("J1", NodeType.JUNCTION) m.add_node("J2", NodeType.JUNCTION) m.add_node("OUT1", NodeType.OUTFALL) m.add_link("C1", LinkType.CONDUIT) m.add_link("C2", LinkType.CONDUIT) m.set_link_nodes(0, 0, 1) m.set_link_nodes(1, 1, 2) ed = ModelEditor(m) # Non-destructive preview impacts = ed.analyze_node_impact("J1") # Delete J1 -- C1 cascade-deleted automatically cascade = ed.delete_node("J1") # Convert C2 conduit -> weir result = ed.convert_link("C2", LinkType.WEIR)
- analyze_aquifer_impact(id_or_idx)#
Preview which subcatchments reference an aquifer.
- Parameters:
- Return type:
- analyze_gage_impact(id_or_idx)#
Preview which objects reference a rain gage.
- Parameters:
- Returns:
List of
ImpactEntrydescribing what would be affected.- Return type:
list[
ImpactEntry]- Raises:
KeyError – If
id_or_idxis a name and the gage is not found.EngineError – On C API failure.
- analyze_hydrograph_impact(uh_name)#
Preview which objects reference a unit-hydrograph group by name.
- Parameters:
uh_name (str)
- Return type:
- analyze_inlet_impact(id_or_idx)#
Preview which inlet-usage rows reference an inlet design.
- Parameters:
- Return type:
- analyze_landuse_impact(id_or_idx)#
Preview which objects reference a land use.
- Parameters:
- Return type:
- analyze_lid_impact(id_or_idx)#
Preview which LID-usage rows reference a LID control.
- Parameters:
- Return type:
- analyze_link_impact(id_or_idx)#
Preview which objects reference a link, without deleting it.
- Parameters:
- Returns:
List of
ImpactEntrydescribing what would be affected.- Return type:
list[
ImpactEntry]- Raises:
KeyError – If
id_or_idxis a name and the link is not found.EngineError – On C API failure.
- analyze_node_impact(id_or_idx)#
Preview which objects reference a node, without deleting it.
- Parameters:
- Returns:
List of
ImpactEntrydescribing what would be affected.- Return type:
list[
ImpactEntry]- Raises:
KeyError – If
id_or_idxis a name and the node is not found.EngineError – On C API failure.
- analyze_pattern_impact(id_or_idx)#
Preview which objects reference a time pattern.
- Parameters:
- Return type:
- analyze_pollutant_impact(id_or_idx)#
Preview which objects reference a pollutant.
- Parameters:
- Return type:
- analyze_snowpack_impact(id_or_idx)#
Preview which subcatchments reference a snowpack.
- Parameters:
- Return type:
- analyze_street_impact(id_or_idx)#
Preview which inlet-usage rows reference a street.
- Parameters:
- Return type:
- analyze_subcatch_impact(id_or_idx)#
Preview which objects reference a subcatchment.
- Parameters:
id_or_idx (int or str) – Subcatchment name or zero-based index.
- Returns:
List of
ImpactEntrydescribing what would be affected.- Return type:
list[
ImpactEntry]- Raises:
KeyError – If
id_or_idxis a name and the subcatchment is not found.EngineError – On C API failure.
- analyze_table_impact(id_or_idx)#
Preview which objects reference a time series or curve.
- Parameters:
- Returns:
List of
ImpactEntrydescribing what would be affected.- Return type:
list[
ImpactEntry]- Raises:
KeyError – If
id_or_idxis a name and the table is not found.EngineError – On C API failure.
- analyze_transect_impact(idx)#
Preview which links reference a transect.
- Parameters:
idx (int) – Zero-based transect index.
- Returns:
List of
ImpactEntrydescribing what would be affected.- Return type:
list[
ImpactEntry]- Raises:
EngineError – On C API failure.
- convert_link(id_or_idx, new_type)#
Convert a link to a different type in place.
- Parameters:
- Returns:
ConversionResultwith cleared fields and warnings.- Return type:
L{ConversionResult}
- Raises:
RuntimeError – If not in
BUILDINGorOPENEDstate, the type is invalid, ornew_typeequals the current type.KeyError – If
id_or_idxis a name and the link is not found.EngineError – On C API failure.
@see: L{openswmm.engine.LinkType}
- convert_node(id_or_idx, new_type)#
Convert a node to a different type in place.
- Parameters:
- Returns:
ConversionResultwith cleared fields and warnings.- Return type:
L{ConversionResult}
- Raises:
RuntimeError – If not in
BUILDINGorOPENEDstate, the type is invalid, ornew_typeequals the current type.KeyError – If
id_or_idxis a name and the node is not found.EngineError – On C API failure.
@see: L{openswmm.engine.NodeType}
- delete_aquifer(id_or_idx)#
Delete an aquifer; referencing subcatchments lose groundwater.
- Parameters:
- Return type:
- delete_gage(id_or_idx)#
Delete a rain gage and nullify subcatchment gage references.
- Parameters:
- Returns:
List of
ImpactEntrydescribing what was affected.- Return type:
list[
ImpactEntry]- Raises:
RuntimeError – If not in
BUILDINGorOPENEDstate.KeyError – If
id_or_idxis a name and the gage is not found.EngineError – On C API failure.
- delete_hydrograph(uh_name)#
Delete a unit-hydrograph group by name.
- Parameters:
uh_name (str)
- Return type:
- delete_inlet(id_or_idx)#
Delete an inlet design; cascade-delete referencing inlet-usage rows.
- Parameters:
- Return type:
- delete_landuse(id_or_idx)#
Delete a land use; re-pack buildup/washoff and coverage columns.
- Parameters:
- Return type:
- delete_lid(id_or_idx)#
Delete a LID control; cascade-delete referencing LID-usage rows.
- Parameters:
- Return type:
- delete_link(id_or_idx)#
Delete a link and cascade-delete or nullify referencing objects.
- Parameters:
- Returns:
List of
ImpactEntrydescribing what was affected.- Return type:
list[
ImpactEntry]- Raises:
RuntimeError – If not in
BUILDINGorOPENEDstate.KeyError – If
id_or_idxis a name and the link is not found.EngineError – On C API failure.
- delete_node(id_or_idx)#
Delete a node and cascade-delete or nullify all referencing objects.
- Parameters:
- Returns:
List of
ImpactEntrydescribing what was affected.- Return type:
list[
ImpactEntry]- Raises:
RuntimeError – If not in
BUILDINGorOPENEDstate.KeyError – If
id_or_idxis a name and the node is not found.EngineError – On C API failure.
- delete_pattern(id_or_idx)#
Delete a time pattern and clear all name-based references.
- Parameters:
- Return type:
- delete_pollutant(id_or_idx)#
Delete a pollutant and re-pack every per-pollutant matrix.
- Parameters:
- Return type:
- delete_snowpack(id_or_idx)#
Delete a snowpack; clear referencing subcatchments and renumber.
- Parameters:
- Return type:
- delete_street(id_or_idx)#
Delete a street; cascade-delete referencing inlet-usage rows.
- Parameters:
- Return type:
- delete_subcatch(id_or_idx)#
Delete a subcatchment and nullify referencing objects.
- Parameters:
id_or_idx (int or str) – Subcatchment name or zero-based index.
- Returns:
List of
ImpactEntrydescribing what was affected.- Return type:
list[
ImpactEntry]- Raises:
RuntimeError – If not in
BUILDINGorOPENEDstate.KeyError – If
id_or_idxis a name and the subcatchment is not found.EngineError – On C API failure.
- delete_table(id_or_idx)#
Delete a time series or curve and nullify all referencing objects.
- Parameters:
- Returns:
List of
ImpactEntrydescribing what was affected.- Return type:
list[
ImpactEntry]- Raises:
RuntimeError – If not in
BUILDINGorOPENEDstate.KeyError – If
id_or_idxis a name and the table is not found.EngineError – On C API failure.
- delete_transect(idx)#
Delete a transect and reset referencing conduit cross-sections.
- Parameters:
idx (int) – Zero-based transect index.
- Returns:
List of
ImpactEntrydescribing what was affected.- Return type:
list[
ImpactEntry]- Raises:
RuntimeError – If not in
BUILDINGorOPENEDstate.EngineError – On C API failure.
- fuse_virtual_junction(id_or_idx)#
Re-fuse the two conduits of a virtual junction into one.
- Parameters:
- Returns:
Index of the surviving conduit AFTER deletions renumber.
- Return type:
- Raises:
KeyError – If
id_or_idxis a name and the node is not found.EngineError – If the node is not a two-conduit through virtual junction, or on C API failure.
- property gage_count: int#
Current number of rain gages in the model.
- Returns:
Gage count.
- Return type:
- set_node_virtual(id_or_idx, make_virtual=True)#
Set or clear a node’s virtual-junction flag (validated).
- Parameters:
- Raises:
KeyError – If
id_or_idxis a name and the node is not found.EngineError – On a violated usage rule or C API failure.
- Return type:
None
- split_conduit(id_or_idx, t, new_node_name, new_link_name, make_virtual=False)#
Split a conduit at normalized position
t, inserting a new node.- Parameters:
- Returns:
(new_node_index, new_link_index).- Return type:
- Raises:
KeyError – If
id_or_idxis a name and the link is not found.EngineError – On invalid parameters or a rule failure.
- property subcatch_count: int#
Current number of subcatchments in the model.
- Returns:
Subcatchment count.
- Return type:
Nodes#
Node access (Pythonic v1 surface)#
- author:
Caleb Buahin
- copyright:
Copyright (c) 2026 Caleb Buahin
- license:
MIT
Type stubs for openswmm.engine._nodes.
- class Node(solver, index)#
Bases:
objectSingle-node wrapper. See
Nodesfor the collection.- set_quality_mass_flux(pollutant, mass_rate)#
- type: NodeType#
- stats: NodeStatsView#
- storage: StorageView#
- outfall: OutfallView#
- divider: DividerView#
- class Nodes(solver)#
Bases:
objectIndexable, iterable collection of
Nodewrappers.- Parameters:
solver (Solver)
Links#
Link access (Pythonic v1 surface)#
- author:
Caleb Buahin
- copyright:
Copyright (c) 2026 Caleb Buahin
- license:
MIT
Type stubs for openswmm.engine._links.
- class Link(solver, index)#
Bases:
objectSingle-link wrapper. See
Linksfor the collection.- set_nodes(from_node, to_node)#
- type: LinkType#
- stats: LinkStatsView#
- orifice: OrificeView#
- outlet: OutletView#
- class Links(solver)#
Bases:
objectIndexable, iterable collection of
Linkwrappers.- Parameters:
solver (Solver)
- get_xsect_info(key)#
- Parameters:
- Return type:
Cross-Section Geometry#
Type stubs for openswmm.engine._xsect.
- class XSectionGeometry(shape, geom1, geom2=Ellipsis, geom3=Ellipsis, geom4=Ellipsis, *, units)#
Bases:
object- Parameters:
- area(**kwds)#
Helper for @overload to raise when called.
- area_from_section_factor(**kwds)#
Helper for @overload to raise when called.
- critical_depth(**kwds)#
Helper for @overload to raise when called.
- depth_from_area(**kwds)#
Helper for @overload to raise when called.
- dsda(**kwds)#
Helper for @overload to raise when called.
- classmethod from_curve(full_depth, curve_depths, curve_widths, *, units)#
- classmethod from_street(width, curb_height, slope, roughness, *, gutter_depression=Ellipsis, gutter_width=Ellipsis, sides=Ellipsis, back_width=Ellipsis, back_slope=Ellipsis, back_roughness=Ellipsis, units)#
- classmethod from_transect(stations, elevations, *, left_bank, right_bank, n_channel, n_left=Ellipsis, n_right=Ellipsis, length_factor=Ellipsis, units)#
- hyd_radius(**kwds)#
Helper for @overload to raise when called.
- hyd_radius_from_area(**kwds)#
Helper for @overload to raise when called.
- section_factor(**kwds)#
Helper for @overload to raise when called.
- width(**kwds)#
Helper for @overload to raise when called.
- shape: XSectShape#
Cross-Section Geometry#
- author:
Caleb Buahin
- copyright:
Copyright (c) 2026 Caleb Buahin
- license:
MIT
Provides the CrossSection dataclass, which wraps the raw
(shape, geom1, geom2, geom3, geom4) tuple a link reports with
human-readable field labels and a shape_name derived from the
XSectShape enum.
Obtain one from Links.get_xsect_info() or link.xsect.info(). For the
hydraulic geometry of a section — area, top width, hydraulic radius, critical
depth — see XSectionGeometry instead.
Example:
from openswmm.engine import Solver, Links, CrossSection
with Solver("model.inp", "model.rpt", "model.out") as s:
links = Links(s)
xs = links.get_xsect_info(0)
print(xs.shape_name) # "CIRCULAR"
print(xs.geom_labels) # {"diameter": 1.2}
- class CrossSection(shape, shape_name, geom1, geom2, geom3, geom4)[source]#
Bases:
objectStructured cross-section geometry returned by
Links.get_xsect_info().All four
geomvalues are always present; unused parameters are0.0. Usegeom_labelsto get a{label: value}dict that filters out unused (zero) parameters and names each one meaningfully.- Variables:
shape – Integer cross-section shape code (see
XSectShape).shape_name – Human-readable name, e.g.
"CIRCULAR".geom1 – First geometry parameter (meaning depends on shape).
geom2 – Second geometry parameter (or 0.0 if unused).
geom3 – Third geometry parameter (or 0.0 if unused).
geom4 – Fourth geometry parameter (or 0.0 if unused).
- Parameters:
Subcatchments#
Subcatchment access (Pythonic v1 surface)#
- author:
Caleb Buahin
- copyright:
Copyright (c) 2026 Caleb Buahin
- license:
MIT
Type stubs for openswmm.engine._subcatchments.
- class Aquifers#
Bases:
objectName-keyed collection of
[AQUIFERS]entries (solver.aquifers).- get_param(aquifer, param)#
- set_evap_pattern(aquifer, name)#
- class CoverageView(sub)#
Bases:
MutableMapping[str,float]- Parameters:
sub (Subcatchment)
- class GroundwaterParams(surf_elev, a1, b1, a2, b2, a3, tw, hstar)#
Bases:
NamedTupleCreate new instance of GroundwaterParams(surf_elev, a1, b1, a2, b2, a3, tw, hstar)
- Parameters:
- class InfiltrationView#
Bases:
object- set_green_ampt(suction, conductivity, initial_deficit)#
- set_horton(f0, fmin, decay, dry_time)#
- model: InfilModel#
- class Snowpacks#
Bases:
objectName-keyed collection of
[SNOWPACKS]entries (solver.snowpacks).- set_impervious(snowpack, *, cmin, cmax, tbase, fwfrac, sd0, fw0, last)#
- set_pervious(snowpack, *, cmin, cmax, tbase, fwfrac, sd0, fw0, last)#
- set_plowable(snowpack, *, cmin, cmax, tbase, fwfrac, sd0, fw0, last)#
- set_removal(snowpack, *, dsnow, fout, fimp, fperv, fimelt, fsubcatch)#
- class Subcatchment(solver, index)#
Bases:
objectSingle-subcatchment wrapper. See
Subcatchments.- set_gw_params(surf_elev, a1, b1, a2, b2, a3, tw, hstar)#
- set_gw_state(theta=Ellipsis, lower_depth=Ellipsis)#
- set_outlet_subcatchment(sub)#
- Parameters:
sub (Subcatchment | int | str)
- Return type:
None
- set_ponded_quality(pollutant, mass)#
- set_snow_state(surface, swe=Ellipsis, fw=Ellipsis, ati=Ellipsis, coldc=Ellipsis)#
- outlet: Node | Subcatchment | None#
- gw_params: GroundwaterParams#
- stats: SubcatchmentStatsView#
- infiltration: InfiltrationView#
- coverage: CoverageView#
Rain gages#
Rain gage access (Pythonic v1 surface)#
- author:
Caleb Buahin
- copyright:
Copyright (c) 2026 Caleb Buahin
- license:
MIT
Type stubs for openswmm.engine._gages.
External inflows (DWF, RDII, time-series)#
Type stubs for openswmm.engine._inflows.
- class HydrographEntry(uh_name, month, response, r, t, k, dmax, drecov, dinit)#
Bases:
NamedTupleCreate new instance of HydrographEntry(uh_name, month, response, r, t, k, dmax, drecov, dinit)
- Parameters:
- class HydrographGageEntry(uh_name, gage_name)#
Bases:
NamedTupleCreate new instance of HydrographGageEntry(uh_name, gage_name)
- class Inflows(solver)#
Bases:
object- Parameters:
solver (Solver)
- add_dwf(node, constituent, *, avg_value=Ellipsis, monthly_pattern=Ellipsis, daily_pattern=Ellipsis, hourly_pattern=Ellipsis, weekend_pattern=Ellipsis)#
- add_external(node, constituent, *, ts_name=Ellipsis, type=Ellipsis, m_factor=Ellipsis, s_factor=Ellipsis, baseline=Ellipsis, pattern=Ellipsis)#
- add_hydrograph(uh_name, month, response, r, t, k, *, dmax=Ellipsis, drecov=Ellipsis, dinit=Ellipsis)#
- add_hydrograph_gage(uh_name, gage_name)#
- add_rdii(node, uh_name, area)#
- add_rdii_decay(uh_name, response, k_dep, k_0, k_T, T_ref, theta_rec, T_freeze, snow_on=Ellipsis, snow_T=Ellipsis, snow_ddf=Ellipsis)#
- get_dwf(entry_idx)#
- get_external(entry_idx)#
- remove_hydrograph_entry(uh_name, month, response)#
- set_dwf_baseline(entry_idx, avg_value)#
- set_external_baseline(entry_idx, baseline)#
- set_hydrograph_gage(uh_name, gage_name)#
- set_hydrograph_ia(uh_name, month, response, dmax, drecov, dinit)#
- set_hydrograph_rtk(uh_name, month, response, r, t, k)#
- set_rdii_decay(uh_name, response, k_dep, k_0, k_T, T_ref, theta_rec, T_freeze, snow_on=Ellipsis, snow_T=Ellipsis, snow_ddf=Ellipsis)#
- class RDIIDecayEntry(uh_name, response, k_dep, k_0, k_T, T_ref, theta_rec, T_freeze, snow_on, snow_T, snow_ddf)#
Bases:
NamedTupleCreate new instance of RDIIDecayEntry(uh_name, response, k_dep, k_0, k_T, T_ref, theta_rec, T_freeze, snow_on, snow_T, snow_ddf)
- Parameters:
Advanced forcing (mode + persistence)#
Type stubs for openswmm.engine._forcing.
- class Forcing(solver)#
Bases:
object- Parameters:
solver (Solver)
- clear_all()#
- Return type:
None
- climate_evap(value, *, mode=Ellipsis, persist=Ellipsis)#
- climate_temperature(value, *, mode=Ellipsis, persist=Ellipsis)#
- climate_wind(value, *, mode=Ellipsis, persist=Ellipsis)#
- gage_rainfall(gage, value, *, mode=Ellipsis, persist=Ellipsis)#
- link_flow(link, value, *, mode=Ellipsis, persist=Ellipsis)#
- link_quality(link, pollutant, value, *, mode=Ellipsis, persist=Ellipsis)#
- link_setting(link, value, *, mode=Ellipsis, persist=Ellipsis)#
- node_head_boundary(node, value, *, mode=Ellipsis, persist=Ellipsis)#
- node_lat_inflow(node, value, *, mode=Ellipsis, persist=Ellipsis)#
- node_quality(node, pollutant, mass_rate, *, mode=Ellipsis, persist=Ellipsis)#
- subcatchment_evap(sub, value, *, mode=Ellipsis, persist=Ellipsis)#
- subcatchment_rainfall(sub, value, *, mode=Ellipsis, persist=Ellipsis)#
Control rules#
Type stubs for openswmm.engine._controls.
- class ControlRule(id, text)#
Bases:
NamedTupleCreate new instance of ControlRule(id, text)
- class Controls(solver)#
Bases:
MutableSequence[ControlRule]- Parameters:
solver (Solver)
- append(value)#
S.append(value) – append value to the end of the sequence
- Parameters:
value (Any)
- Return type:
None
- clear() None -- remove all items from S#
- Return type:
None
- insert(idx, value)#
S.insert(index, value) – insert value before index
Pollutants#
Type stubs for openswmm.engine._pollutants.
- class Pollutant(solver, index)#
Bases:
object- set_co_pollutant(co, fraction)#
- units: ConcentrationUnits#
Water quality (landuse, buildup, washoff, treatment)#
Type stubs for openswmm.engine._quality.
- class Quality(solver)#
Bases:
object- Parameters:
solver (Solver)
- clear_treatment(node, pollutant)#
- get_buildup(landuse, pollutant)#
- get_washoff(landuse, pollutant)#
- set_buildup(landuse, pollutant, *, func, c1, c2, c3, normalizer=Ellipsis)#
- set_treatment(node, pollutant, expression)#
- set_washoff(landuse, pollutant, *, func, coeff, expon, sweep_effic=Ellipsis, bmp_effic=Ellipsis)#
Tables (time series, curves, patterns)#
Type stubs for openswmm.engine._tables.
- class Curve(solver, index)#
Bases:
_PointTable
Infrastructure (transects, streets, inlets, LIDs)#
Type stubs for openswmm.engine._infrastructure.
- class LIDs(solver)#
Bases:
object- Parameters:
solver (Solver)
- set_drain(idx, *, coeff, expon, offset)#
- set_drainmat(idx, *, thick, void_frac, roughness)#
- set_pavement(idx, *, thick, void_ratio, frac_imperv, ksat, clog_factor=Ellipsis, regen_days=Ellipsis)#
- set_soil(idx, *, thick, porosity, fc, wp, ksat, kslope)#
- set_storage(idx, *, thick, void_frac, ksat)#
- set_surface(idx, *, storage, roughness, slope)#
- usage_add(subcatchment, lid, *, number, area, width, init_sat=Ellipsis, from_imperv=Ellipsis)#
- class Streets(solver)#
Bases:
object- Parameters:
solver (Solver)
- get_params(idx)#
Read back a street cross-section’s geometric parameters.
- Returns:
Keys
t_crown,h_curb,sx,n_road,gutter_depres,gutter_width,sides,back_width,back_slope,back_n(the inverse ofset_params).- Return type:
- Parameters:
idx (int)
- set_params(idx, *, t_crown, h_curb, sx, n_road, gutter_depres=Ellipsis, gutter_width=Ellipsis, sides=Ellipsis, back_width=Ellipsis, back_slope=Ellipsis, back_n=Ellipsis)#
- class Transects(solver)#
Bases:
object- Parameters:
solver (Solver)
- add_station(idx, station, elevation)#
- get_station(idx, station_idx)#
- set_bank_stations(idx, left, right)#
- set_encroachment_stations(idx, left, right)#
- set_modifiers(idx, n_factor, x_factor, y_factor)#
- set_roughness(idx, n_left, n_right, n_channel)#
Hot start#
Hot start files (Pythonic v1 surface)#
Type stubs for openswmm.engine._hotstart.
- class SaveSchedule(solver)#
Bases:
MutableSequence[SaveScheduleEntry]- Parameters:
solver (Solver)
- append(value)#
S.append(value) – append value to the end of the sequence
- Parameters:
value (Any)
- Return type:
None
- clear() None -- remove all items from S#
- Return type:
None
Mass balance#
Mass balance & continuity (Pythonic v1 surface)#
Type stubs for openswmm.engine._massbalance.
- class MassBalance(solver)#
Bases:
object- Parameters:
solver (Solver)
- property routing_continuity_error: float#
Flow-routing continuity (mass-balance) error, as a percentage.
- property routing_diagnostics: RoutingDiagnostics#
Routing-solver time-step diagnostics (step sizes, Courant number, convergence counts) as a
RoutingDiagnosticsrecord.
Statistics#
Simulation statistics (Pythonic v1 surface)#
Type stubs for openswmm.engine._statistics.
- class Statistics(solver)#
Bases:
object- Parameters:
solver (Solver)
- property node_max_overflow: NDArray[Any]#
Maximum overflow (flooding) rate at each node, in project units.
- property subcatchment_max_runoff: NDArray[Any]#
Peak runoff rate from each subcatchment, in project units.
- property subcatchment_precip: NDArray[Any]#
Cumulative precipitation depth per subcatchment, in project depth units (in for US, mm for SI). The only statistic without a C
_bulkcompanion; gathered scalar-wise in anogilloop.
Output reader (binary .out file)#
Binary output file reader (Pythonic v1 surface)#
- author:
Caleb Buahin
- copyright:
Copyright (c) 2026 Caleb Buahin
- license:
MIT
Type stubs for openswmm.engine._output_reader.
- class OutputReader(path)#
Bases:
objectRead a SWMM binary
.outfile.- Parameters:
path (_PathLike)
- close()#
- Return type:
None
- link_attributes(link, period)#
- link_series(link, var, *, start=Ellipsis, end=Ellipsis)#
- node_attributes(node, period)#
- node_series(node, var, *, start=Ellipsis, end=Ellipsis)#
- subcatchment_attributes(sub, period)#
- subcatchment_result(period, var)#
- subcatchment_series(sub, var, *, start=Ellipsis, end=Ellipsis)#
- system_series(var, *, start=Ellipsis, end=Ellipsis)#
- flow_units: FlowUnits#
Spatial (CRS, coordinates, vertices, polygons)#
Type stubs for openswmm.engine._spatial.
- class Spatial(solver)#
Bases:
object- Parameters:
solver (Solver)
- property crs: str#
Coordinate reference system (EPSG token, WKT, or proj string). Reading a model with no CRS raises
CRSError; assigning sets it.
- set_link_vertices(link, vertices)#
- set_subcatchment_coord(sub, x, y)#
- set_subcatchment_polygon(sub, polygon)#
Enumerations#
Enumerations#
- author:
Caleb Buahin
- copyright:
Copyright (c) 2026 Caleb Buahin
- license:
MIT
Type stubs for openswmm.engine._enums.
Integer-backed enums mirroring the C API enum definitions in
openswmm_engine.h. All enums inherit from enum.IntEnum and
can be compared directly with integer return values from C API functions.
- class AquiferParam(*values)
Bases:
IntEnumAquifer parameter codes for Aquifers.get_param / set_param.
- Variables:
POROSITY – Porosity (volumetric fraction).
WILTING_POINT – Wilting point (volumetric fraction).
FIELD_CAPACITY – Field capacity (volumetric fraction).
CONDUCTIVITY – Saturated hydraulic conductivity.
CONDUCT_SLOPE – Conductivity slope.
TENSION_SLOPE – Tension slope.
UPPER_EVAP_FRAC – Upper-zone evaporation fraction.
LOWER_EVAP_DEPTH – Lower-zone evaporation depth.
LOWER_LOSS_COEFF – Lower-zone seepage-loss coefficient.
BOTTOM_ELEV – Aquifer bottom elevation.
WATER_TABLE_ELEV – Initial water table elevation.
UPPER_MOISTURE – Initial upper-zone moisture.
- POROSITY = 0
- WILTING_POINT = 1
- FIELD_CAPACITY = 2
- CONDUCTIVITY = 3
- CONDUCT_SLOPE = 4
- TENSION_SLOPE = 5
- UPPER_EVAP_FRAC = 6
- LOWER_EVAP_DEPTH = 7
- LOWER_LOSS_COEFF = 8
- BOTTOM_ELEV = 9
- WATER_TABLE_ELEV = 10
- UPPER_MOISTURE = 11
- class BuildupFunc(*values)
Bases:
IntEnumPollutant buildup function type.
- Variables:
NONE – No buildup.
POW – Power function.
EXP – Exponential function.
SAT – Saturation function.
EXT – External time series.
- NONE = 0
- POW = 1
- EXP = 2
- SAT = 3
- EXT = 4
- class ConcentrationUnits(*values)
Bases:
IntEnumPollutant concentration units.
- Variables:
MG_PER_L – Milligrams per liter.
UG_PER_L – Micrograms per liter.
COUNT_PER_L – Counts per liter.
- MG_PER_L = 0
- UG_PER_L = 1
- COUNT_PER_L = 2
- class DividerType(*values)
Bases:
IntEnumFlow-diversion method for a DIVIDER node. Mirrors
SWMM_DividerType.- CUTOFF = 0
- OVERFLOW = 1
- TABULAR = 2
- WEIR = 3
- class EngineState(*values)
Bases:
IntEnumEngine lifecycle states.
Mirrors
SWMM_EngineStateinopenswmm_engine.h.- CREATED = 1
- OPENED = 2
- INITIALIZED = 3
- STARTED = 4
- RUNNING = 5
- ENDED = 6
- CLOSED = 7
- BUILDING = 8
- class ErrorCode(*values)
Bases:
IntEnumSWMM C API return codes.
Mirrors the integer error codes returned by every C API entry point in
openswmm_engine.h.- Variables:
OK – Success (0).
NOMEM – Out of memory.
INPFILE – Cannot open input file.
RPTFILE – Cannot open report file.
OUTFILE – Cannot open output file.
PARSE – Input file parse error.
LIFECYCLE – Function called in wrong lifecycle state.
BADHANDLE – NULL or invalid engine handle.
BADINDEX – Object index out of range.
BADPARAM – Invalid parameter value.
PLUGIN – Plugin error.
IO – I/O error.
HOTSTART – Hot start file error.
CRS – Coordinate reference system error.
NUMERICAL – Numerical error.
INTERNAL – Internal error.
- OK = 0
- NOMEM = 1
- INPFILE = 2
- RPTFILE = 3
- OUTFILE = 4
- PARSE = 5
- LIFECYCLE = 6
- BADHANDLE = 7
- BADINDEX = 8
- BADPARAM = 9
- PLUGIN = 10
- IO = 11
- HOTSTART = 12
- CRS = 13
- NUMERICAL = 14
- DEPENDENCY = 15
- INTERNAL = 99
- class FilePathRole(*values)
Bases:
IntEnumExternal-file slot selector for
swmm_file_path_get/set. MirrorsSWMM_FilePathRole.- RAINFALL = 1
- RUNOFF = 2
- RDII = 3
- INFLOWS = 4
- OUTFLOWS = 5
- HOTSTART_USE = 6
- CLIMATE_TEMP = 7
- HOTSTART_SAVE = 8
- RAINGAGE_DATA = 9
- TIMESERIES_DATA = 10
- class FlowUnits(*values)
Bases:
IntEnumFlow unit systems.
- Variables:
CFS – Cubic feet per second (US customary).
GPM – Gallons per minute (US customary).
MGD – Million gallons per day (US customary).
CMS – Cubic meters per second (SI).
LPS – Liters per second (SI).
MLD – Million liters per day (SI).
- CFS = 0
- GPM = 1
- MGD = 2
- CMS = 3
- LPS = 4
- MLD = 5
- class ForcingMode(*values)
Bases:
IntEnumForcing application mode.
Determines how a forced value is combined with the model-computed value. Mirrors
SWMM_ForcingModeinopenswmm_forcing.h(OVERRIDE=1, ADD=2; 0 is the engine-internal “no forcing” state and is not exposed).- Variables:
REPLACE – Replace the computed value entirely.
ADD – Add the forced value to the computed value.
- REPLACE = 1
- ADD = 2
- class ForcingPersist(*values)
Bases:
IntEnumLifetime of a runtime forcing override. Mirrors
SWMM_ForcingPersist.- RESET = 0
- PERSIST = 1
- class ForcingTarget(*values)
Bases:
IntEnumObject type codes used with
openswmm.engine.Forcing.clear.- Variables:
NODE – Node forcing target.
LINK – Link forcing target.
SUBCATCH – Subcatchment forcing target.
GAGE – Rain gage forcing target.
CLIMATE – System-wide climate forcing target (temperature, wind).
- NODE = 0
- LINK = 1
- SUBCATCH = 2
- GAGE = 3
- CLIMATE = 4
- class ForcingType(*values)
Bases:
IntEnumForcing channel for a runtime override. Mirrors
SWMM_ForcingType.- NODE_LAT_INFLOW = 0
- NODE_HEAD_BOUNDARY = 1
- NODE_QUALITY = 2
- LINK_FLOW = 3
- LINK_SETTING = 4
- SUBCATCH_RAINFALL = 5
- SUBCATCH_EVAP = 6
- GAGE_RAINFALL = 7
- CLIMATE_TEMPERATURE = 8
- CLIMATE_WIND = 9
- SUBCATCH_SNOWFALL = 10
- CLIMATE_EVAP = 11
- LINK_QUALITY = 12
- class GageDataSource(*values)
Bases:
IntEnumRain gage data source type.
- Variables:
TIMESERIES – Data comes from a time series object.
FILE – Data comes from an external rainfall file.
- TIMESERIES = 0
- FILE = 1
- class GageRainType(*values)
Bases:
IntEnumRain gage rainfall data format.
- Variables:
INTENSITY – Rainfall intensity (depth/time).
VOLUME – Rainfall volume (depth per interval).
CUMULATIVE – Cumulative rainfall depth.
- INTENSITY = 0
- VOLUME = 1
- CUMULATIVE = 2
- class InfilModel(*values)
Bases:
IntEnumInfiltration model type.
- Variables:
HORTON – Original Horton model.
MOD_HORTON – Modified Horton model.
GREEN_AMPT – Green-Ampt model.
MOD_GREEN_AMPT – Modified Green-Ampt model.
CURVE_NUMBER – SCS Curve Number model.
- HORTON = 0
- MOD_HORTON = 1
- GREEN_AMPT = 2
- MOD_GREEN_AMPT = 3
- CURVE_NUMBER = 4
- class LidType(*values)
Bases:
IntEnumLow Impact Development (LID) control type.
- Variables:
BIO_CELL – Bioretention cell.
RAIN_GARDEN – Rain garden.
GREEN_ROOF – Green roof.
INFIL_TRENCH – Infiltration trench.
PERM_PAVEMENT – Permeable pavement.
RAIN_BARREL – Rain barrel.
ROOFTOP_DISCONN – Rooftop disconnection.
VEGETATIVE_SWALE – Vegetative swale.
- BIO_CELL = 0
- RAIN_GARDEN = 1
- GREEN_ROOF = 2
- INFIL_TRENCH = 3
- PERM_PAVEMENT = 4
- RAIN_BARREL = 5
- ROOFTOP_DISCONN = 6
- VEGETATIVE_SWALE = 7
- class LinkType(*values)
Bases:
IntEnumLink type codes for
openswmm.engine.ModelBuilder.add_link.- Variables:
CONDUIT – Conduit (pipe or channel).
PUMP – Pump.
ORIFICE – Orifice.
WEIR – Weir.
OUTLET – Outlet.
- CONDUIT = 0
- PUMP = 1
- ORIFICE = 2
- WEIR = 3
- OUTLET = 4
- class NodeType(*values)
Bases:
IntEnumNode type codes for
openswmm.engine.ModelBuilder.add_node.- Variables:
JUNCTION – Junction node.
OUTFALL – Outfall node.
STORAGE – Storage unit.
DIVIDER – Flow divider.
- JUNCTION = 0
- OUTFALL = 1
- STORAGE = 2
- DIVIDER = 3
- class ObjectType(*values)
Bases:
IntEnumSWMM object type codes.
- Variables:
GAGE – Rain gage.
SUBCATCH – Subcatchment.
NODE – Node (junction, outfall, storage, divider).
LINK – Link (conduit, pump, orifice, weir, outlet).
POLLUT – Pollutant.
LANDUSE – Land use category.
TIMESER – Time series.
TABLE – Curve / table.
RDII – RDII unit hydrograph group.
UNITHYD – Unit hydrograph.
SNOWMELT – Snowmelt parameter set.
SHAPE – Custom cross-section shape.
LID – LID control.
- GAGE = 0
- SUBCATCH = 1
- NODE = 2
- LINK = 3
- POLLUT = 4
- LANDUSE = 5
- TIMESER = 6
- TABLE = 7
- RDII = 8
- UNITHYD = 9
- SNOWMELT = 10
- SHAPE = 11
- LID = 12
- class OrificeType(*values)
Bases:
IntEnumOrifice flow-attack classification.
Mirrors
SWMM_OrificeTypeinopenswmm_links.h.- SIDE = 0
- BOTTOM = 1
- class OutLinkVar(*values)
Bases:
IntEnumLink output result variable indices.
- Variables:
FLOW – Flow rate.
DEPTH – Water depth.
VELOCITY – Flow velocity.
VOLUME – Stored volume.
CAPACITY – Capacity fraction (flow / full flow).
POLLUT_BASE – Base index for pollutant concentrations.
- FLOW = 0
- DEPTH = 1
- VELOCITY = 2
- VOLUME = 3
- CAPACITY = 4
- POLLUT_BASE = 5
- class OutNodeVar(*values)
Bases:
IntEnumNode output result variable indices.
- Variables:
DEPTH – Water depth.
HEAD – Hydraulic head.
VOLUME – Stored volume.
LATERAL_INFLOW – Lateral inflow rate.
TOTAL_INFLOW – Total inflow rate.
OVERFLOW – Overflow / flooding rate.
POLLUT_BASE – Base index for pollutant concentrations.
- DEPTH = 0
- HEAD = 1
- VOLUME = 2
- LATERAL_INFLOW = 3
- TOTAL_INFLOW = 4
- OVERFLOW = 5
- POLLUT_BASE = 6
- class OutSubcatchVar(*values)
Bases:
IntEnumSubcatchment output result variable indices.
- Variables:
RAINFALL – Rainfall rate.
SNOW_DEPTH – Snow depth.
EVAP – Evaporation rate.
INFIL – Infiltration rate.
RUNOFF – Runoff rate.
GW_FLOW – Groundwater outflow rate.
GW_ELEV – Groundwater table elevation.
SOIL_MOIST – Soil moisture fraction.
POLLUT_BASE – Base index for pollutant concentrations.
- RAINFALL = 0
- SNOW_DEPTH = 1
- EVAP = 2
- INFIL = 3
- RUNOFF = 4
- GW_FLOW = 5
- GW_ELEV = 6
- SOIL_MOIST = 7
- POLLUT_BASE = 8
- class OutSystemVar(*values)
Bases:
IntEnumSystem-wide output result variable indices.
- Variables:
TEMPERATURE – Air temperature.
RAINFALL – System-wide rainfall rate.
SNOW_DEPTH – Average snow depth.
EVAP – System-wide evaporation rate.
INFIL – System-wide infiltration rate.
RUNOFF – System-wide runoff rate.
DW_INFLOW – Dry-weather inflow rate.
GW_INFLOW – Groundwater inflow rate.
LAT_INFLOW – Total lateral inflow rate.
FLOODING – Total flooding rate.
OUTFLOW – Total outfall outflow rate.
STORAGE – Total network storage volume.
EVAP_TOTAL – Actual evaporation rate.
PET – Potential evapotranspiration rate.
- TEMPERATURE = 0
- RAINFALL = 1
- SNOW_DEPTH = 2
- EVAP = 3
- INFIL = 4
- RUNOFF = 5
- DW_INFLOW = 6
- GW_INFLOW = 7
- LAT_INFLOW = 8
- FLOODING = 9
- OUTFLOW = 10
- STORAGE = 11
- EVAP_TOTAL = 12
- PET = 13
- class OutfallType(*values)
Bases:
IntEnumOutfall boundary condition type.
- FREE = 0
- NORMAL = 1
- FIXED = 2
- TIDAL = 3
- TIMESERIES = 4
- class OutletRatingType(*values)
Bases:
IntEnumOutlet rating-curve classification.
Mirrors
SWMM_OutletRatingTypeinopenswmm_links.h.- FUNCTIONAL_HEAD = 0
- FUNCTIONAL_DEPTH = 1
- TABULAR_HEAD = 2
- TABULAR_DEPTH = 3
- class PatternType(*values)
Bases:
IntEnumTime pattern type.
- Variables:
MONTHLY – Monthly variation pattern.
DAILY – Daily variation pattern.
HOURLY – Hourly variation pattern.
WEEKEND – Weekend hourly variation pattern.
- MONTHLY = 0
- DAILY = 1
- HOURLY = 2
- WEEKEND = 3
- class RefType(*values)
Bases:
IntEnumObject kind holding a reference (editing API). Mirrors
SWMM_RefType.- NODE = 0
- LINK = 1
- SUBCATCH = 2
- GAGE = 3
- TABLE = 4
- TRANSECT = 5
- INLET_USAGE = 6
- class RouteModel(*values)
Bases:
IntEnumHydraulic routing models.
- Variables:
STEADY – Steady-state routing.
KINWAVE – Kinematic wave routing.
DYNWAVE – Dynamic wave (full Saint-Venant) routing.
- STEADY = 0
- KINWAVE = 1
- DYNWAVE = 2
- class RoutingTotal(*values)
Bases:
IntEnumRouting mass balance component codes.
- Variables:
DRY_WEATHER – Dry-weather inflow.
WET_WEATHER – Wet-weather (runoff) inflow.
GW_INFLOW – Groundwater inflow.
RDII – RDII inflow.
EXTERNAL – External inflow.
FLOODING – Flooding loss.
OUTFLOW – Outfall outflow.
EVAP_LOSS – Evaporation loss.
SEEP_LOSS – Seepage loss.
INIT_STORAGE – Initial network storage.
FINAL_STORAGE – Final network storage.
- DRY_WEATHER = 0
- WET_WEATHER = 1
- GW_INFLOW = 2
- RDII = 3
- EXTERNAL = 4
- FLOODING = 5
- OUTFLOW = 6
- EVAP_LOSS = 7
- SEEP_LOSS = 8
- INIT_STORAGE = 9
- FINAL_STORAGE = 10
- class RunoffTotal(*values)
Bases:
IntEnumRunoff mass balance component codes.
- Variables:
RAINFALL – Total rainfall.
EVAP – Evaporation loss.
INFIL – Infiltration loss.
RUNOFF – Surface runoff.
SNOWREMOV – Snow removal.
INITSTORE – Initial surface storage.
FINALSTORE – Final surface storage.
- RAINFALL = 0
- EVAP = 1
- INFIL = 2
- RUNOFF = 3
- SNOWREMOV = 4
- INITSTORE = 5
- FINALSTORE = 6
- class StorageShape(*values)
Bases:
IntEnumStorage-unit surface-area relation codes.
- TABULAR = 0
- FUNCTIONAL = 1
- CYLINDRICAL = 2
- CONICAL = 3
- PARABOLOID = 4
- PYRAMIDAL = 5
- class SurfaceBoundaryType(*values)
Bases:
IntEnum2D mesh edge boundary-condition type. Mirrors
openswmm::twoD::BoundaryType.- WALL = 0
- NORMAL_FLOW = 1
- SPECIFIED_STAGE = 2
- SPECIFIED_FLOW = 3
- RATING_CURVE = 4
- class SurfaceForcingMode(*values)
Bases:
IntEnum2D surface forcing mode. Mirrors
SWMM_ForcingMode(OVERRIDE=1, ADD=2).- NONE = 0
- OVERRIDE = 1
- ADD = 2
- class TableType(*values)
Bases:
IntEnumTable type code from
swmm_table_get_type. Mirrorsopenswmm::TableType.- TIMESERIES = 0
- CURVE_STORAGE = 1
- CURVE_DIVERSION = 2
- CURVE_RATING = 3
- CURVE_SHAPE = 4
- CURVE_CONTROL = 5
- CURVE_TIDAL = 6
- CURVE_PUMP1 = 7
- CURVE_PUMP2 = 8
- CURVE_PUMP3 = 9
- CURVE_PUMP4 = 10
- CURVE_PUMP5 = 11
- class UserFlagType(*values)
Bases:
IntEnumUser-flag schema value type for
swmm_userflag_define. Mirrorsopenswmm::UserFlagType.- BOOLEAN = 0
- INTEGER = 1
- REAL = 2
- STRING = 3
- class WarnCode(*values)
Bases:
IntEnumEngine warning codes emitted via the warning callback.
- Variables:
NONE – No warning.
HOTSTART_MISSING – Object missing during hot start application.
UNKNOWN_SECTION – Unrecognised input section encountered.
UNKNOWN_OPTION – Unrecognised option keyword.
DEPRECATED_KW – Deprecated keyword used.
PLUGIN_INIT – Plugin initialisation issue.
NUMERICAL – Numerical instability handled gracefully.
STABILITY_LIMIT – Timestep limited by stability criterion.
- NONE = 0
- HOTSTART_MISSING = 1
- UNKNOWN_SECTION = 2
- UNKNOWN_OPTION = 3
- DEPRECATED_KW = 4
- PLUGIN_INIT = 5
- NUMERICAL = 6
- STABILITY_LIMIT = 7
- class WashoffFunc(*values)
Bases:
IntEnumPollutant washoff function type.
- Variables:
NONE – No washoff.
EXP – Exponential washoff.
RC – Rating curve washoff.
EMC – Event mean concentration.
- NONE = 0
- EXP = 1
- RC = 2
- EMC = 3
- class WeirType(*values)
Bases:
IntEnumWeir flow classification.
Mirrors
SWMM_WeirTypeinopenswmm_links.h.- TRANSVERSE = 0
- SIDEFLOW = 1
- VNOTCH = 2
- TRAPEZOIDAL = 3
- ROADWAY = 4
- class XSectShape(*values)
Bases:
IntEnumCross-section shape codes.
Mirrors the engine’s
SWMM_XSectShapestorage codes exactly.Warning
Renumbered in 6.0.
IRREGULAR,CUSTOMandFORCE_MAINpreviously carried 16/17/18, which the engine read asRECT_TRIANG/RECT_ROUND/HORIZ_ELLIPSE.- Variables:
CIRCULAR – Circular pipe.
FILLED_CIRCULAR – Filled circular pipe.
RECT_CLOSED – Closed rectangular.
RECT_OPEN – Open rectangular.
TRAPEZOIDAL – Trapezoidal channel.
TRIANGULAR – Triangular channel.
PARABOLIC – Parabolic channel.
POWER – Power-law shaped channel.
MODBASKETHANDLE – Modified baskethandle.
EGGSHAPED – Egg-shaped pipe.
HORSESHOE – Horseshoe-shaped pipe.
GOTHIC – Gothic arch pipe.
CATENARY – Catenary-shaped pipe.
SEMIELLIPTICAL – Semi-elliptical pipe.
BASKETHANDLE – Baskethandle-shaped pipe.
SEMICIRCULAR – Semi-circular pipe.
RECT_TRIANG – Rectangular-triangular channel.
RECT_ROUND – Rectangular-round channel.
HORIZ_ELLIPSE – Horizontal elliptical pipe.
VERT_ELLIPSE – Vertical elliptical pipe.
ARCH – Arch pipe.
IRREGULAR – Irregular (from transect data).
CUSTOM – Custom shape (from shape curve).
FORCE_MAIN – Force main (pressurized).
STREET_XSECT – Street cross-section.
DUMMY – Dummy — no geometry.
- CIRCULAR = 0
- FILLED_CIRCULAR = 1
- RECT_CLOSED = 2
- RECT_OPEN = 3
- TRAPEZOIDAL = 4
- TRIANGULAR = 5
- PARABOLIC = 6
- POWER = 7
- MODBASKETHANDLE = 8
- EGGSHAPED = 9
- HORSESHOE = 10
- GOTHIC = 11
- CATENARY = 12
- SEMIELLIPTICAL = 13
- BASKETHANDLE = 14
- SEMICIRCULAR = 15
- RECT_TRIANG = 16
- RECT_ROUND = 17
- HORIZ_ELLIPSE = 18
- VERT_ELLIPSE = 19
- ARCH = 20
- IRREGULAR = 21
- CUSTOM = 22
- FORCE_MAIN = 23
- STREET_XSECT = 24
- DUMMY = 25
Optional modules#
These extensions are only built when the matching CMake flag is enabled
on the parent C/C++ engine. They expose HAS_* flags at runtime so
client code can degrade gracefully.
GeoPackage I/O (OPENSWMM_WITH_GEOPACKAGE=ON)#
GeoPackage Access#
- author:
Caleb Buahin
- copyright:
Copyright (c) 2026 Caleb Buahin
- license:
MIT
Type stubs for openswmm.engine._geopackage.
The GeoPackage class provides read/write access to SWMM GeoPackage
databases for querying multi-run simulation results, importing observed data,
and performing spatial analysis.
This module is optional - it is only available when the package is built
with OPENSWMM_WITH_GEOPACKAGE=ON.
- class GeoPackage(path)#
Bases:
objectGeoPackage database access for SWMM models, results, and observed data.
Wraps the
swmm_gpkg_*entry points of the OpenSWMM GeoPackage plugin. Supports the context-manager protocol for automatic resource cleanup.Example:
from openswmm.engine import GeoPackage with GeoPackage("model.gpkg") as gpkg: sims = gpkg.simulation_ids() times, depths = gpkg.read_result_ts( sims[0], "NODE", "J1", "depth")
- Variables:
last_error – The most recent error message reported by the underlying GeoPackage library.
- Parameters:
path (str)
Open a GeoPackage file.
- Parameters:
path (str) – Path to the
.gpkgfile.- Raises:
RuntimeError – If the file cannot be opened.
- __init__(path)#
Open a GeoPackage file.
- Parameters:
path (str) – Path to the
.gpkgfile.- Raises:
RuntimeError – If the file cannot be opened.
- Return type:
None
- begin()#
Begin a transaction for bulk operations.
- Raises:
RuntimeError – If the transaction cannot be started.
- Return type:
None
- close()#
Close the database connection.
Calling
closemore than once is harmless.- Return type:
None
- commit()#
Commit the current transaction.
- Raises:
RuntimeError – If the commit fails.
- Return type:
None
- create_observed_series(name, variable, obj_type='', obj_id='', source='', units='')#
Create an observed-data series.
- Parameters:
name (str) – Unique series name.
variable (str) – Variable being measured.
obj_type (str) – Model object type for linking, or
""for none.obj_id (str) – Model object ID for linking, or
""for none.source (str) – Data source description, or
""for none.units (str) – Measurement units, or
""for none.
- Returns:
Series ID (M{>= 0}).
- Return type:
- Raises:
RuntimeError – If the series cannot be created.
- property last_error: str#
The last error message from the GeoPackage library.
- Returns:
Error message string, or
""if no error has been reported.- Return type:
- object_counts(sim_id)#
Return model object counts for a simulation.
- observed_series_count()#
Return the number of observed-data series.
- Returns:
Observed-series count.
- Return type:
- observed_value_count(series_id)#
Return the number of values in an observed series.
- query_double(sql)#
Execute a read-only SQL query and return the first double result.
- Parameters:
sql (str) –
SELECTquery string.- Returns:
Double-precision result of the query.
- Return type:
- Raises:
RuntimeError – If the query fails.
- query_int(sql)#
Execute a read-only SQL query and return the first integer result.
- read_observed_values(series_id)#
Read observed-timeseries values. GIL is released for the duration of the SQL read.
- read_result_ts(sim_id, obj_type, obj_id, variable)#
Read a result timeseries as NumPy arrays. GIL is released for the duration of the SQL execution.
- Parameters:
- Returns:
Tuple
(times, values)as NumPyfloat64arrays.- Return type:
Tuple[np.ndarray, np.ndarray]
@see: L{result_ts_count}
- read_summary(sim_id, obj_type, obj_id, variable)#
Read a single summary statistic value.
- result_ts_count(sim_id, obj_type, obj_id, variable)#
Return the number of result timeseries records for a query.
- rollback()#
Roll back the current transaction.
- Raises:
RuntimeError – If the rollback fails.
- Return type:
None
- simulation_count()#
Return the number of simulation runs in the file.
- Returns:
Simulation count.
- Return type:
- simulation_ids()#
Return all simulation IDs as a list of strings.
- Returns:
List of simulation identifier strings.
- Return type:
List[str]
- topology_edge_count(sim_id)#
Return the number of topology edges for a simulation.
- variable_count()#
Return the number of output variables defined.
- Returns:
Variable count.
- Return type:
- write_observed_value(series_id, timestamp, value, flag='')#
Write a single observed data point.
- Parameters:
series_id (int) – Series ID returned by
create_observed_series.timestamp (str) – ISO 8601 timestamp string.
value (float) – Measured value.
flag (str) – Quality flag (e.g.
"A","P"), or""for none.
- Raises:
RuntimeError – If the write fails.
- Return type:
None
- write_observed_values(series_id, timestamps, values, flags=None)#
Bulk-write observed data points. GIL is released for the duration of the bulk SQL insert.
For best performance wrap the call in a transaction:
gpkg.begin() gpkg.write_observed_values(sid, timestamps, values) gpkg.commit()
- Parameters:
- Raises:
RuntimeError – If the bulk write fails.
MemoryError – If the C string-pointer arrays cannot be allocated.
- Return type:
None
- is_registered()#
Check whether the GeoPackage plugin is registered.
- Returns:
Trueif registered.- Return type:
- register(key='', org='', email='', deploy='')#
Register the GeoPackage plugin.
2-D surface routing (OPENSWMM_BUILD_2D=ON)#
2D Surface Routing#
- author:
Caleb Buahin
- copyright:
Copyright (c) 2026 Caleb Buahin
- license:
MIT
Type stubs for openswmm.engine._2d.
The Surface2D class provides read/write access to the optional 2D
surface routing module (requires OPENSWMM_BUILD_2D=ON and SUNDIALS).
- class Surface2D(engine_ptr)#
Bases:
objectRead/write interface to the optional 2D surface routing module.
The module solves the depth-averaged shallow-water equations on an unstructured triangular mesh and is integrated in time with the explicit local-inertial finite-volume marcher. Two-way coupling with the 1D drainage network is supported per-vertex and per-triangle.
Example:
from openswmm.engine import Solver from openswmm.engine._2d import Surface2D with Solver("model.inp", "model.rpt", "model.out") as s: mesh = Surface2D(s.handle) if mesh.is_active: depths = mesh.get_depths()
- Variables:
_engine – Internal pointer to the underlying C{SWMM_Engine} handle (managed by the Cython extension).
- Parameters:
engine_ptr (int)
Construct a
Surface2Daccessor from a raw engine handle.- Parameters:
engine_ptr (int) – The raw engine handle (
SWMM_Enginecast to an integer viasolver.handle).
- __init__(engine_ptr)#
Construct a
Surface2Daccessor from a raw engine handle.- Parameters:
engine_ptr (int) – The raw engine handle (
SWMM_Enginecast to an integer viasolver.handle).- Return type:
None
- add_triangle_coupling(tri_idx, node_name, cd, area)#
Append one node->cell coupling row for a triangle (
[2D_TRIANGLE_NODE_MAP]repeated-row form; appends, does not overwrite).
- property boundary_edge_count: int#
Number of boundary edges in the 2D mesh.
- Returns:
Boundary edge count.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- clear_triangle_couplings()#
Remove every authored node->cell coupling row; vertex couplings are untouched.
- Return type:
None
- property continuity_error: float#
Global 2D surface continuity error.
- Returns:
M{(total_in - total_out) / total_in}, the domain mass-balance error as a fraction.
- Return type:
- Raises:
RuntimeError – If the 2D module did not run.
- property dry_depth: float#
Dry-depth threshold (m); triangles below this are treated as dry.
- Returns:
Threshold depth.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- force_clear_all()#
Clear all 2D forcings.
- Raises:
RuntimeError – If the C API call fails.
- Return type:
None
- force_coupling_flux(idx, value, *, mode=Ellipsis, persist=Ellipsis)#
Force a coupling flux on a specific triangle.
- Parameters:
- Raises:
RuntimeError – If the C API rejects the forcing.
- Return type:
None
- force_evap(idx, value, *, mode=Ellipsis, persist=Ellipsis)#
Force evaporation on a specific triangle.
The rate is a demand: wet cells lose depth at this rate, shutting off smoothly as a cell dries (depths never go negative). The default rate is 0 unless forced. Negative values are treated as zero.
- Parameters:
- Raises:
RuntimeError – If the C API rejects the forcing.
- Return type:
None
- force_evap_uniform(value, *, mode=Ellipsis, persist=Ellipsis)#
Force uniform evaporation on all triangles.
- Parameters:
value (float) – Evaporation rate (m/s; same SI convention as rainfall).
mode (L{SurfaceForcingMode}) – How the value is applied (
OVERRIDEorADD).persist (L{ForcingPersist}) –
PERSISTto hold until cleared;RESETfor a single step.
- Raises:
RuntimeError – If the C API rejects the forcing.
- Return type:
None
- force_rainfall(idx, value, *, mode=Ellipsis, persist=Ellipsis)#
Force rainfall on a specific triangle.
- Parameters:
- Raises:
RuntimeError – If the C API rejects the forcing.
- Return type:
None
- force_rainfall_uniform(value, *, mode=Ellipsis, persist=Ellipsis)#
Force uniform rainfall on all triangles.
- Parameters:
value (float) – Rainfall rate (m/s).
mode (L{SurfaceForcingMode}) – How the value is applied (
OVERRIDEorADD).persist (L{ForcingPersist}) –
PERSISTto hold until cleared;RESETfor a single step.
- Raises:
RuntimeError – If the C API rejects the forcing.
- Return type:
None
- get_coupling_flux(idx)#
Return the coupling flux at a specific triangle.
- Parameters:
idx (int) – Triangle index.
- Returns:
Coupling flux value (positive = into 2D surface).
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- get_coupling_fluxes()#
Return coupling fluxes for all triangles as a NumPy array. GIL is released during the C call.
- Returns:
Array of shape
(n_triangles,)with dtypefloat64. Positive values denote flux into the 2D surface.- Return type:
np.ndarray
- Raises:
RuntimeError – If the C API call fails.
- get_depth(idx)#
Return the water depth at a specific triangle.
- Parameters:
idx (int) – Triangle index.
- Returns:
Water depth.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- get_depths()#
Return depths for all triangles as a NumPy array. GIL is released during the C call.
- Returns:
Array of shape
(n_triangles,)with dtypefloat64.- Return type:
np.ndarray
- Raises:
RuntimeError – If the C API call fails.
- get_edge_bc_cum_flux(tri_idx, edge)#
Return the cumulative boundary flux for a triangle edge.
- Parameters:
- Returns:
Cumulative boundary flux through the edge.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- get_edge_bc_flow(tri_idx, edge)#
Return the prescribed flow per metre for a SPECIFIED_FLOW edge.
- Parameters:
- Returns:
Prescribed flow per metre of edge (
m^3/s/m).- Return type:
- Raises:
RuntimeError – If the C API call fails.
- get_edge_bc_head(tri_idx, edge)#
Return the boundary head for a triangle edge.
- Parameters:
- Returns:
Boundary head value.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- get_edge_bc_slope(tri_idx, edge)#
Return the boundary slope for a triangle edge.
- Parameters:
- Returns:
Boundary slope.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- get_edge_bc_type(tri_idx, edge)#
Return the boundary condition type for a triangle edge.
- Parameters:
- Returns:
Boundary condition type.
- Return type:
L{SurfaceBoundaryType}
- Raises:
RuntimeError – If the C API call fails.
- get_edge_conveyance(tri, edge)#
Return the per-edge conveyance factor in
[0, 1].- Parameters:
- Returns:
Conveyance factor (1.0 = unrestricted, 0.0 = wall).
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- get_edge_conveyance_bulk()#
Return a NumPy array of all per-edge conveyance factors.
Length is
triangle_count * 3, indexed[tri*3 + edge].- Return type:
np.ndarray
- get_edge_flux_bulk()#
Return normal edge fluxes for all triangle edges. GIL is released during the C call.
Indexed as
[tri*3 + localEdge].- Returns:
Array of shape
(n_triangles*3,)with dtypefloat64.- Return type:
NDArray[float64]
- get_edge_geometry_bulk()#
Return time-invariant edge lengths and outward unit normal components. GIL is released during the C call.
Returns
(length, nx, ny), each indexed as[tri*3 + localEdge].- Returns:
Tuple
(length, nx, ny), each of shape(n_triangles*3,).- Return type:
tuple[NDArray[float64], NDArray[float64], NDArray[float64]]
- get_head(idx)#
Return the total head at a specific triangle.
- Parameters:
idx (int) – Triangle index.
- Returns:
Total head.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- get_heads()#
Return total heads for all triangles as a NumPy array. GIL is released during the C call.
- Returns:
Array of shape
(n_triangles,)with dtypefloat64.- Return type:
np.ndarray
- Raises:
RuntimeError – If the C API call fails.
- get_mass_balance()#
Return the global 2D mass-balance terms.
- Returns:
Mapping with keys
init_storage,final_storage,rainfall_in,coupling_1d_to_2d_in,coupling_2d_to_1d_out,outfall_in,boundary_in,boundary_out, C{evap_out} (allm^3) andcontinuity_error(fraction).- Return type:
- Raises:
RuntimeError – If the 2D module did not run.
- get_net_source(idx)#
Return the net source term at a specific triangle.
- Parameters:
idx (int) – Triangle index.
- Returns:
Net source term.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- get_rainfall(idx)#
Return the current rainfall at a specific triangle.
- Parameters:
idx (int) – Triangle index.
- Returns:
Rainfall rate.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- get_stat_max_continuity_err()#
Return cumulative maximum M{abs(continuity residual)} envelope per triangle.
- Returns:
Array of shape
(n_triangles,)with dtypefloat64, inm^3/s.- Return type:
np.ndarray
- Raises:
RuntimeError – If the C API call fails.
- get_stat_max_depths()#
Return cumulative maximum-depth envelope for all triangles.
- Returns:
Array of shape
(n_triangles,)with dtypefloat64, in m.- Return type:
np.ndarray
- Raises:
RuntimeError – If the C API call fails.
- get_stat_max_velocities()#
Return cumulative maximum velocity-magnitude envelope per triangle.
- Returns:
Array of shape
(n_triangles,)with dtypefloat64, in m/s.- Return type:
np.ndarray
- Raises:
RuntimeError – If the C API call fails.
- get_triangle_area(idx)#
Return the area of a triangle.
- Parameters:
idx (int) – Triangle index.
- Returns:
Triangle area in project units squared.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- get_triangle_centroid(idx)#
Return the (cx, cy, cz) centroid coordinates for a triangle.
- get_triangle_coupled_node(tri_idx)#
Return the SWMM node index coupled to a triangle.
- Parameters:
tri_idx (int) – Triangle index.
- Returns:
Node index, or
-1if no coupling exists.- Return type:
- Raises:
RuntimeError – If the C API call fails.
- get_triangle_coupling_row(row_idx)#
Read one authored row:
(tri_idx, node_idx, cd, area);node_idxis-1if unresolved.
- get_triangle_mannings(idx)#
Return Manning’s M{n} for a triangle.
- Parameters:
idx (int) – Triangle index.
- Returns:
Manning’s M{n} roughness.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- get_triangle_neighbours(idx)#
Return the (n0, n1, n2) neighbour triangle indices.
- get_triangle_tag(idx)#
Return the descriptive tag of a triangle (
[2D_TRIANGLES]TAG).
- get_triangle_vertices(idx)#
Return the (v0, v1, v2) vertex indices for a triangle.
- get_vertex_coords()#
Return (x, y, z) NumPy arrays for all vertices. GIL is released during the C call.
- Returns:
Tuple
(x, y, z), each of shape(n_vertices,)with dtypefloat64.- Return type:
tuple[np.ndarray, np.ndarray, np.ndarray]
- Raises:
RuntimeError – If the C API call fails.
- get_vertex_coupled_node(vertex_idx)#
Return the SWMM node index coupled to a vertex.
- Parameters:
vertex_idx (int) – Vertex index.
- Returns:
Node index, or
-1if no coupling exists.- Return type:
- Raises:
RuntimeError – If the C API call fails.
- get_vertex_coupling_area(vertex_idx)#
Return the coupling exchange area of a vertex.
Corresponds to the
[2D_VERTEX_NODE_MAP]AREA column in m^2 (default 1.0).- Parameters:
vertex_idx (int) – Vertex index (0-based).
- Returns:
Exchange area in m^2.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- get_vertex_coupling_cd(vertex_idx)#
Return the coupling discharge coefficient of a vertex.
Corresponds to the
[2D_VERTEX_NODE_MAP]CD column (default 0.65).- Parameters:
vertex_idx (int) – Vertex index (0-based).
- Returns:
Discharge coefficient.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- get_vertex_head(idx)#
Scalar water-surface head at one mesh vertex (project units).
- get_vertex_heads()#
Return reconstructed heads at all vertices as a NumPy array. GIL is released during the C call.
- Returns:
Array of shape
(n_vertices,)with dtypefloat64.- Return type:
np.ndarray
- Raises:
RuntimeError – If the C API call fails.
- get_vertex_render_depths()#
Return render-oriented signed water depths at all vertices.
The wet-masked, depth-weighted free-surface reconstruction
eta_v - z_v(m) that GUIs should interpolate for water-surface rendering. GIL is released during the C call.- Returns:
Array of shape
(n_vertices,)with dtypefloat64.- Return type:
np.ndarray
- Raises:
RuntimeError – If the C API call fails.
- get_vertex_tag(idx)#
Return the descriptive tag of a vertex (
[2D_VERTICES]TAG).
- get_vertex_xyz(idx)#
Scalar
(x, y, z)for one mesh vertex (project units).
- property is_active: bool#
Trueif the 2D module is active for this simulation.- Returns:
Activation flag.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- property max_depth: float#
Maximum depth across all triangles.
- Returns:
Maximum depth.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- property n_triangles: int#
Number of mesh triangles.
- Returns:
Triangle count.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- property n_vertices: int#
Number of mesh vertices.
- Returns:
Vertex count.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- prepare_for_edit()#
Make the parsed 2D mesh editable without a full
initialize().- Return type:
None
- reset_edge_conveyance()#
Reset every edge’s conveyance factor to 1.0 (unrestricted).
- Return type:
None
- set_edge_bc_flow(tri_idx, edge, flow)#
Set the prescribed flow per metre for a SPECIFIED_FLOW edge.
- Parameters:
- Raises:
RuntimeError – If the C API rejects the assignment.
- Return type:
None
- set_edge_bc_flow_tseries_name(tri_idx, edge, name)#
Set the timeseries name driving a SPECIFIED_FLOW edge.
- Parameters:
- Raises:
RuntimeError – If the C API rejects the assignment.
- Return type:
None
- set_edge_bc_head(tri_idx, edge, head)#
Set the boundary head for a triangle edge.
- Parameters:
- Raises:
RuntimeError – If the C API rejects the assignment.
- Return type:
None
- set_edge_bc_rating_curve_name(tri_idx, edge, name)#
Set the rating-curve name driving a RATING_CURVE edge.
- Parameters:
- Raises:
RuntimeError – If the C API rejects the assignment.
- Return type:
None
- set_edge_bc_slope(tri_idx, edge, slope)#
Set the boundary slope for a triangle edge.
- Parameters:
- Raises:
RuntimeError – If the C API rejects the assignment.
- Return type:
None
- set_edge_bc_tseries_name(tri_idx, edge, name)#
Set the timeseries name driving a SPECIFIED_STAGE edge.
- Parameters:
- Raises:
RuntimeError – If the C API rejects the assignment.
- Return type:
None
- set_edge_bc_type(tri_idx, edge, bc_type)#
Set the boundary condition type for a triangle edge.
- Parameters:
- Raises:
RuntimeError – If the C API rejects the assignment.
- Return type:
None
- set_edge_conveyance(tri, edge, conveyance)#
Set the per-edge conveyance factor in
[0, 1].For interior edges the value is mirrored to the partner slot on the neighbouring triangle so mass conservation is preserved.
- Parameters:
- Raises:
RuntimeError – If the C API rejects the assignment.
- Return type:
None
- set_triangle_mannings(idx, n)#
Set Manning’s M{n} for a triangle (must be strictly positive).
- set_triangle_tag(idx, tag)#
Set the descriptive tag of a triangle (empty string clears it).
- set_vertex_coupled_node(vertex_idx, node_name)#
Couple a mesh vertex to a 1D SWMM node by name (
""clears).
- set_vertex_coupling_area(vertex_idx, area)#
Set the coupling exchange area of a vertex in m^2 (must be > 0).
- set_vertex_coupling_cd(vertex_idx, cd)#
Set the coupling discharge coefficient of a vertex (must be > 0).
- set_vertex_tag(idx, tag)#
Set the descriptive tag of a vertex (empty string clears it).
- set_vertex_z(idx, z)#
Set the ground elevation of a mesh vertex.
Updates derived geometry for every triangle incident to this vertex (centroid Z, per-edge midpoint Z). XY-derived fields are unaffected. When called during a running simulation, solver state (head, depth) is intentionally not rewritten — the implied depth = head - bed therefore changes by the same amount as bed.
- Parameters:
- Raises:
RuntimeError – If the C API call fails.
- Return type:
None
- property solver_last_step: float#
The explicit marcher’s last sub-step size in seconds.
Renamed from
cvode_last_stepwith the D2 CVODE/ARKODE retirement.- Returns:
Step size.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- property solver_steps: int#
Number of explicit-marcher sub-steps in the last advance.
Renamed from
cvode_stepswith the D2 CVODE/ARKODE retirement.- Returns:
Step count.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- property total_exchange_flow: float#
Total exchange flow rate.
- Returns:
Exchange flow rate in
m^3/s(positive = into 1D network).- Return type:
- Raises:
RuntimeError – If the C API call fails.
- property total_volume: float#
Total 2D surface volume (sum of M{depth x area}).
- Returns:
Total volume.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- property triangle_coupling_count: int#
Number of triangle-to-node coupling points.
- Returns:
Coupling count.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
- property vertex_coupling_count: int#
Number of vertex-to-node coupling points.
- Returns:
Coupling count.
- Return type:
- Raises:
RuntimeError – If the C API call fails.
Legacy SWMM 5 — compatibility layer#
The openswmm.legacy.engine and openswmm.legacy.output
subpackages preserve the original EPA SWMM 5.x C solver and binary-output
reader verbatim for backward compatibility with existing scripts.
No new development happens here; new projects should prefer
openswmm.engine (above).
See also
Legacy SWMM 5 — Compatibility Layer — task-oriented guide for the legacy layer.
Migrating from SWMM 5 to v6 — translating legacy patterns to the OpenSWMM 6 API.
openswmm.legacy.engine — SWMM 5.x solver#
openswmm.legacy.engine#
Legacy EPA SWMM 5.x solver bindings (Cython).
This subpackage provides the Solver class for running SWMM
simulations, enumeration types for object/property access, and utility
functions for date encoding and version queries.
- class SWMMObjects(*values)#
Bases:
EnumEnumeration of SWMM objects.
- Variables:
RAIN_GAGE – Raingage object
SUBCATCHMENT – Subcatchment object
NODE – Node object
LINK – Link object
AQUIFER – Aquifer object
SNOWPACK – Snowpack object
UNIT_HYDROGRAPH – Unit hydrograph object
LID – LID object
STREET – Street object
INLET – Inlet object
TRANSECT – Transect object
XSECTION_SHAPE – Cross-section shape object
CONTROL_RULE – Control rule object
POLLUTANT – Pollutant object
LANDUSE – Land use object
CURVE – Curve object
TIMESERIES – Time series object
TIME_PATTERN – Time pattern object
SYSTEM – System object
- RAIN_GAGE = Ellipsis#
- SUBCATCHMENT = Ellipsis#
- NODE = Ellipsis#
- LINK = Ellipsis#
- AQUIFER = Ellipsis#
- SNOWPACK = Ellipsis#
- UNIT_HYDROGRAPH = Ellipsis#
- LID = Ellipsis#
- STREET = Ellipsis#
- INLET = Ellipsis#
- TRANSECT = Ellipsis#
- XSECTION_SHAPE = Ellipsis#
- CONTROL_RULE = Ellipsis#
- POLLUTANT = Ellipsis#
- LANDUSE = Ellipsis#
- CURVE = Ellipsis#
- TIMESERIES = Ellipsis#
- TIME_PATTERN = Ellipsis#
- SYSTEM = Ellipsis#
- class SWMMNodeTypes(*values)#
Bases:
EnumEnumeration of SWMM node types.
- Variables:
JUNCTION – Junction node
OUTFALL – Outfall node
STORAGE – Storage node
DIVIDER – Divider node
- JUNCTION = Ellipsis#
- OUTFALL = Ellipsis#
- STORAGE = Ellipsis#
- DIVIDER = Ellipsis#
- class SWMMLinkTypes(*values)#
Bases:
EnumEnumeration of SWMM link types.
- Variables:
CONDUIT – Conduit link
PUMP – Pump link
ORIFICE – Orifice link
WEIR – Weir link
OUTLET – Outlet link
- CONDUIT = Ellipsis#
- PUMP = Ellipsis#
- ORIFICE = Ellipsis#
- WEIR = Ellipsis#
- OUTLET = Ellipsis#
- class SWMMRainGageProperties(*values)#
Bases:
EnumEnumeration of SWMM raingage properties.
- Variables:
GAGE_TOTAL_PRECIPITATION – Total precipitation
GAGE_RAINFALL – Rainfall
GAGE_SNOWFALL – Snowfall
GAGE_SCALEFACTOR – Rainfall scaling factor (dimensionless, > 0)
- GAGE_TOTAL_PRECIPITATION = Ellipsis#
- GAGE_RAINFALL = Ellipsis#
- GAGE_SNOWFALL = Ellipsis#
- GAGE_SCALEFACTOR = Ellipsis#
- class SWMMSubcatchmentProperties(*values)#
Bases:
EnumEnumeration of SWMM subcatchment properties.
- Variables:
AREA – Area
RAINGAGE – Raingage
RAINFALL – Rainfall
EVAPORATION – Evaporation
INFILTRATION – Infiltration
RUNOFF – Runoff
REPORT_FLAG – Report flag
WIDTH – Width
SLOPE – Slope
CURB_LENGTH – Curb length
API_RAINFALL – API Rainfall
API_SNOWFALL – API Snowfall
POLLUTANT_BUILDUP – Pollutant buildup
EXTERNAL_POLLUTANT_BUILDUP – External pollutant buildup
POLLUTANT_RUNOFF_CONCENTRATION – Pollutant runoff concentration
POLLUTANT_PONDED_CONCENTRATION – Pollutant ponded concentration
POLLUTANT_TOTAL_LOAD – Pollutant total load
API_PET – API prescribed potential evapotranspiration rate
- AREA = Ellipsis#
- RAINGAGE = Ellipsis#
- RAINFALL = Ellipsis#
- EVAPORATION = Ellipsis#
- INFILTRATION = Ellipsis#
- RUNOFF = Ellipsis#
- REPORT_FLAG = Ellipsis#
- WIDTH = Ellipsis#
- SLOPE = Ellipsis#
- OUTLET_TYPE = Ellipsis#
- OUTLET_INDEX = Ellipsis#
- INFILTRATION_MODEL = Ellipsis#
- FRACTION_IMPERVIOUS = Ellipsis#
- SUB_AREA_ROUTE_TO = Ellipsis#
- SUB_AREA_FRACTION_OUTLET = Ellipsis#
- SUB_AREA_MANNINGS_N = Ellipsis#
- SUB_AREA_FRACTION_AREA = Ellipsis#
- SUB_AREA_DEPRESSION_STORAGE = Ellipsis#
- SUB_AREA_INFLOW = Ellipsis#
- SUB_AREA_RUNOFF = Ellipsis#
- SUB_AREA_DEPTH = Ellipsis#
- LID_UNITS_COUNT = Ellipsis#
- LID_UNITS_PERV_AREA = Ellipsis#
- LID_UNITS_FLOW_TO_PERV_AREA = Ellipsis#
- LID_UNITS_DRAIN_FLOW = Ellipsis#
- LID_UNIT_REPLICATES = Ellipsis#
- LID_UNIT_AREA = Ellipsis#
- LID_UNIT_FULL_WIDTH = Ellipsis#
- LID_UNIT_BOTTOM_WIDTH = Ellipsis#
- LID_UNIT_INIT_SATURATION = Ellipsis#
- LID_UNIT_FROM_IMPERVIOUS = Ellipsis#
- LID_UNIT_FROM_PERVIOUS = Ellipsis#
- LID_UNIT_TO_PERVIOUS = Ellipsis#
- LID_UNIT_RECEIVING_OUTLET_TYPE = Ellipsis#
- LID_UNIT_RECEIVING_OUTLET_INDEX = Ellipsis#
- LID_UNIT_SURFACE_DEPTH = Ellipsis#
- LID_UNIT_SOIL_MOISTURE = Ellipsis#
- LID_UNIT_GREEN_AMPT_CAPILLARY_SUCTION = Ellipsis#
- LID_UNIT_GREEN_AMPT_SATURATED_CONDUCTIVITY = Ellipsis#
- LID_UNIT_GREEN_AMPT_MAX_SOIL_MOISTURE_DEFICIT = Ellipsis#
- CURB_LENGTH = Ellipsis#
- API_RAINFALL = Ellipsis#
- API_SNOWFALL = Ellipsis#
- POLLUTANT_BUILDUP = Ellipsis#
- EXTERNAL_POLLUTANT_BUILDUP = Ellipsis#
- POLLUTANT_RUNOFF_CONCENTRATION = Ellipsis#
- POLLUTANT_PONDED_CONCENTRATION = Ellipsis#
- POLLUTANT_TOTAL_LOAD = Ellipsis#
- API_PET = Ellipsis#
- GW_MOISTURE = Ellipsis#
- GW_LOWER_DEPTH = Ellipsis#
- SNOW_SWE = Ellipsis#
- SNOW_FW = Ellipsis#
- SNOW_ATI = Ellipsis#
- SNOW_COLDC = Ellipsis#
- RAIN_SCALE_FACTOR = Ellipsis#
- SNOW_SCALE_FACTOR = Ellipsis#
- class SWMMNodeProperties(*values)#
Bases:
EnumEnumeration of SWMM node properties.
- Variables:
TYPE – Node type
INVERT_ELEVATION – Invert elevation
MAX_DEPTH – Maximum depth
DEPTH – Depth
HYDRAULIC_HEAD – Hydraulic head
VOLUME – Volume
LATERAL_INFLOW – Lateral inflow
TOTAL_INFLOW – Total inflow
FLOODING – Flooding
REPORT_FLAG – Report flag
SURCHARGE_DEPTH – Surcharge depth
PONDING_AREA – Ponding area
INITIAL_DEPTH – Initial depth
POLLUTANT_CONCENTRATION – Pollutant concentration
POLLUTANT_LATERAL_MASS_FLUX – Pollutant lateral mass flux
OUTFLOW – Total outflow through downstream links
- TYPE = Ellipsis#
- INVERT_ELEVATION = Ellipsis#
- MAX_DEPTH = Ellipsis#
- DEPTH = Ellipsis#
- HYDRAULIC_HEAD = Ellipsis#
- VOLUME = Ellipsis#
- LATERAL_INFLOW = Ellipsis#
- TOTAL_INFLOW = Ellipsis#
- FLOODING = Ellipsis#
- REPORT_FLAG = Ellipsis#
- SURCHARGE_DEPTH = Ellipsis#
- PONDING_AREA = Ellipsis#
- INITIAL_DEPTH = Ellipsis#
- POLLUTANT_CONCENTRATION = Ellipsis#
- POLLUTANT_LATERAL_MASS_FLUX = Ellipsis#
- OUTFLOW = Ellipsis#
- class SWMMLinkProperties(*values)#
Bases:
EnumEnumeration of SWMM link properties.
- Variables:
TYPE – Link type
START_NODE – Start node
END_NODE – End node
LENGTH – Length
SLOPE – Slope
FULL_DEPTH – Full depth
FULL_FLOW – Full flow
SETTING – Setting
TIME_OPEN – Time open
TIME_CLOSED – Time closed
FLOW – Flow
DEPTH – Depth
VELOCITY – Velocity
TOP_WIDTH – Top width
REPORT_FLAG – Report flag
START_NODE_OFFSET – Start node offset
END_NODE_OFFSET – End node offset
INITIAL_FLOW – Initial flow
FLOW_LIMIT – Flow limit
INLET_LOSS – Inlet loss
OUTLET_LOSS – Outlet loss
AVERAGE_LOSS – Average loss
SEEPAGE_RATE – Seepage rate
HAS_FLAPGATE – Has flapgate
POLLUTANT_CONCENTRATION – Pollutant concentration
POLLUTANT_LOAD – Pollutant load
POLLUTANT_LATERAL_MASS_FLUX – Pollutant lateral mass flux
- TYPE = Ellipsis#
- START_NODE = Ellipsis#
- END_NODE = Ellipsis#
- LENGTH = Ellipsis#
- SLOPE = Ellipsis#
- FULL_DEPTH = Ellipsis#
- FULL_FLOW = Ellipsis#
- SETTING = Ellipsis#
- TIME_OPEN = Ellipsis#
- TIME_CLOSED = Ellipsis#
- FLOW = Ellipsis#
- DEPTH = Ellipsis#
- VELOCITY = Ellipsis#
- TOP_WIDTH = Ellipsis#
- VOLUME = Ellipsis#
- CAPACITY = Ellipsis#
- REPORT_FLAG = Ellipsis#
- START_NODE_OFFSET = Ellipsis#
- END_NODE_OFFSET = Ellipsis#
- INITIAL_FLOW = Ellipsis#
- FLOW_LIMIT = Ellipsis#
- INLET_LOSS = Ellipsis#
- OUTLET_LOSS = Ellipsis#
- AVERAGE_LOSS = Ellipsis#
- SEEPAGE_RATE = Ellipsis#
- HAS_FLAPGATE = Ellipsis#
- POLLUTANT_CONCENTRATION = Ellipsis#
- POLLUTANT_LOAD = Ellipsis#
- POLLUTANT_LATERAL_MASS_FLUX = Ellipsis#
- class SWMMSystemProperties(*values)#
Bases:
EnumEnumeration of SWMM system properties.
- Variables:
START_DATE – Start date for the simulation
CURRENT_DATE – Current date for the simulation
ELAPSED_TIME – Elapsed time for the simulation
ROUTING_STEP – Routing time step
MAX_ROUTING_STEP – Maximum routing time step
REPORT_STEP – Report time step
TOTAL_STEPS – Total number of steps
NO_REPORT_FLAG – No report flag
FLOW_UNITS – Flow units
END_DATE – End date for the simulation
REPORT_START_DATE – Report start date
UNIT_SYSTEM – Unit system
SURCHARGE_METHOD – Surcharge method
ALLOW_PONDING – Allow ponding
INTERTIAL_DAMPING – Inertial damping
NORMAL_FLOW_LIMITED – Normal flow limited
SKIP_STEADY_STATE – Skip steady state
IGNORE_RAINFALL – Ignore rainfall
IGNORE_RDII – Ignore RDII
IGNORE_SNOWMELT – Ignore snowmelt
IGNORE_GROUNDWATER – Ignore groundwater
IGNORE_ROUTING – Ignore routing
IGNORE_QUALITY – Ignore quality
RULE_STEP – Rule step
SWEEP_START – Sweep start
SWEEP_END – Sweep end
MAX_TRIALS – Maximum trials
NUM_THREADS – Number of threads
MIN_ROUTE_STEP – Minimum routing step
LENGTHENING_STEP – Lengthening step
START_DRY_DAYS – Start dry days
COURANT_FACTOR – Courant factor
MIN_SURF_AREA – Minimum surface area
MIN_SLOPE – Minimum slope
RUNOFF_ERROR – Runoff error
FLOW_ERROR – Flow error
QUAL_ERROR – Quality error
HEAD_TOL – Head tolerance
SYS_FLOW_TOL – System flow tolerance
LAT_FLOW_TOL – Lateral flow tolerance
EVAP_RATE – Current climate-derived evaporation rate (read-only)
TEMPERATURE – Current air temperature (read-only)
API_TEMPERATURE – API prescribed air temperature
WIND_SPEED – Current wind speed (read-only)
API_WIND_SPEED – API prescribed wind speed
- START_DATE = Ellipsis#
- CURRENT_DATE = Ellipsis#
- ELAPSED_TIME = Ellipsis#
- ROUTING_STEP = Ellipsis#
- MAX_ROUTING_STEP = Ellipsis#
- REPORT_STEP = Ellipsis#
- TOTAL_STEPS = Ellipsis#
- NO_REPORT_FLAG = Ellipsis#
- FLOW_UNITS = Ellipsis#
- END_DATE = Ellipsis#
- REPORT_START_DATE = Ellipsis#
- UNIT_SYSTEM = Ellipsis#
- SURCHARGE_METHOD = Ellipsis#
- ALLOW_PONDING = Ellipsis#
- INTERTIAL_DAMPING = Ellipsis#
- NORMAL_FLOW_LIMITED = Ellipsis#
- SKIP_STEADY_STATE = Ellipsis#
- IGNORE_RAINFALL = Ellipsis#
- IGNORE_RDII = Ellipsis#
- IGNORE_SNOWMELT = Ellipsis#
- IGNORE_GROUNDWATER = Ellipsis#
- IGNORE_ROUTING = Ellipsis#
- IGNORE_QUALITY = Ellipsis#
- ERROR_CODE = Ellipsis#
- RULE_STEP = Ellipsis#
- SWEEP_START = Ellipsis#
- SWEEP_END = Ellipsis#
- MAX_TRIALS = Ellipsis#
- NUM_THREADS = Ellipsis#
- MIN_ROUTE_STEP = Ellipsis#
- LENGTHENING_STEP = Ellipsis#
- START_DRY_DAYS = Ellipsis#
- COURANT_FACTOR = Ellipsis#
- MIN_SURF_AREA = Ellipsis#
- MIN_SLOPE = Ellipsis#
- RUNOFF_ERROR = Ellipsis#
- FLOW_ERROR = Ellipsis#
- QUAL_ERROR = Ellipsis#
- HEAD_TOL = Ellipsis#
- SYS_FLOW_TOL = Ellipsis#
- LAT_FLOW_TOL = Ellipsis#
- EVAP_RATE = Ellipsis#
- TEMPERATURE = Ellipsis#
- API_TEMPERATURE = Ellipsis#
- WIND_SPEED = Ellipsis#
- API_WIND_SPEED = Ellipsis#
- API_EVAP = Ellipsis#
- EVAP_DRY_ONLY = Ellipsis#
- class SWMMPollutantProperties(*values)#
Bases:
EnumEnumeration of SWMM pollutant properties (runtime-settable source concentrations in pollutant units).
- Variables:
RAIN_CONCENTRATION – Rain (wet deposition) concentration
GW_CONCENTRATION – Groundwater inflow concentration
RDII_CONCENTRATION – RDII inflow concentration
DWF_CONCENTRATION – Dry weather sanitary flow concentration
KDECAY – First-order decay constant (1/day); live each step
CO_POLLUTANT – Co-pollutant index (-1 = none)
CO_FRACTION – Co-pollutant fraction (0-1)
SNOW_ONLY – Buildup-only-under-snow flag (0/1)
INIT_CONCENTRATION – Initial network concentration (pre-start only)
- RAIN_CONCENTRATION = Ellipsis#
- GW_CONCENTRATION = Ellipsis#
- RDII_CONCENTRATION = Ellipsis#
- DWF_CONCENTRATION = Ellipsis#
- KDECAY = Ellipsis#
- CO_POLLUTANT = Ellipsis#
- CO_FRACTION = Ellipsis#
- SNOW_ONLY = Ellipsis#
- INIT_CONCENTRATION = Ellipsis#
- class SWMMPatternProperties(*values)#
Bases:
EnumEnumeration of SWMM time-pattern properties (runtime-settable multiplier factors). For
FACTORpass the 0-based factor position as thesub_indexargument ofset_value/get_value.- Variables:
FACTOR – One multiplier factor (sub_index = factor position)
COUNT – Number of factors in the pattern (read-only)
TYPE – Pattern type code (read-only): 0 monthly/1 daily/2 hourly/3 weekend
- FACTOR = Ellipsis#
- COUNT = Ellipsis#
- TYPE = Ellipsis#
- class SWMMLandUseProperties(*values)#
Bases:
EnumEnumeration of SWMM land-use properties (runtime-settable street sweeping parameters).
Buildup/washoff parameters are per land use and pollutant; pass the 0-based pollutant index as the
sub_indexargument.- Variables:
SWEEP_INTERVAL – Street-sweeping interval (days)
SWEEP_REMOVAL – Fraction of buildup available for sweeping (0-1)
BUILDUP_FUNC – Buildup function type code (sub_index = pollutant)
BUILDUP_COEFF1 – Buildup coefficient c0 / max buildup
BUILDUP_COEFF2 – Buildup coefficient c1 / rate
BUILDUP_COEFF3 – Buildup coefficient c2 / exponent
BUILDUP_NORMALIZER – Buildup normalizer: 0 area, 1 curb length
WASHOFF_FUNC – Washoff function type code
WASHOFF_COEFF – Washoff coefficient
WASHOFF_EXPON – Washoff exponent
WASHOFF_SWEEP_EFFIC – Washoff street-sweeping efficiency (0-1)
WASHOFF_BMP_EFFIC – Washoff BMP efficiency (0-1)
- SWEEP_INTERVAL = Ellipsis#
- SWEEP_REMOVAL = Ellipsis#
- BUILDUP_FUNC = Ellipsis#
- BUILDUP_COEFF1 = Ellipsis#
- BUILDUP_COEFF2 = Ellipsis#
- BUILDUP_COEFF3 = Ellipsis#
- BUILDUP_NORMALIZER = Ellipsis#
- WASHOFF_FUNC = Ellipsis#
- WASHOFF_COEFF = Ellipsis#
- WASHOFF_EXPON = Ellipsis#
- WASHOFF_SWEEP_EFFIC = Ellipsis#
- WASHOFF_BMP_EFFIC = Ellipsis#
- class SWMMAquiferProperties(*values)#
Bases:
EnumEnumeration of SWMM aquifer properties (input-file units).
The flux-coefficient properties (conductivity, slopes, evap/loss coefficients) are read live each step and are settable both before the simulation starts and while it is running; the structural / initial-condition properties are pre-start-only.
- Variables:
POROSITY – Porosity (volumetric fraction, pre-start-only)
WILTING_POINT – Wilting point (volumetric fraction, pre-start-only)
FIELD_CAPACITY – Field capacity (volumetric fraction, pre-start-only)
CONDUCTIVITY – Saturated hydraulic conductivity (in/hr or mm/hr)
CONDUCT_SLOPE – Conductivity slope
TENSION_SLOPE – Tension slope (ft or m)
UPPER_EVAP_FRAC – Upper-zone evaporation fraction (0-1)
LOWER_EVAP_DEPTH – Lower-zone evaporation depth (ft or m)
LOWER_LOSS_COEFF – Lower-zone seepage-loss coefficient (in/hr or mm/hr)
BOTTOM_ELEV – Aquifer bottom elevation (ft or m, pre-start-only)
WATER_TABLE_ELEV – Initial water table elevation (ft or m, pre-start-only)
UPPER_MOISTURE – Initial upper-zone moisture (volumetric fraction, pre-start-only)
- POROSITY = Ellipsis#
- WILTING_POINT = Ellipsis#
- FIELD_CAPACITY = Ellipsis#
- CONDUCTIVITY = Ellipsis#
- CONDUCT_SLOPE = Ellipsis#
- TENSION_SLOPE = Ellipsis#
- UPPER_EVAP_FRAC = Ellipsis#
- LOWER_EVAP_DEPTH = Ellipsis#
- LOWER_LOSS_COEFF = Ellipsis#
- BOTTOM_ELEV = Ellipsis#
- WATER_TABLE_ELEV = Ellipsis#
- UPPER_MOISTURE = Ellipsis#
- class SWMMFlowUnits(*values)#
Bases:
EnumEnumeration of SWMM flow units.
- Variables:
CFS – Cubic feet per second
GPM – Gallons per minute
MGD – Million gallons per day
CMS – Cubic meters per second
LPS – Liters per second
MLD – Million liters per day
- CFS = Ellipsis#
- GPM = Ellipsis#
- MGD = Ellipsis#
- CMS = Ellipsis#
- LPS = Ellipsis#
- MLD = Ellipsis#
- class SWMMAPIErrors(*values)#
Bases:
EnumEnumeration of SWMM API errors.
- Variables:
PROJECT_NOT_OPENED – Project not opened
SIMULATION_NOT_STARTED – Simulation not started
SIMULATION_NOT_ENDED – Simulation not ended
- PROJECT_NOT_OPENED = Ellipsis#
- SIMULATION_NOT_STARTED = Ellipsis#
- SIMULATION_NOT_ENDED = Ellipsis#
- OBJECT_TYPE = Ellipsis#
- OBJECT_INDEX = Ellipsis#
- OBJECT_NAME = Ellipsis#
- PROPERTY_TYPE = Ellipsis#
- PROPERTY_VALUE = Ellipsis#
- TIME_PERIOD = Ellipsis#
- HOTSTART_FILE_OPEN = Ellipsis#
- HOTSTART_FILE_FORMAT = Ellipsis#
- SIMULATION_IS_RUNNING = Ellipsis#
- run_solver(inp_file, rpt_file=None, out_file=None, swmm_progress_callback=Ellipsis)#
Run a SWMM simulation with a progress callback.
- Parameters:
- Rtype inp_file:
str
- Rtype rpt_file:
str
- Rtype out_file:
str
- Returns:
Error code from the underlying SWMM C API (0 on success, non-zero on failure). Callers should check the return value rather than relying on an exception.
- Return type:
- decode_swmm_datetime(swmm_datetime)#
Decode a SWMM datetime into a datetime object.
- Parameters:
swmm_datetime (float) – SWMM datetime float value
- Returns:
datetime object
- Return type:
datetime
- encode_swmm_datetime(dt)#
Encode a datetime object into a SWMM datetime float value.
- Parameters:
dt (datetime) – datetime object
- Returns:
SWMM datetime float value
- Return type:
- get_error_message(error_code)#
Get the error message for a SWMM error code.
- class SolverState(*values)#
Bases:
EnumAn enumeration to represent the state of the solver.
- CREATED = Ellipsis#
- OPEN = Ellipsis#
- STARTED = Ellipsis#
- FINISHED = Ellipsis#
- ENDED = Ellipsis#
- REPORTED = Ellipsis#
- CLOSED = Ellipsis#
- class CallbackType(*values)#
Bases:
EnumAn enumeration to represent the type of callback.
- BEFORE_INITIALIZE = Ellipsis#
- BEFORE_OPEN = Ellipsis#
- AFTER_OPEN = Ellipsis#
- BEFORE_START = Ellipsis#
- AFTER_START = Ellipsis#
- BEFORE_STEP = Ellipsis#
- AFTER_STEP = Ellipsis#
- BEFORE_END = Ellipsis#
- AFTER_END = Ellipsis#
- BEFORE_REPORT = Ellipsis#
- AFTER_REPORT = Ellipsis#
- BEFORE_CLOSE = Ellipsis#
- AFTER_CLOSE = Ellipsis#
- exception SWMMSolverException(message)#
Bases:
ExceptionException class for SWMM output file processing errors.
Constructor to initialize the exception message.
- Parameters:
message (str) – Error message.
- Return type:
None
- class Solver(inp_file, rpt_file=None, out_file=None, stride_step=300, save_results=True)#
Bases:
objectConstructor to create a new SWMM solver.
- Parameters:
- __init__(inp_file, rpt_file=None, out_file=None, stride_step=300, save_results=True)#
Constructor to create a new SWMM solver.
- add_callback(callback_type, callback)#
Add a callback to the solver.
- Parameters:
callback_type (CallbackType) – Type of callback
callback (callable) – Callback function
- Return type:
None
- add_progress_callback(callback)#
Add a progress callback to the solver.
- Parameters:
callback (callable) – Progress callback function
- Return type:
None
- clear_treatment(node_index, pollutant_index)#
Remove the treatment expression for a node/pollutant pair.
Callable before the simulation starts or while it is running; zero removal applies from the next routing step on.
- close()#
Close the solver.
- Returns:
Error code (0 on success or no-op, non-zero on failure; -1 if not in REPORTED state).
- Return type:
- property current_datetime: datetime#
Get the current date of the simulation.
- Returns:
Current date
- Return type:
datetime
- end()#
End the SWMM simulation.
- Returns:
Error code (0 on success or no-op, non-zero on failure; -1 if called from an invalid solver state).
- Return type:
- property end_datetime: datetime#
Get the end date of the simulation.
- Returns:
End date
- Return type:
datetime
- finalize()#
Finalize the solver. Ends simulation, reports the results, and dispose objects.
- Return type:
- get_link_statistics(index)#
Per-link post-simulation statistics.
- get_mass_balance_error()#
Get the mass balance error.
- get_node_statistics(index)#
Per-node post-simulation statistics.
- get_object_count(object_type)#
Get the count of a SWMM object type.
- Parameters:
object_type (SWMMObjects) – SWMM object type
- Returns:
Object count
- Return type:
- get_object_index(object_type, object_name)#
Get the index of a SWMM object.
- Parameters:
object_type (SWMMObjects) – SWMM object type
object_name (str) – Object name
- Returns:
Object index
- Return type:
- get_object_name(object_type, index)#
Get the name of a SWMM object.
- Parameters:
object_type (SWMMObjects) – SWMM object type
index (int) – Object index
- Returns:
Object name
- Return type:
- get_object_names(object_type)#
Get the names of all SWMM objects of a given type.
- Parameters:
object_type (SWMMObjects) – SWMM object type
- Returns:
Object names
- Return type:
List[str]
- get_pump_statistics(index)#
Per-pump post-simulation statistics.
- get_routing_totals()#
Get system-level flow routing mass balance totals.
- get_runoff_totals()#
Get system-level surface runoff mass balance totals.
- get_subcatchment_statistics(index)#
Per-subcatchment post-simulation statistics.
- get_value(object_type, property_type, index, sub_index=Ellipsis)#
Get a SWMM system property value.
- Parameters:
object_type (SWMMObjects) – SWMM object type (e.g., SWMMObjects.NODE)
property_type (Union[SWMMRainGageProperties, SWMMSubcatchmentProperties, SWMMNodeProperties, SWMMLinkProperties, SWMMSystemProperties]) – SWMM system property type (e.g., SWMMSystemProperties.START_DATE)
sub_index (int) – Sub-index (e.g., 0) for properties with sub-indexes. For example pollutant index for POLLUTANT properties.
- Returns:
Property value
- Return type:
double
- initialize()#
Initialize the solver and start the simulation. Calls the open and start methods in the SWMM API.
- Returns:
Error code (0 on success, non-zero from the first failing sub-call).
- Return type:
- open()#
Open the SWMM solver by calling the open method in the SWMM API.
- Returns:
Error code (0 on success or no-op, non-zero on failure; -1 if called from an invalid solver state).
- Return type:
- property progress_callbacks_per_second: int#
Get the number of progress callbacks per second.
- Returns:
Progress callbacks per second
- Return type:
- report()#
Report the results of the SWMM simulation.
- Returns:
Error code (0 on success or no-op, non-zero on failure; -1 if not in ENDED state).
- Return type:
- property report_start_datetime: datetime#
Get the report start date of the simulation.
- Returns:
Report start date
- Return type:
datetime
- property reporting_step: float#
Get the reporting time step of the simulation in seconds.
- Returns:
Reporting time step
- Return type:
double
- property routing_step: float#
Get the routing time step of the simulation in seconds.
- Returns:
Routing time step
- Return type:
double
- save_hotstart(hotstart_file)#
Save a hotstart file.
- set_lid_drain(lid_index, coeff, expon, offset)#
Set the underdrain flow parameters of a LID process at runtime.
The drain parameters are read live each routing step, so a mid-run edit takes effect on the next step. Values use input-file units, matching the [LID_CONTROLS] DRAIN line.
- set_treatment(node_index, pollutant_index, expression)#
Set (or replace) the treatment expression for a node/pollutant pair.
Callable before the simulation starts or while it is running; a mid-run edit is evaluated from the next routing step on. A failed parse raises and leaves no treatment in place for the pair.
- set_value(object_type, property_type, index, value, sub_index=Ellipsis)#
Set a SWMM system property value.
- Parameters:
object_type (SWMMObjects) – SWMM object type (e.g., SWMMObjects.NODE)
property_type (Union[SWMMRainGageProperties, SWMMSubcatchmentProperties, SWMMNodeProperties, SWMMLinkProperties, SWMMSystemProperties]) – SWMM system property type (e.g., SWMMSystemProperties.START_DATE)
value (double) – Property value (e.g., 10.0)
sub_index (int) – Sub-index (e.g., 0) for properties with sub-indexes. For example pollutant index for POLLUTANT properties.
- Return type:
None
- property solver_state: SolverState#
Get the state of the solver.
- Returns:
Solver state
- Return type:
- start()#
Start the SWMM solver.
- Returns:
Error code (0 on success or no-op, non-zero on failure; -1 if not in OPEN state).
- Return type:
- property start_datetime: datetime#
Get the start date of the simulation.
- Returns:
Start date
- Return type:
datetime
- step(steps=Ellipsis)#
Step a SWMM simulation forward.
- Parameters:
steps (int) – Number of steps to run. Overrides internal stride step if greater than 0.
- Returns:
Error code (0 on success, non-zero on failure). The simulation transitions to the FINISHED state when complete; poll
solver_stateor readcurrent_datetimefor per-step data.- Return type:
- class LegacyNodes(solver)[source]#
Bases:
objectIterable collection of all SWMM nodes in the model.
- Parameters:
solver (Solver)
- class LegacyNode(solver, index, name='')[source]#
Bases:
objectProperty-based access to a single SWMM node.
- property node_type: SWMMNodeTypes#
- set_lateral_inflow(flow, log=None)[source]#
Prescribe an external lateral inflow at this node.
- Mass balance impact:
Adds flow to the node’s lateral inflow for the current timestep only. The value resets each step — call again to sustain. The injected volume appears in the routing mass balance under
ex_inflow(external inflow).
- Parameters:
flow (float) – Inflow rate in project flow units. Positive = inflow.
log (ExternalForcingLog | None) – Optional
ExternalForcingLogfor audit.
- Return type:
None
- set_pollutant_lateral_mass_flux(value, pollutant_index=0, log=None)[source]#
Set pollutant lateral mass flux at this node.
- Mass balance impact:
The mass flux = value (mass/time). This mass is added to the quality routing mass balance. Must be used together with
set_lateral_inflow()for the mass to be transported.
- Parameters:
value (float) – Mass flux in project mass/time units.
pollutant_index (int) – 0-based pollutant index.
log (ExternalForcingLog | None) – Optional
ExternalForcingLogfor audit.
- Return type:
None
- set_depth(value, log=None)[source]#
Override current water depth at this node.
- Mass balance impact:
Directly changes stored volume — affects storage balance. Use with care: the volume difference is not automatically tracked as an inflow or outflow.
- Parameters:
value (float) – Depth in project length units.
log (ExternalForcingLog | None) – Optional
ExternalForcingLogfor audit.
- Return type:
None
- class LegacyLinks(solver)[source]#
Bases:
objectIterable collection of all SWMM links in the model.
- Parameters:
solver (Solver)
- class LegacyLink(solver, index, name='')[source]#
Bases:
objectProperty-based access to a single SWMM link.
- property link_type: SWMMLinkTypes#
- set_setting(value, log=None)[source]#
Set the link control setting.
- Mass balance impact:
Changes flow capacity — affects routing. For pumps this controls on/off (0 or 1). For orifices/weirs it controls the fraction open (0-1). For conduits this has no direct effect unless used with inlet control.
- Parameters:
value (float) – Setting value (typically 0-1).
log (ExternalForcingLog | None) – Optional
ExternalForcingLogfor audit.
- Return type:
None
- set_flow(value, log=None)[source]#
Directly override the flow in this link.
- Mass balance impact:
Bypasses hydraulic routing — the specified flow is used regardless of head difference. Use with extreme care as this can break mass balance if the override is inconsistent with node volumes.
- Parameters:
value (float) – Flow rate in project flow units.
log (ExternalForcingLog | None) – Optional
ExternalForcingLogfor audit.
- Return type:
None
- class LegacySubcatchments(solver)[source]#
Bases:
objectIterable collection of all SWMM subcatchments.
- Parameters:
solver (Solver)
- class LegacySubcatchment(solver, index, name='')[source]#
Bases:
objectProperty-based access to a single SWMM subcatchment.
- property rain_scale_factor: float#
Per-subcatchment rainfall scale factor (> 0; 1.0 = no scaling).
Optional [SUBCATCHMENTS] token 9. Multiplies the gage-derived rainfall, composing with the gage scale factor. Settable mid-run. Raises if <= 0.
- property snow_scale_factor: float#
Per-subcatchment snowfall scale factor (> 0; 1.0 = no scaling).
Optional [SUBCATCHMENTS] token 10. Composes with the gage snow catch factor (SCF). Settable mid-run. Raises if <= 0.
- property infiltration_model: int#
Infiltration model code (0=Horton, 1=ModHorton, 2=GreenAmpt, etc.).
- get_subarea_mannings_n(sub_index)[source]#
Manning’s n for a subarea. sub_index: 0=impervious, 1=pervious.
- get_pollutant_runoff_concentration(pollutant_index=0)[source]#
Current pollutant concentration in runoff.
- set_api_rainfall(value, log=None)[source]#
Override rainfall for this subcatchment.
- Mass balance impact:
Overrides the rainfall used in the runoff calculation for this subcatchment. The overridden value appears in the runoff totals under
rainfall. Resets each timestep.
- Parameters:
value (float) – Rainfall intensity in project rainfall units.
log (ExternalForcingLog | None) – Optional
ExternalForcingLogfor audit.
- Return type:
None
- set_api_snowfall(value, log=None)[source]#
Override snowfall for this subcatchment.
- Mass balance impact:
Overrides the snowfall used in the snow accumulation/melt calculation. Affects the snow balance in runoff totals.
- Parameters:
value (float) – Snowfall rate in project units.
log (ExternalForcingLog | None) – Optional
ExternalForcingLogfor audit.
- Return type:
None
- set_api_pet(value, log=None)[source]#
Prescribe a potential evapotranspiration rate for this subcatchment.
Overrides the climate-derived evaporation rate for the subcatchment’s surface, LID, and groundwater upper-zone evaporation. The prescribed rate is applied as-is (it bypasses the DRY_ONLY option and monthly adjustments). Actual evaporation is capped to available water, so losses appear in the runoff totals under
evaporation. Persists until cleared withclear_api_pet.- Parameters:
value (float) – PET rate in user units (in/day or mm/day).
log (ExternalForcingLog or None) – Optional external forcing log for audit.
- Returns:
None
- Return type:
None
- get_api_pet()[source]#
Return the currently prescribed PET rate for this subcatchment.
- Returns:
Prescribed PET rate in user units (in/day or mm/day), or a negative value when no prescription is active.
- Return type:
- clear_api_pet(log=None)[source]#
Clear any prescribed PET rate, reverting to climate-derived evaporation.
- Parameters:
log (ExternalForcingLog or None) – Optional external forcing log for audit.
- Returns:
None
- Return type:
None
- set_external_pollutant_buildup(value, pollutant_index=0, log=None)[source]#
Add external pollutant buildup on this subcatchment.
- Mass balance impact:
Adds pollutant mass to the surface. This mass is available for washoff and appears in the quality mass balance.
- Parameters:
value (float) – Mass to add in project mass units.
pollutant_index (int) – 0-based pollutant index.
log (ExternalForcingLog | None) – Optional
ExternalForcingLogfor audit.
- Return type:
None
- property gw_moisture: float#
Groundwater upper-zone moisture content (state injection).
Reading returns the current upper-zone moisture; setting injects it mid-run. The subcatchment must have groundwater. Mass balance reflects the resulting storage discontinuity (hotstart-equivalent semantics).
- property gw_lower_depth: float#
Groundwater saturated-zone depth above the aquifer bottom (project length units; state injection).
- set_snow_state(surface, swe=None, fw=None, ati=None, coldc=None)[source]#
Inject the snow-pack state on one snow surface (state assimilation).
- Parameters:
surface (int) – Snow subarea (0 plowable, 1 impervious, 2 pervious), passed through as the property
sub_index.swe (float or None) – Snow water equivalent in project depth units; omit to leave unchanged.
fw (float or None) – Free water in project depth units; omit to leave unchanged.
ati (float or None) – Antecedent temperature index (deg F US, deg C SI); omit to leave unchanged.
coldc (float or None) – Cold content in project depth units; omit to leave unchanged.
- Return type:
None
- class LegacyRainGages(solver)[source]#
Bases:
objectIterable collection of all SWMM rain gages.
- Parameters:
solver (Solver)
- class LegacyRainGage(solver, index, name='')[source]#
Bases:
objectProperty-based access to a single SWMM rain gage.
- set_rainfall(value, log=None)[source]#
Override rainfall at this gage.
- Mass balance impact:
Overrides rainfall for all subcatchments linked to this gage. Appears in runoff totals under
rainfall.
- Parameters:
value (float) – Rainfall rate in project rainfall units.
log (ExternalForcingLog | None) – Optional
ExternalForcingLogfor audit.
- Return type:
None
- class LegacySystem(solver)[source]#
Bases:
objectSystem-level properties, simulation settings, and mass balance totals.
Wraps a
Solverinstance and provides convenient property-based access to global simulation parameters and post-simulation mass balance breakdowns.- Parameters:
solver (Solver)
- property flow_units: SWMMFlowUnits#
Flow units used in this simulation.
- get_evap_rate()[source]#
Return the current climate-derived evaporation rate.
The rate the engine would apply in the absence of any PET prescription, including monthly adjustments (read-only). Intended for caller-side composition with
LegacySubcatchment.set_api_pet: read this rate, apply your own adjustment logic, and prescribe the result.- Returns:
Evaporation rate in user units (in/day or mm/day).
- Return type:
- get_temperature()[source]#
Return the current air temperature.
- Returns:
Air temperature in user units (deg F or deg C).
- Return type:
- set_api_temperature(value)[source]#
Prescribe the air temperature used for snowmelt and temperature-derived evaporation.
Overrides the climate data-source value (bypassing monthly adjustments) and keeps derived quantities (saturation vapor pressure) consistent. Persists until cleared with
clear_api_temperature.- Parameters:
value (float) – Air temperature in user units (deg F or deg C).
- Returns:
None
- Return type:
None
- get_api_temperature()[source]#
Return the prescribed air temperature.
- Returns:
Prescribed temperature in user units, or -999 when no prescription is active.
- Return type:
- clear_api_temperature()[source]#
Clear any prescribed air temperature, reverting to climate data.
- Returns:
None
- Return type:
None
- get_wind_speed()[source]#
Return the current wind speed.
- Returns:
Wind speed in user units (mph or km/hr).
- Return type:
- set_api_wind_speed(value)[source]#
Prescribe the wind speed used in rain-on-snow melt.
Overrides the monthly/climate-file value. Persists until cleared with
clear_api_wind_speed.- Parameters:
value (float) – Wind speed in user units (mph or km/hr), >= 0.
- Returns:
None
- Return type:
None
- get_api_wind_speed()[source]#
Return the prescribed wind speed.
- Returns:
Prescribed wind speed in user units, or a negative value when no prescription is active.
- Return type:
- clear_api_wind_speed()[source]#
Clear any prescribed wind speed, reverting to climate data.
- Returns:
None
- Return type:
None
- set_api_evap_rate(value)[source]#
Prescribe the system-wide evaporation rate.
Replaces the climate-derived rate (after monthly adjustments) for every consumer — subcatchments, LID units, groundwater, conduits and storage nodes. Per-subcatchment
LegacySubcatchment.set_api_petstill takes precedence. Persists until cleared withclear_api_evap_rate.- Parameters:
value (float) – Evaporation rate in user units (in/day or mm/day), >= 0.
- Returns:
None
- Return type:
None
- get_api_evap_rate()[source]#
Return the prescribed system-wide evaporation rate.
- Returns:
Prescribed rate in user units, or a negative value when no prescription is active.
- Return type:
- clear_api_evap_rate()[source]#
Clear any prescribed evaporation rate, reverting to climate data.
- Returns:
None
- Return type:
None
- set_evap_dry_only(flag)[source]#
Set the evaporation DRY_ONLY option at runtime.
- Parameters:
flag (bool) –
Truesuppresses evaporation during rainfall.- Returns:
None
- Return type:
None
- get_evap_dry_only()[source]#
Return the evaporation DRY_ONLY option.
- Returns:
Trueif evaporation is suppressed during rainfall.- Return type:
- property routing_totals: Dict[str, float]#
System-level flow routing mass balance totals.
Returns a dict with keys: dw_inflow, ww_inflow, gw_inflow, ii_inflow, ex_inflow, flooding, outflow, evap_loss, seep_loss, reacted, init_storage, final_storage, pct_error.
Mass balance equation:
total_inflow = dw + ww + gw + ii + ex total_outflow = flooding + outflow + evap_loss + seep_loss storage_change = final_storage - init_storage balance = total_inflow - total_outflow - storage_change
- class ExternalForcingLog[source]#
Bases:
objectAppend-only log that records external forcing applied during a simulation.
Each entry stores the simulation time, target object, property modified, and the value applied.
- record(sim_time, object_type, object_id, property_name, value, mass_balance_category='')[source]#
Append a forcing record.
- Parameters:
sim_time (datetime) – Current simulation datetime.
object_type (str) – E.g.
"node","link","subcatchment".object_id (str) – Object name or index string.
property_name (str) – Property that was set.
value (float) – The value applied.
mass_balance_category (str) – Which mass-balance bucket is affected.
- Return type:
None
- to_dataframe()[source]#
Convert to a
pandas.DataFrame.Columns:
time,object_type,object_id,property,value,mass_balance_category.- Raises:
ImportError – If pandas is not installed.
- Return type:
pd.DataFrame
openswmm.legacy.output — SWMM 5.x binary output reader#
The openswmm.legacy.output subpackage reads the binary .out file
produced by either the legacy SWMM 5.x solver or the v6.0 engine.
openswmm.legacy.output#
Legacy EPA SWMM 5.x binary output file reader (Cython).
This subpackage provides the Output class for reading SWMM
.out result files, and enumeration types for element and attribute
access.
- class UnitSystem(*values)#
Bases:
EnumEnumeration of the unit system used in the output file.
- Variables:
US – US customary units.
SI – SI metric units.
- US = Ellipsis#
- SI = Ellipsis#
- class FlowUnits(*values)#
Bases:
EnumEnumeration of the flow units used in the simulation.
- Variables:
CFS – Cubic feet per second.
GPM – Gallons per minute.
MGD – Million gallons per day.
CMS – Cubic meters per second.
LPS – Liters per second.
MLD – Million liters per day.
- CFS = Ellipsis#
- GPM = Ellipsis#
- MGD = Ellipsis#
- CMS = Ellipsis#
- LPS = Ellipsis#
- MLD = Ellipsis#
- class ConcentrationUnits(*values)#
Bases:
EnumEnumeration of the concentration units used in the simulation.
- Variables:
MG – Milligrams per liter.
UG – Micrograms per liter.
COUNT – Counts per liter.
NONE – No units.
- MG = Ellipsis#
- UG = Ellipsis#
- COUNT = Ellipsis#
- NONE = Ellipsis#
- class ElementType(*values)#
Bases:
EnumEnumeration of the SWMM element types.
- Variables:
SUBCATCHMENT – Subcatchment.
NODE – Node.
LINK – Link.
SYS – System.
POLLUTANT – Pollutant.
- SUBCATCHMENT = Ellipsis#
- NODE = Ellipsis#
- LINK = Ellipsis#
- SYSTEM = Ellipsis#
- POLLUTANT = Ellipsis#
- class TimeAttribute(*values)#
Bases:
EnumEnumeration of the report time related attributes.
- Variables:
REPORT_STEP – Report step size (seconds).
NUM_PERIODS – Number of reporting periods.
- REPORT_STEP = Ellipsis#
- NUM_PERIODS = Ellipsis#
- class SubcatchAttribute(*values)#
Bases:
EnumEnumeration of the subcatchment attributes.
- Variables:
RAINFALL – Subcatchment rainfall (in/hr or mm/hr).
SNOW_DEPTH – Subcatchment snow depth (in or mm).
EVAPORATION_LOSS – Subcatchment evaporation loss (in/hr or mm/hr).
INFILTRATION_LOSS – Subcatchment infiltration loss (in/hr or mm/hr).
RUNOFF_RATE – Subcatchment runoff flow (flow units).
GROUNDWATER_OUTFLOW – Subcatchment groundwater flow (flow units).
GW_TABLE – Subcatchment groundwater elevation (ft or m).
SOIL_MOISTURE – Subcatchment soil moisture content (-).
POLLUTANT_CONCENTRATION – Subcatchment pollutant concentration (-).
- RAINFALL = Ellipsis#
- SNOW_DEPTH = Ellipsis#
- EVAPORATION_LOSS = Ellipsis#
- INFILTRATION_LOSS = Ellipsis#
- RUNOFF_RATE = Ellipsis#
- GROUNDWATER_OUTFLOW = Ellipsis#
- GROUNDWATER_TABLE_ELEVATION = Ellipsis#
- SOIL_MOISTURE = Ellipsis#
- POLLUTANT_CONCENTRATION = Ellipsis#
- class NodeAttribute(*values)#
Bases:
EnumEnumeration of the node attributes.
- Variables:
INVERT_DEPTH – Node depth above invert (ft or m).
HYDRAULIC_HEAD – Node hydraulic head (ft or m).
STORED_VOLUME – Node volume stored (ft3 or m3).
LATERAL_INFLOW – Node lateral inflow (flow units).
TOTAL_INFLOW – Node total inflow (flow units).
FLOODING_LOSSES – Node flooding losses (flow units).
POLLUTANT_CONCENTRATION – Node pollutant concentration (-).
- INVERT_DEPTH = Ellipsis#
- HYDRAULIC_HEAD = Ellipsis#
- STORED_VOLUME = Ellipsis#
- LATERAL_INFLOW = Ellipsis#
- TOTAL_INFLOW = Ellipsis#
- FLOODING_LOSSES = Ellipsis#
- POLLUTANT_CONCENTRATION = Ellipsis#
- class LinkAttribute(*values)#
Bases:
EnumEnumeration of the link attributes.
- Variables:
FLOW_RATE – Link flow rate (flow units).
FLOW_DEPTH – Link flow depth (ft or m).
FLOW_VELOCITY – Link flow velocity (ft/s or m/s).
FLOW_VOLUME – Link flow volume (ft3 or m3).
CAPACITY – Link capacity (fraction of conduit filled).
POLLUTANT_CONCENTRATION – Link pollutant concentration (-).
- FLOW_RATE = Ellipsis#
- FLOW_DEPTH = Ellipsis#
- FLOW_VELOCITY = Ellipsis#
- FLOW_VOLUME = Ellipsis#
- CAPACITY = Ellipsis#
- POLLUTANT_CONCENTRATION = Ellipsis#
- class SystemAttribute(*values)#
Bases:
EnumEnumeration of the system attributes.
- Variables:
AIR_TEMP – Air temperature (deg. F or deg. C).
RAINFALL – Rainfall intensity (in/hr or mm/hr).
SNOW_DEPTH – Snow depth (in or mm).
EVAP_INFIL_LOSS – Evaporation and infiltration loss rate (in/day or mm/day).
RUNOFF_FLOW – Runoff flow (flow units).
DRY_WEATHER_INFLOW – Dry weather inflow (flow units).
GROUNDWATER_INFLOW – Groundwater inflow (flow units).
RDII_INFLOW – Rainfall Derived Infiltration and Inflow (RDII) (flow units).
DIRECT_INFLOW – Direct inflow (flow units).
TOTAL_LATERAL_INFLOW – Total lateral inflow; sum of variables 4 to 8 (flow units).
FLOOD_LOSSES – Flooding losses (flow units).
OUTFALL_FLOWS – Outfall flow (flow units).
VOLUME_STORED – Volume stored in storage nodes (ft3 or m3).
EVAPORATION_RATE – Evaporation rate (in/day or mm/day).
- AIR_TEMP = Ellipsis#
- RAINFALL = Ellipsis#
- SNOW_DEPTH = Ellipsis#
- EVAP_INFIL_LOSS = Ellipsis#
- RUNOFF_FLOW = Ellipsis#
- DRY_WEATHER_INFLOW = Ellipsis#
- GROUNDWATER_INFLOW = Ellipsis#
- RDII_INFLOW = Ellipsis#
- DIRECT_INFLOW = Ellipsis#
- TOTAL_LATERAL_INFLOW = Ellipsis#
- FLOOD_LOSSES = Ellipsis#
- OUTFALL_FLOWS = Ellipsis#
- VOLUME_STORED = Ellipsis#
- EVAPORATION_RATE = Ellipsis#
- exception SWMMOutputException(message)#
Bases:
ExceptionException class for SWMM output file processing errors.
Constructor to initialize the exception message.
- Parameters:
message (str) – Error message.
- Return type:
None
- class Output(output_file)#
Bases:
objectClass to read and process the output file generated by the SWMM simulation.
- Variables:
_output_file_handle – Handle to the SWMM output file.
_version – Version of the SWMM output file.
_units – Unit system used in the SWMM output file.
_flow_units – Flow units used in the SWMM output file.
_output_size – Size of the project in the SWMM output file.
_pollutant_units – Pollutant units used in the SWMM output file.
_start_date – Start date of the simulation in the SWMM output file.
_report_step – Report step size in seconds.
_num_periods – Number of reporting periods.
_times – Times of the simulation in the SWMM output file.
- Parameters:
output_file (str)
Constructor to open the SWMM output file.
- Parameters:
output_file (str) – Path to the SWMM output file.
- __init__(output_file)#
Constructor to open the SWMM output file.
- Parameters:
output_file (str) – Path to the SWMM output file.
- Return type:
None
- property flow_units: FlowUnits#
Method to get the flow units used in the SWMM output file.
- Returns:
Flow units used in the SWMM output file.
- Return type:
- get_element_name(element_type, element_index)#
Method to get the name of an element in the SWMM output file.
- get_element_names(element_type)#
Method to get the names of all elements of a given type in the SWMM output file.
- get_link_timeseries(element_index, attribute, start_date_index=Ellipsis, end_date_index=Ellipsis, sub_index=Ellipsis)#
Method to get the time series data for a link attribute in the SWMM output file.
- Parameters:
element_index (int) – Index of the link.
attribute (LinkAttribute) – Link attribute.
start_date_index (int) – Start date index. Default is 0.
end_date_index (int) – End date index. Default is the last date index.
sub_index (int) – Attribute index for the subcatchment non enumerated attributes primarily for the pollutants
- Returns:
Time series data for the link attribute.
- Return type:
Dict[datetime, double]
- get_link_values_by_time_and_attribute(time_index, attribute, sub_index=Ellipsis)#
Method to get the link values for all links for a given time index and attribute.
- Parameters:
time_index (int) – Time index.
attribute (LinkAttribute) – Link attribute.
sub_index (int) – Attribute index for the subcatchment non enumerated attributes primarily for the pollutants
- Returns:
Link values for all links.
- Return type:
- get_link_values_by_time_and_element_index(time_index, element_index)#
Method to get all attributes of a given link for specified time.
- get_node_timeseries(element_index, attribute, start_date_index=Ellipsis, end_date_index=Ellipsis, sub_index=Ellipsis)#
Method to get the time series data for a node attribute in the SWMM output file.
- Parameters:
attribute (NodeAttribute) – Node attribute.
start_date_index (int) – Start date index. Default is 0.
end_date_index (int) – End date index. Default is the last date index.
sub_index (int) – Attribute index for the subcatchment non enumerated attributes primarily for the pollutants
- Returns:
Time series data for the node attribute.
- Return type:
Dict[datetime, double]
- get_node_values_by_time_and_attribute(time_index, attribute, sub_index=Ellipsis)#
Method to get the node values for all nodes for a given time index and attribute.
- Parameters:
time_index (int) – Time index.
attribute (NodeAttribute) – Node attribute.
sub_index (int) – Attribute index for the subcatchment non enumerated attributes primarily for the pollutants
- Returns:
Node values for all nodes.
- Return type:
- get_node_values_by_time_and_element_index(time_index, element_index)#
Method to get all attributes of a given node for specified time.
- get_num_properties(element_type)#
Method to get the number of properties for an element type in the SWMM output file.
- get_num_variables(element_type)#
Method to get the number of variables for an element type in the SWMM output file.
- get_property_code(element_type, property_index)#
Method to get the property code for an element type in the SWMM output file.
- get_property_codes(element_type)#
Method to get the property codes for an element type in the SWMM output file.
- get_property_value(element_type, element_index, property_code)#
Method to get the property value for an element in the SWMM output file.
- get_property_values(element_type, element_index)#
Method to get the property values for an element type in the SWMM output file.
- get_subcatchment_timeseries(element_index, attribute, start_date_index=Ellipsis, end_date_index=Ellipsis, sub_index=Ellipsis)#
Method to get the time series data for a subcatchment attribute in the SWMM output file.
- Parameters:
attribute (SubcatchAttribute) – Subcatchment attribute.
start_date_index (int) – Start date index. Default is 0.
end_date_index (int) – End date index. Default is the last date index.
sub_index (int) – Attribute index for the subcatchment non enumerated attributes primarily for the pollutants
- Returns:
Time series data for the subcatchment attribute.
- Return type:
Dict[datetime, double]
- get_subcatchment_values_by_time_and_attribute(time_index, attribute, sub_index=Ellipsis)#
Method to get the subcatchment values for all subcatchments for a given time index and attribute.
- Parameters:
time_index (int) – Time index.
attribute (SubcatchAttribute) – Subcatchment attribute.
sub_index (int) – Attribute index for the subcatchment non enumerated attributes primarily for the pollutants
- Returns:
Subcatchment values for all subcatchments.
- Return type:
- get_subcatchment_values_by_time_and_element_index(time_index, element_index)#
Method to get all attributes of a given subcatchment for specified time.
- get_system_timeseries(attribute, start_date_index=Ellipsis, end_date_index=Ellipsis, sub_index=Ellipsis)#
Method to get the time series data for a system attribute in the SWMM output file.
- Parameters:
attribute (SystemAttribute) – System attribute.
start_date_index (int) – Start date index. Default is 0.
end_date_index (int) – End date index. Default is the last date index.
sub_index (int) – Attribute index for the subcatchment non enumerated attributes primarily for the pollutants
- Returns:
Time series data for the system attribute.
- Return type:
Dict[datetime, double]
- get_system_values_by_time(time_index)#
Method to get all attributes of the system for specified time.
- get_system_values_by_time_and_attribute(time_index, attribute, sub_index=Ellipsis)#
Method to get the system values for a given time index and attribute.
- Parameters:
time_index (int) – Time index.
attribute (SystemAttribute) – System attribute.
sub_index (int) – Attribute index for the subcatchment non enumerated attributes primarily for the pollutants
- Returns:
System values.
- Return type:
- get_time_attribute(time_attribute)#
Method to get the temporal attributes of the simulation in the SWMM output file.
- Parameters:
time_attribute (TimeAttribute) – Temporal attribute.
- Returns:
Temporal attributes of the simulation in the SWMM output file.
- Return type:
- get_variable_code(element_type, variable_index)#
Method to get the variable code for an element type in the SWMM output file.
- get_variable_codes(element_type)#
Method to get the variable codes for an element type in the SWMM output file.
- property output_size: Dict[str, int]#
Method to get the size of the project in the SWMM output file.
- Returns:
Size of the project in the SWMM output file.
- Return type:
- property pollutant_units: List[ConcentrationUnits]#
Method to get the pollutant units used in the SWMM output file.
- Returns:
Pollutant units used in the SWMM output file.
- Return type:
List[ConcentrationUnits]
- property start_date: datetime#
Method to get the start date of the simulation in the SWMM output file.
- Returns:
Start date of the simulation in the SWMM output file.
- Return type:
datetime
- property times: List[datetime]#
Method to get the times of the simulation in the SWMM output file.
- Returns:
Times of the simulation in the SWMM output file.
- Return type:
List[datetime]
- property units: Tuple[UnitSystem, FlowUnits, List[ConcentrationUnits] | None]#
Method to get the unit system used in the SWMM output file.
- Returns:
Tuple of the unit system, flow units, and pollutant units used in the SWMM output file.
- Return type:
Tuple[UnitSystem, FlowUnits, Optional[List[ConcentrationUnits]]]