![]() |
OpenSWMM Engine
6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
|
| ▼ include | |
| ▼ openswmm | |
| ► engine | |
| openswmm_2d.h | Optional 2D surface routing module — C API |
| openswmm_callbacks.h | Callback function typedefs for the OpenSWMM Engine C API |
| openswmm_climate.h | OpenSWMM Engine — Climatology configuration C API |
| openswmm_controls.h | OpenSWMM Engine — Control Rules C API |
| openswmm_datetime.h | OpenSWMM Engine — SWMM DateTime conversion utilities (C API) |
| openswmm_edit.h | OpenSWMM Engine — Model editing C API (deletion and type conversion) |
| openswmm_engine.h | OpenSWMM Engine — primary transparent C API (master header) |
| openswmm_engine_export.h | |
| openswmm_forcing.h | Runtime forcing API — inject fluxes with mass-balance tracking |
| openswmm_gages.h | OpenSWMM Engine — Rain Gage C API |
| openswmm_geopackage.h | OpenSWMM Engine — GeoPackage C API |
| openswmm_gw2d.h | G-step 19 — the two-zone groundwater kernel's C API: authoring the [2D_AQUIFER*] rows, and reading the state and ledger while a run is in flight |
| openswmm_gw_transport.h | U4 (2026-09-07) — C API for the [GW_*] subsurface-transport authoring sections |
| openswmm_heat.h | Heat-transport configuration as an editable surface (phase H6a) |
| openswmm_hotstart.h | Hot start file management — transparent C API |
| openswmm_infil2d.h | Per-cell infiltration for the 2D overland-flow mesh — C API |
| openswmm_inflows.h | OpenSWMM Engine — Inflows (External, DWF, RDII) C API |
| openswmm_infrastructure.h | OpenSWMM Engine — Infrastructure (Transects, Streets, Inlets, LIDs) C API |
| openswmm_initial_quality.h | C API — [INITIAL_QUALITY] per-element initial concentrations (E-A4) |
| openswmm_links.h | OpenSWMM Engine — Link (conduit/pump/orifice/weir/outlet) C API |
| openswmm_massbalance.h | OpenSWMM Engine — Mass Balance / Continuity C API |
| openswmm_model.h | OpenSWMM Engine — Model building and options C API |
| openswmm_nodes.h | OpenSWMM Engine — Node C API |
| openswmm_output.h | OpenSWMM Engine — Output File Reader C API |
| openswmm_pollutants.h | OpenSWMM Engine — Pollutant / Water Quality C API |
| openswmm_process_components.h | C API — [PROCESS_COMPONENTS] registrations (E-C3 subset of the transport IO plan §5): enumerate, find, register, remove |
| openswmm_quality.h | OpenSWMM Engine — Water Quality (Landuse / Buildup / Washoff / Treatment) C API |
| openswmm_reactions.h | C API — the reaction system ([REACTION_*] / .rxn) surface for GUI editors (E-C1: validation + discovery) |
| openswmm_spatial.h | OpenSWMM Engine — Spatial Frame C API |
| openswmm_statistics.h | OpenSWMM Engine — Statistics Query C API |
| openswmm_subcatchments.h | OpenSWMM Engine — Subcatchment C API |
| openswmm_tables.h | OpenSWMM Engine — Tables (Time Series & Curves) and Patterns C API |
| openswmm_transport.h | E6 — the ARD transport configuration surface ([TRANSPORT_OPTIONS], [TRANSPORT_BOUNDARIES], [TRANSPORT_SOURCES]) |
| openswmm_water_age.h | Water-age source-table CRUD (subplan X5 = water-age plan A6, the minimal GUI-facing subset; TRANSPORT_QUALITY_GUI_PLAN §6 prereq 5) |
| openswmm_xsect.h | OpenSWMM Engine — standalone cross-section geometry C API |
| ► legacy | |
| ► engine | |
| openswmm_legacy_solver_export.h | |
| openswmm_solver.h | |
| ► output | |
| openswmm_output.h | Header file for SWMM output API |
| openswmm_output_enums.h | Header file for SWMM output API enumeration types |
| ► plugin_sdk | |
| IInputPlugin.hpp | Interface for input file reader/writer plugins |
| IOutputPlugin.hpp | Interface for output-writing plugins |
| IPluginComponentInfo.hpp | Interface that describes a plugin component — metadata and factory methods |
| IReportPlugin.hpp | Interface for report-writing plugins |
| IStateIOPlugin.hpp | Interface for state / hot-start IO plugins |
| PluginDiscovery.hpp | Public, framework-free facade for enumerating plugin file filters |
| PluginState.hpp | Plugin lifecycle state enumerator |
| SimulationSnapshot.hpp | Read-only snapshot of simulation state passed to plugins |
| ▼ manuals | |
| application | |
| ▼ reference | |
| ► hydraulics | |
| sections | |
| ► hydrology | |
| sections | |
| ► quality | |
| sections | |
| ▼ user | |
| manual | |
| ▼ src | |
| ▼ engine | |
| ► 2d | |
| ► api | |
| Api2D.cpp | C API implementation for the 2D surface routing module |
| Api2D.hpp | C API implementation bridge for the 2D surface routing module |
| ApiGw2D.cpp | G-step 19 — implementation of openswmm_gw2d.h |
| ApiGwTransport.cpp | U4 — implementation of openswmm_gw_transport.h |
| ApiInfil2D.cpp | C API implementation for 2D per-cell infiltration (plan §5.5.6, I6) |
| ► coupling | |
| NodeCoupling.cpp | Implementation of 2D↔1D node coupling via orifice exchange |
| NodeCoupling.hpp | Orifice-equation exchange between 2D surface and SWMM nodes |
| ► data | |
| BoundaryData.hpp | Structure-of-Arrays (SoA) storage for 2D mesh boundary conditions |
| MeshData.hpp | Structure-of-Arrays (SoA) storage for 2D triangular mesh geometry |
| PendingRows2D.hpp | Parse-time scratch rows for [2D_BOUNDARY_CONDITIONS] and [2D_EDGE_CONVEYANCE] input sections |
| Report2DVars.hpp | Header-only token ↔ bitmask helpers for [2D_OPTIONS] REPORT_2D_VARIABLES / REPORT_2D_SPECIES / REPORT_2D_STEP |
| Serialize2D.hpp | Header-only helpers shared by 2D model serialization consumers (InpWriter [2D_*] emission, GeoPackage writer) |
| SolverOptions2D.hpp | Configuration options for the 2D surface routing solver |
| SurfaceStateData.hpp | Structure-of-Arrays (SoA) storage for 2D surface routing state |
| SurfaceTransportState.hpp | Overland transport S1 — per-cell species MASS on the 2D surface |
| ► gpu | |
| ExplicitKokkosSurfaceSolver.cpp | Kokkos port of the explicit local-inertial LTS marcher |
| ExplicitKokkosSurfaceSolver.hpp | Kokkos (OpenMP/CUDA/HIP/SYCL) port of the explicit local-inertial FV marcher with tiered local timestepping |
| GpuPluginCuda.cpp | Plugin entry points for the Phase 2 Kokkos/CUDA surface solver |
| GpuPluginHip.cpp | Plugin entry points for the Phase 5 Kokkos/HIP surface solver (AMD) |
| GpuPluginOmp.cpp | Plugin entry points for the Phase 1 Kokkos/OpenMP surface solver |
| GpuPluginStub.cpp | Placeholder GPU surface-solver plugin (Phase 0 scaffold) |
| GpuPluginSycl.cpp | Plugin entry points for the Phase 5 Kokkos/SYCL surface solver (Intel) |
| KokkosPerfCounters.hpp | OPENSWMM_PERF=1 launch/fence/deep_copy counters for the Kokkos surface solver, riding the in-process Kokkos::Tools callbacks |
| KokkosTypes.hpp | Execution-space selection + view aliases for the Kokkos marcher plugin |
| ► gw | |
| GwTransportData.hpp | U4 (2026-09-07) — authoring state for subsurface (groundwater) transport: [GW_TRANSPORT_OPTIONS], [GW_TRANSPORT_PARAMS], [GW_SORPTION], [GW_INITIAL_QUALITY], [GW_BOUNDARY_QUALITY] and [GW_SOURCES] |
| GwTransportSections.cpp | U4 — [GW_*] parsers, registration and resolution (see header) |
| GwTransportSections.hpp | U4 (2026-09-07) — parsers and registration for the [GW_*] subsurface-transport authoring sections. See GwTransportData.hpp for the shape and the authoring-only contract |
| ► infil | |
| Infil2D.cpp | Per-cell infiltration for the 2D overland-flow mesh (track I) |
| Infil2D.hpp | Per-cell infiltration for the 2D overland-flow mesh (track I) |
| ► input | |
| SectionHandlers2D.cpp | Implementation of 2D input section parsers |
| SectionHandlers2D.hpp | Input section parsers for the 2D surface routing module |
| ► mesh | |
| MeshBuilder.cpp | Implementation of mesh topology construction and geometry computation |
| MeshBuilder.hpp | Topology construction and geometry precomputation for the 2D mesh |
| QuadVfr.hpp | Volume–free-surface relationship (VFR) for a quadrilateral cell |
| RainfallInterpolator.cpp | Implementation of natural-neighbour / IDW rainfall interpolation |
| RainfallInterpolator.hpp | Static per-cell weights mapping raingage rainfall onto the 2D mesh |
| VertexReconstruction.cpp | Implementation of pseudo-Laplacian vertex stencil construction and head reconstruction |
| VertexReconstruction.hpp | Pseudo-Laplacian vertex reconstruction stencil computation |
| VfrClosure.hpp | Volume–free-surface (VFR) closure for a planar-bed triangular cell |
| ► output | |
| Default2DOutputPlugin.cpp | HDF5 output plugin for 2D surface routing results (CF/UGRID) |
| Default2DOutputPlugin.hpp | Built-in HDF5 output plugin for 2D surface routing results |
| ► solver | |
| DiffusiveKernels.hpp | Face law and step bound for MOMENTUM_EQUATION DIFFUSIVE_WAVE (plans/2D_FULL_SWE_SHOCK_CAPTURING_PLAN_2026-09-05.md §2.3) |
| ExplicitInertialSolver.cpp | Implementation of the explicit local-inertial FV marcher with power-of-two tiered local timestepping (LTS) |
| ExplicitInertialSolver.hpp | Explicit local-inertial FV time-marcher for the 2D surface |
| GpuPluginAbi.h | Stable C ABI between the core engine and an optional GPU solver plugin |
| InertialEdges.cpp | Implementation of the unique interior-edge builder |
| InertialEdges.hpp | Unique interior-edge structure for the local-inertial momentum DOFs |
| InertialKernels.hpp | Single-source flat kernels for the explicit local-inertial marcher |
| ISurfaceSolver.hpp | Backend-neutral interface for the 2D surface-routing time integrator |
| SurfaceFluxCalculator.cpp | Implementation of gradient computation, slope limiting, and edge fluxes |
| SurfaceFluxCalculator.hpp | Edge flux computation, gradient calculation, and slope limiting |
| SurfaceSolverFactory.cpp | Implementation of runtime 2D surface-solver backend selection |
| SurfaceSolverFactory.hpp | Runtime selection of the 2D surface solver backend (Phase 4) |
| SweKernels.hpp | Face kernels for MOMENTUM_EQUATION FULL_SWE — the conservative shallow-water equations with the convective term and shock capturing (plans/2D_FULL_SWE_SHOCK_CAPTURING_PLAN_2026-09-05.md §2.2) |
| ► subsurface | |
| SigmaColumn.cpp | G-steps 4 and 5 — see the header for the coordinate, the flux forms and the handover convention |
| SigmaColumn.hpp | G-steps 4 and 5 — closure B: the σ-coordinate explicit unsaturated column with a moving lower boundary (the water table) |
| SoilCharacteristic.cpp | G-steps 2 and 13 — see the header, especially its |
| SoilCharacteristic.hpp | G-steps 2 and 13 — the four production soil-characteristic laws and the closure-A quasi-steady recharge q₀(hᵤ, h_g) |
| SubsurfaceData.cpp | Sizing, storage accounting and token round-trip for the two-zone groundwater state (G-step 1) |
| SubsurfaceData.hpp | G-step 1 — state, parameters and options for the two-zone groundwater kernel (TWO_ZONE_GROUNDWATER_EXPLICIT_LTS_PLAN §4) |
| SubsurfaceSections.cpp | Parsers, resolution and writer for the [2D_AQUIFER*] sections |
| SubsurfaceSections.hpp | G-step 1 — [2D_AQUIFER_OPTIONS], [2D_AQUIFER] and [2D_AQUIFER_NODE]: parsing, unit resolution and writing |
| SubsurfaceSolver.cpp | The two-zone groundwater kernel (G-steps 3, 6-12, 14, 16) |
| SubsurfaceSolver.hpp | G-steps 3, 6-12, 16 — the two-zone groundwater kernel: saturated FV update, lateral Darcy, closure dispatch, node exchange, Dunne transfer, ET, and the LTS tier hooks the surface marcher calls |
| SurfaceRouter2D.cpp | Implementation of the 2D surface routing orchestrator |
| SurfaceRouter2D.hpp | Top-level orchestrator for the optional 2D surface routing module |
| ► controls | |
| Controls.cpp | Rule-based control engine — full legacy parity implementation |
| Controls.hpp | Rule-based control engine — full legacy parity |
| ► core | |
| charconv_compat.hpp | Portable from_chars for floating-point types |
| Constants.hpp | Global physical, numerical, and model constants for OpenSWMM Engine |
| DateTime.hpp | DateTime utility functions — numerically identical to legacy datetime.c |
| ErrorCodes.cpp | Error/warning description table and formatting — legacy-compatible |
| ErrorCodes.hpp | Legacy-compatible error and warning codes with description lookup |
| FilePathPair.hpp | Carrier for an external file reference in a SWMM model |
| HotStartManager.cpp | Hot start file I/O — implementation |
| HotStartManager.hpp | Hot start file manager — in-memory representation + I/O |
| InpWriter.cpp | Comprehensive .inp serialisation — round-trip identical output |
| InpWriter.hpp | Write a SimulationContext to a SWMM .inp file |
| InterfaceFile.cpp | Routing interface file — coupling between separate SWMM simulations |
| InterfaceFile.hpp | Routing interface file — coupling between separate SWMM simulations |
| openswmm_api_common.hpp | Internal shared helpers for C API impl files |
| openswmm_climate_impl.cpp | C API implementation — climatology configuration get/set |
| openswmm_controls_impl.cpp | C API implementation — control rules and direct link control actions |
| openswmm_datetime_impl.cpp | C API implementation — SWMM DateTime encode/decode utilities |
| openswmm_edit_impl.cpp | C API implementation — object deletion and type conversion |
| openswmm_engine_impl.cpp | C API implementation — engine lifecycle, callbacks, errors, timing |
| openswmm_forcing_impl.cpp | C API implementation — runtime forcing with mass-balance tracking |
| openswmm_gages_impl.cpp | C API implementation — rain gage identity, creation, properties, state, bulk |
| openswmm_heat_impl.cpp | Heat-configuration C API (phase H6a) |
| openswmm_hotstart_impl.cpp | Hot start C API implementation — thin wrappers around HotStartManager |
| openswmm_inflows_impl.cpp | C API implementation — external inflows, DWF, RDII |
| openswmm_infrastructure_impl.cpp | C API implementation — transects, streets, inlets, LID controls, LID usage |
| openswmm_initial_quality_impl.cpp | C API implementation — [INITIAL_QUALITY] per-element rows (E-A4) |
| openswmm_links_impl.cpp | C API implementation — link identity, creation, properties, state, bulk |
| openswmm_massbalance_impl.cpp | C API implementation — continuity errors and flux totals |
| openswmm_model_impl.cpp | C API implementation — model building, options, user flags, CRS |
| openswmm_nodes_impl.cpp | C API implementation — node identity, creation, properties, state, bulk |
| openswmm_pollutants_impl.cpp | C API implementation — pollutant identity, creation, properties, quality injection |
| openswmm_process_components_impl.cpp | C API implementation — [PROCESS_COMPONENTS] registrations (E-C3) |
| openswmm_quality_impl.cpp | C API implementation — landuse, buildup, washoff, treatment |
| openswmm_reactions_impl.cpp | C API implementation — reaction-system validation + discovery (E-C1) |
| openswmm_spatial_impl.cpp | C API implementation — spatial frame: CRS, coordinates, vertices, polygons |
| openswmm_statistics_impl.cpp | C API implementation — node, link, subcatchment statistics queries |
| openswmm_subcatchments_impl.cpp | C API implementation — subcatchment identity, creation, properties, state, bulk |
| openswmm_tables_impl.cpp | C API implementation — tables (time series, curves) and patterns |
| openswmm_transport_impl.cpp | E6 — ARD transport configuration surface. See the header for the read-only-rows decision and its reason |
| openswmm_water_age_impl.cpp | Water-age source-table CRUD implementation (subplan X5) |
| openswmm_xsect_impl.cpp | C API implementation — standalone cross-section geometry |
| PathResolver.cpp | PathResolver implementation — see PathResolver.hpp |
| PathResolver.hpp | Pure-function path normalisation and relative-path math |
| PerfTimers.hpp | |
| SimulationContext.hpp | The central, reentrant simulation context for the new engine |
| SimulationOptions.hpp | Simulation options parsed from the [OPTIONS] section |
| SpatialFrame.hpp | Spatial frame — CRS specification and coordinate data for nodes/links |
| StringCase.hpp | Case-insensitive string helpers matching legacy SWMM name semantics |
| ThreadInfo.cpp | Process-wide hardware / OpenMP thread capability query |
| ThreadInfo.hpp | Process-wide hardware / OpenMP thread capability query |
| TypeHelpers.hpp | Shared C↔internal type mapping utilities for node and link type enums |
| UnitConversion.cpp | Global unit conversion — matching legacy SWMM UCF() |
| UnitConversion.hpp | Global unit conversion factors — matching legacy SWMM Ucf[]/Qcf[] |
| UserFlags.hpp | User-defined model flags (InfoWorks ICM-style, two-section design) |
| ► data | |
| ArdConfigData.hpp | Parsed configuration of the Eulerian ARD transport component (org.hydrocouple.openswmm.transport.ard, config file model.ard) |
| BedZoneData.hpp | Plan H6b — the bed / hyporheic transient-storage zone |
| ForcingData.hpp | Per-element runtime forcing state — SoA layout |
| GageData.hpp | Structure-of-Arrays (SoA) storage for rain gages |
| HeatData.hpp | Heat-transport data (heat plan §1, §3; phase H1) |
| HeatOverrideData.hpp | Plan PE — per-element radiative and bed attributes |
| HydrologyData.hpp | SoA stores for snowpacks, aquifers, LID controls, and LID usage |
| InflowData.hpp | SoA stores for external inflows, DWF, RDII, and time patterns |
| InfraData.hpp | SoA stores for transects, streets, inlets, and control rules |
| InitialQualityData.hpp | SoA store for [INITIAL_QUALITY] per-element initial concentrations |
| LidLayerSpeciesData.hpp | Phase A4 — per-(LID unit, layer, species) transported state |
| LinkData.hpp | Structure-of-Arrays (SoA) storage for all link types |
| LinkSubtypes.hpp | Relational (normalized) Structure-of-Arrays side-tables for link subtypes |
| NameIndex.hpp | O(1) name-to-index lookup for SWMM objects |
| NodeData.hpp | Structure-of-Arrays (SoA) storage for all node types |
| NodeSubtypes.hpp | Relational (normalized) Structure-of-Arrays side-tables for node subtypes |
| PollutantData.hpp | Structure-of-Arrays (SoA) storage for pollutants and water quality |
| QualityData.hpp | SoA stores for land uses, buildup, washoff, and treatment |
| ReactionData.hpp | Multispecies reaction system data (EPANET-MSX conventions) — SoA, hot/cold split per LARD plan §16 D-L3 / reactions plan D-R3 |
| ReactionTokens.hpp | POD reaction-VM instruction + span types (phase R2, D-L3 flat pool). Data-layer header: no dependencies, included by both ReactionData (which owns the pool) and the transport-side compiler/evaluator (ReactionExpression) |
| SpeciesRegistry.hpp | Single source of truth for all transported constituents (Unified Transport master plan §4.1; phase T0a) |
| StorageGeometry.hpp | Storage-shape raw parameters ⇄ area-relation coefficients, and the INP/GeoPackage keywords for each shape |
| SubcatchData.hpp | Structure-of-Arrays (SoA) storage for subcatchments |
| TableData.cpp | File-backed I/O, cache management, validation, and multicolumn lookup for Table/TableData |
| TableData.hpp | Time series and rating curve data with bidirectional cursor |
| WaterAgeData.hpp | Water-age tracking data (water age plan §1–§2, phase A1a) |
| ► edit | |
| ObjectDeleter.cpp | Implementation of object deletion and cascade analysis |
| ObjectDeleter.hpp | Internal C++ API for object deletion and cascade analysis |
| TypeConverter.cpp | In-place node and link type conversion |
| TypeConverter.hpp | Internal C++ API for in-place node and link type conversion |
| VirtualJunctionOps.cpp | Virtual-junction rule validation, flag editing, split and fusion |
| VirtualJunctionOps.hpp | Internal C++ API for virtual-junction editing: rule validation, derived geometry, set/clear flag, conduit split and pair re-fusion |
| ► hydraulics | |
| ► fv | |
| ExplicitFvSolver.cpp | Implementation of the CPU explicit finite-volume 1D network solver |
| ExplicitFvSolver.hpp | Serial/OpenMP CPU reference implementation of the explicit FV 1D solver |
| FvKernels.hpp | Single-source scalar kernels for the explicit FV 1D network solver |
| FvOptions.hpp | Option struct for the explicit finite-volume 1D network solver |
| INetworkSolver.hpp | Backend-neutral interface for the explicit FV 1D network integrator |
| NetworkMeshBuilder.cpp | Implementation of the FV network mesh construction |
| NetworkMeshBuilder.hpp | Build the FV cell/face mesh from a SimulationContext |
| NetworkMeshData.hpp | SoA storage for the 1D finite-volume network mesh and its state |
| NetworkSolverFactory.cpp | Implementation of runtime FV backend selection |
| NetworkSolverFactory.hpp | Runtime backend selection for the explicit FV 1D network solver |
| PressurizedHeadSolver.cpp | Implementation of the R2a implicit pressurized head update |
| PressurizedHeadSolver.hpp | Implicit acoustic/slot head update on the pressurized subset (slot program R2a, Strategy E) |
| Culvert.cpp | Culvert inlet control — numerically identical to legacy culvert.c |
| Culvert.hpp | Culvert inlet control — FHWA HEC-5 equations |
| Divider.cpp | Flow divider node logic — legacy-faithful divider_getOutflow |
| Divider.hpp | Flow divider node logic — cutoff, overflow, tabular, weir |
| DynamicWave.cpp | Dynamic wave routing – batch-oriented St. Venant equations |
| DynamicWave.hpp | Dynamic wave routing solver — batch-oriented St. Venant equations |
| Exfiltration.cpp | Storage exfiltration — numerically identical to legacy exfil.c |
| Exfiltration.hpp | Storage node exfiltration — Green-Ampt bottom/bank seepage |
| ForceMain.cpp | Force main friction — numerically identical to legacy forcmain.c |
| ForceMain.hpp | Force main friction — Hazen-Williams and Darcy-Weisbach |
| HydClosureKernels.hpp | Portable scalar closures shared by the host solvers and the device backend: FHWA HEC-5 culvert inlet control and force-main friction |
| HydStructures.cpp | Non-conduit link flow — batch by type, numerically identical to legacy |
| HydStructures.hpp | Non-conduit link flow: pumps, orifices, weirs, outlets |
| Inlet.cpp | Street inlet capture — numerically identical to legacy inlet.c |
| Inlet.hpp | Street inlet capture efficiency — FHWA HEC-22 |
| KinematicWave.cpp | Kinematic wave routing — batch-oriented, numerically identical to legacy |
| KinematicWave.hpp | Kinematic wave routing solver — batch-oriented design |
| Link.cpp | Link hydraulics — numerically identical to legacy link.c |
| Link.hpp | Link hydraulics — velocity, Froude, Manning conveyance, settings |
| Node.cpp | Node hydraulics — numerically identical to legacy node.c |
| Node.hpp | Node hydraulics — volume/depth/head conversions, surface area, overflow |
| Outfall.cpp | Outfall boundary depths — matching legacy link_setOutfallDepth / outfall_setOutletDepth |
| Outfall.hpp | Outfall boundary depth computation — free/normal/fixed/tidal/timeseries |
| Roadway.cpp | Roadway weir overflow — numerically identical to legacy roadway.c |
| Roadway.hpp | Roadway weir overflow — FHWA HDS-5 |
| Routing.cpp | Top-level routing dispatcher |
| Routing.hpp | Top-level routing dispatcher — KW / DW / Steady-state |
| Street.cpp | Street cross-section — numerically identical to legacy street.c |
| Street.hpp | Street cross-section geometry — gutter + road crown + backing |
| TimestepController.cpp | Explicit next-timestep computation — implementation |
| TimestepController.hpp | Explicit next-timestep computation for the new engine |
| TopoSort.cpp | Topological sort — Kahn's algorithm, numerically identical to legacy |
| TopoSort.hpp | Topological sort of network links for KW/steady-state routing |
| Transect.cpp | Irregular transect — numerically identical to legacy transect.c |
| Transect.hpp | Irregular transect cross-section geometry (HEC-2 style) |
| xsect_tables.hpp | Cross-section lookup tables — translated from legacy xsect.dat |
| XSectBatch.cpp | Data-oriented batch cross-section geometry — shape-grouped SoA |
| XSectBatch.hpp | Cross-section geometry — unified batch + per-element API |
| XSection.cpp | Cross-section geometry — faithful 1:1 port of legacy xsect.c |
| XSectKernels.hpp | Portable cross-section geometry kernels — one implementation, three consumers (host dynamic wave, host finite volume, device finite volume) |
| XSectLookup.hpp | Bit-exact geometry-table interpolation — the single source of truth |
| ► hydrology | |
| Climate.cpp | Climate processing — numerically identical to legacy climate.c |
| Climate.hpp | Climate processing — evaporation, temperature, wind |
| ClimateFile.cpp | Multi-format climate file reader — faithful to legacy climate.c |
| ClimateFile.hpp | Multi-format climate file reader for temperature, evaporation, wind |
| Gage.cpp | Rain gage processing — numerically identical to legacy gage.c |
| Gage.hpp | Rain gage processing — rainfall interpolation, type conversion |
| Groundwater.cpp | Two-zone groundwater — matching legacy gwater.c via RKF45 ODE solver |
| Groundwater.hpp | Two-zone groundwater model — batch-oriented ODE integration |
| Infiltration.cpp | Infiltration models — numerically identical to legacy infil.c |
| Infiltration.hpp | Infiltration models — Horton, Green-Ampt, SCS Curve Number |
| Inflow.cpp | External/DWF inflows — batch SoA, numerically identical to legacy |
| Inflow.hpp | External inflows, dry weather flows, and RDII at nodes |
| LID.cpp | LID control modules — batch-oriented, type-grouped |
| LID.hpp | Low Impact Development (LID) control modules |
| RDII.cpp | RDII unit hydrograph convolution — matching legacy rdii.c |
| RDII.hpp | RDII — rainfall-dependent infiltration/inflow via unit hydrograph |
| RdiiInterface.cpp | RDII interface file — use/save pre-computed RDII inflows |
| RdiiInterface.hpp | RDII interface file — use/save pre-computed RDII inflows |
| Runoff.cpp | Subcatchment runoff — 3-subarea nonlinear reservoir model |
| Runoff.hpp | Subcatchment runoff generation — batch-oriented nonlinear reservoir |
| RunoffInterface.cpp | Runoff interface file — binary save/load of pre-computed runoff |
| RunoffInterface.hpp | Runoff interface file — save/load pre-computed runoff results |
| Snow.cpp | Snowmelt — batch-oriented, vectorisable kernels |
| Snow.hpp | Snowmelt — degree-day and rain-on-snow methods |
| ► input | |
| ► geopackage | |
| ► formats | |
| ClimateFormat.cpp | User-CSV climate file — parser + materialiser |
| ClimateFormat.hpp | User-CSV climate-file parser / materialiser |
| FormatTypes.hpp | Plain-data types shared by every external-file format parser |
| HotstartFormat.cpp | Legacy HSF v4 binary hot-start file — parser + materialiser |
| HotstartFormat.hpp | Legacy HSF v4 binary hot-start file — parser / materialiser |
| RaingageFormat.cpp | SWMM "Standard" raingage text format — parser + materialiser |
| RaingageFormat.hpp | SWMM "Standard" raingage text-file parser / materialiser |
| RoutingInterfaceFormat.cpp | SWMM5 routing-interface text format — parser + materialiser |
| RoutingInterfaceFormat.hpp | SWMM5 routing interface text format — parser / materialiser |
| TimeseriesFormat.cpp | SWMM-native timeseries text format — parser + materialiser |
| TimeseriesFormat.hpp | SWMM-native timeseries text-file parser / materialiser |
| ExternalContentReader.cpp | Slice IO-8 — Part D content → SimulationContext slot hydration + scratch-file materialisation |
| ExternalContentReader.hpp | Slice IO-8 — hydrate SimulationContext external-file slots from the Part D GeoPackage tables and materialise scratch files in the legacy on-disk format so legacy fopen sites keep working |
| ExternalContentWriter.cpp | Slice IO-7 — implementation of the Part D content fan-out |
| ExternalContentWriter.hpp | Slice IO-7 — fan-out from in-memory external-file slots to the Part D GeoPackage tables |
| GeoPackageInputPlugin.cpp | IInputPlugin implementation for GeoPackage format |
| GeoPackageInputPlugin.hpp | IInputPlugin implementation for reading/writing SWMM models from/to GeoPackage |
| GeoPackageOutputPlugin.cpp | IOutputPlugin that writes per-timestep results to a GeoPackage |
| GeoPackageOutputPlugin.hpp | IOutputPlugin that writes per-timestep results to a GeoPackage |
| GeoPackagePluginInfo.cpp | IPluginComponentInfo implementation for the GeoPackage I/O plugin |
| GeoPackagePluginInfo.hpp | IPluginComponentInfo implementation for the GeoPackage I/O plugin |
| GeoPackageReader.cpp | Reads a GeoPackage file into a SimulationContext (all SWMM input sections) |
| GeoPackageReader.hpp | Reads a GeoPackage file into a SimulationContext (model input tables) |
| GeoPackageReportPlugin.cpp | IReportPlugin that writes summary statistics to a GeoPackage |
| GeoPackageReportPlugin.hpp | IReportPlugin that writes summary statistics to a GeoPackage |
| GeoPackageSchema.cpp | DDL implementation for the OpenSWMM GeoPackage schema |
| GeoPackageSchema.hpp | DDL and metadata registration for the OpenSWMM GeoPackage schema |
| GeoPackageWriter.cpp | Writes a SimulationContext to GeoPackage (all SWMM input sections) |
| GeoPackageWriter.hpp | Writes a SimulationContext to a GeoPackage file (model input tables) |
| GpkgGeometry.hpp | GeoPackage Binary geometry encoding and decoding (ISO WKB with GP header) |
| GpkgUtils.hpp | RAII wrappers and utilities for SQLite operations in GeoPackage I/O |
| openswmm_geopackage_impl.cpp | C API implementation for GeoPackage I/O |
| ► handlers | |
| CatchmentHandler.cpp | Section handlers for [SUBCATCHMENTS], [SUBAREAS], and [RAINGAGES] |
| CatchmentHandler.hpp | Section handlers for subcatchments and rain gages |
| ControlsHandler.cpp | Section handlers for [CONTROLS] and [REPORT] |
| ControlsHandler.hpp | Section handlers for [CONTROLS] and [REPORT] |
| FilesHandler.cpp | [FILES] section handler — secondary file references |
| FilesHandler.hpp | [FILES] section handler — secondary file references |
| HydrologyHandler.cpp | Section handlers for [EVAPORATION], [TEMPERATURE], [SNOWPACKS], [AQUIFERS], [GROUNDWATER], [GWF], [LID_CONTROLS], and [LID_USAGE] |
| HydrologyHandler.hpp | Section handlers for hydrology-related input sections |
| InflowsHandler.cpp | Section handlers for [PATTERNS], [INFLOWS], [DWF], [RDII], [HYDROGRAPHS], and [RDII_DECAY] |
| InflowsHandler.hpp | Section handlers for patterns, inflows, DWF, and RDII |
| InfraHandler.cpp | Section handlers for [STREETS], [INLETS], [INLET_USAGE], [ADJUSTMENTS], [EVENTS] |
| InfraHandler.hpp | Section handlers for [STREETS], [INLETS], [INLET_USAGE] |
| LinksHandler.cpp | Section handlers for [CONDUITS], [PUMPS], [ORIFICES], [WEIRS], [OUTLETS], [XSECTIONS], [LOSSES], [TRANSECTS] |
| LinksHandler.hpp | Section handlers for link types: CONDUITS, PUMPS, ORIFICES, WEIRS, OUTLETS, XSECTIONS, LOSSES, TRANSECTS |
| NodesHandler.cpp | Section handlers for [JUNCTIONS], [OUTFALLS], [DIVIDERS], [STORAGE], [COORDINATES] |
| NodesHandler.hpp | Section handlers for node types: JUNCTIONS, OUTFALLS, DIVIDERS, STORAGE |
| OptionsHandler.cpp | [OPTIONS] section handler for the new engine |
| OptionsHandler.hpp | [OPTIONS] section handler declaration |
| PluginsHandler.cpp | [PLUGINS] section handler — parses plugin library specs (Phase 4, R12) |
| PluginsHandler.hpp | [PLUGINS] section handler (Phase 4, R12) |
| ProcessComponentsHandler.cpp | [PROCESS_COMPONENTS] section handler — parses component registrations (Unified Transport suite, D-UT8; phase IO1) |
| ProcessComponentsHandler.hpp | [PROCESS_COMPONENTS] section handler (Unified Transport suite, D-UT8) |
| QualityHandler.cpp | Section handlers for [POLLUTANTS], [LANDUSES], [COVERAGES], [BUILDUP], [WASHOFF], [TREATMENT], and [LOADINGS] |
| QualityHandler.hpp | Section handlers for water quality input sections |
| SpatialHandler.cpp | Section handlers for [MAP], [VERTICES], [POLYGONS], [SYMBOLS] |
| SpatialHandler.hpp | Section handlers for spatial sections: [MAP], [VERTICES], [POLYGONS] |
| TablesHandler.cpp | Section handlers for [TIMESERIES] and [CURVES] |
| TablesHandler.hpp | Section handlers for [TIMESERIES] and [CURVES] |
| TitleHandler.cpp | [TITLE] section handler implementation |
| TitleHandler.hpp | [TITLE] section handler |
| UserFlagsHandler.cpp | [USER_FLAGS] section handler — parses flag schema definitions (R28) |
| UserFlagsHandler.hpp | [USER_FLAGS] section handler (R28) |
| UserFlagValuesHandler.cpp | [USER_FLAG_VALUES] section handler — implements R28 per-object values |
| UserFlagValuesHandler.hpp | [USER_FLAG_VALUES] section handler (R28) |
| InputParseUtils.hpp | Shared parsing utilities for input section handlers |
| InputReader.cpp | Implementation of the top-level SWMM .inp file reader |
| InputReader.hpp | Top-level SWMM .inp file reader |
| MultiColumnSeriesFile.cpp | Parse-once cache for multi-column series files (CSV/TSV/TSF) |
| MultiColumnSeriesFile.hpp | Parse-once cache for multi-column external series files (CSV / TSV / PCSWMM TSF) |
| PostParseResolver.cpp | Post-parse cross-reference resolution |
| PostParseResolver.hpp | Post-parse cross-reference resolution for the input system |
| SectionParser.hpp | Utility for splitting raw INP section lines into (data, comment) pairs |
| SectionRegistry.cpp | Implementation of the section-handler registry |
| SectionRegistry.hpp | Registry that maps SWMM section tags to handler functions |
| Tokenizer.cpp | Implementation of the multi-delimiter SWMM input tokenizer |
| Tokenizer.hpp | Multi-delimiter tokenizer for SWMM input files |
| ► math | |
| FindRoot.cpp | Newton-Raphson + Ridder — numerically identical to legacy findroot.c |
| FindRoot.hpp | Newton-Raphson and Ridder root finders |
| MathExpr.cpp | Shunting-yard parser + stack evaluator |
| MathExpr.hpp | Mathematical expression parser and evaluator |
| OdeSolver.cpp | RK45 Cash-Karp ODE integrator — numerically identical to legacy |
| OdeSolver.hpp | Runge-Kutta-Cash-Karp (RK45) ODE integrator with adaptive step control |
| SIMD.hpp | SIMD abstraction layer for vectorized arithmetic operations |
| ► output | |
| IOThread.cpp | IOThread — producer/consumer output writer implementation |
| IOThread.hpp | Separate IO writer thread with a bounded task queue (Phase 5, R17) |
| openswmm_output_impl.cpp | C FFI wrapper for the OutputReader class |
| OutputReader.cpp | OutputReader — reads SWMM 5.x binary .out files |
| OutputReader.hpp | Internal C++ class for reading SWMM 5.x binary output files |
| WriteTask.hpp | Ring-buffer task descriptor for the IO thread (Phase 5, R17) |
| ► plugins | |
| BuiltinPluginInfos.cpp | Singletons + file_filters() implementations for built-in plugins |
| BuiltinPluginInfos.hpp | IPluginComponentInfo singletons for the engine's built-in default plugins |
| DefaultInputPlugin.cpp | DefaultInputPlugin — reads/writes SWMM .inp files |
| DefaultInputPlugin.hpp | DefaultInputPlugin — reads/writes SWMM .inp files |
| DefaultOutputPlugin.cpp | DefaultOutputPlugin — SWMM 5.x binary .out file writer |
| DefaultOutputPlugin.hpp | Built-in output plugin that writes the legacy SWMM binary output format |
| DefaultReportPlugin.cpp | DefaultReportPlugin — legacy SWMM-compatible .rpt report writer |
| DefaultReportPlugin.hpp | Built-in report plugin that writes the legacy SWMM .rpt summary |
| DefaultStateIOPlugin.cpp | Built-in state IO plugin implementation |
| DefaultStateIOPlugin.hpp | Built-in state IO plugin — wraps HotStartManager for read/write |
| PluginDiscovery.cpp | Public filter-discovery facade — implementation |
| PluginFactory.cpp | Plugin loader, auto-discovery, and lifecycle manager — implementation |
| PluginFactory.hpp | Plugin loader, auto-discovery, and lifecycle manager |
| ProcessComponentRegistry.cpp | Registry + config-file delivery for [PROCESS_COMPONENTS] — IO1–IO2 |
| ProcessComponentRegistry.hpp | Registry + config-file delivery for [PROCESS_COMPONENTS] (Unified Transport suite D-UT8; phases IO1–IO2) |
| ► quality | |
| ► lard | |
| LagrangianSolver.hpp | LARD (Lagrangian ARD) quality engine — X2: LTD transport core |
| RwptDispersion.hpp | X3b: RWPT longitudinal dispersion on LARD segments |
| SegmentStore.hpp | LARD segment slabs — per-link ring buffers of plug-flow segments |
| Landuse.cpp | Pollutant buildup/washoff — batch SoA, numerically identical to legacy |
| Landuse.hpp | Pollutant buildup and washoff per land use — batch SoA |
| NegativeSources.hpp | D-NS1: one clamp-bookkeeping seam for all three quality engines |
| QualityRouting.cpp | Water quality routing — batch SoA, numerically identical to legacy |
| QualityRouting.hpp | Water quality routing — constituent transport, mixing, decay |
| Treatment.cpp | Treatment expression parser (Shunting-yard) and evaluator (stack machine) |
| Treatment.hpp | Treatment expression evaluator for water quality |
| ► transport | |
| ► components | |
| ► EulerianArdComponent | |
| ArdConfig.cpp | Transport.ard component apply hook — phase E3 body (dispersion subset of model.ard) |
| ArdConfig.hpp | The org.hydrocouple.openswmm.transport.ard process component — phase E3: parse the dispersion subset of model.ard into SimulationContext::ard_config |
| ArdEngine.cpp | Solver-agnostic Eulerian ARD transport engine — phase E1 body |
| ArdEngine.hpp | Solver-agnostic Eulerian ARD transport engine (phase E1) |
| ► HeatFluxModules | |
| BedExchange.cpp | Plan H6b — implementation. See BedExchange.hpp for the derivation |
| BedExchange.hpp | Plan H6b — bed conduction, deep-ground conduction, and hyporheic exchange, integrated SIMULTANEOUSLY with the surface fluxes |
| HeatFluxes.cpp | Plan D-H5e — the single node/link surface-flux binding |
| HeatFluxes.hpp | Plan D-H5e — the single node/link surface-flux binding |
| HeatOverrides.cpp | Plan PE — resolution and lookup. See the header |
| HeatOverrides.hpp | Plan PE — resolve per-element attributes, and read them |
| RadiativeExchange.cpp | Phase H3 body — shortwave/longwave radiation |
| RadiativeExchange.hpp | Phase H3 — shortwave and longwave radiation at the water surface (heat plan §2.2; RHEComponent §6) |
| SolarRadiation.cpp | Phase H6a — solar position, clear-sky irradiance, cloud |
| SolarRadiation.hpp | Phase H6a — where incoming shortwave Jin comes from (heat plan §2.5, D-H6a) |
| SurfaceExchange.cpp | Phase H2 body — latent/sensible surface exchange |
| SurfaceExchange.hpp | Phase H2 — latent and sensible heat exchange at the water surface (heat plan §2.1; CSHComponent §4.4–4.5) |
| ► HeatModule | |
| HeatComponent.cpp | Heat component apply hook — phase H1 body |
| HeatComponent.hpp | The org.hydrocouple.openswmm.heat process component — phase H1: parse [HEAT_SOURCES] (model.heat) into SimulationContext::heat_config |
| HeatLegacy.cpp | Phase H1 body — LEGACY CSTR temperature transport |
| HeatLegacy.hpp | Phase H1 — the LEGACY (CSTR) engine's temperature transport |
| HeatLid.cpp | Phase H5b body — temperature through the LID layer stack |
| HeatLid.hpp | Phase H5b — temperature through the LID layer stack |
| HeatWatershed.cpp | Phase H5a — temperature on subcatchment surfaces |
| HeatWatershed.hpp | Phase H5a — temperature on subcatchment surfaces |
| ► ReactionModule | |
| MsxLegacyTransport.cpp | R4b body. Formula provenance is routeLegacyHeat — see the header |
| MsxLegacyTransport.hpp | Phase R4b (transport half) — MSX species advect under LEGACY |
| ReactionArdBinding.cpp | Phase E4/R6 body — Eulerian ARD engine reaction stage |
| ReactionArdBinding.hpp | Phase E4/R6 — reaction binding for the Eulerian ARD engine |
| ReactionExpression.cpp | Reaction expression compiler + Tier-1 evaluator — phase R2 body |
| ReactionExpression.hpp | Reaction expression compiler + Tier-1 evaluator (phase R2) |
| ReactionIntegrator.cpp | Reaction kinetics integration — phase R3 body |
| ReactionIntegrator.hpp | Reaction kinetics integration over one reaction step (phase R3): EUL / RK5 (Cash–Karp) / ROS2 / BDF2 for RATE species, joint damped-Newton for EQUIL species, in-order FORMULA evaluation, rate-unit scaling |
| ReactionLegacyBinding.cpp | Phase R4 body — LEGACY quality engine reaction binding |
| ReactionLegacyBinding.hpp | Phase R4 — reaction binding for the LEGACY (CSTR) quality engine |
| ReactionsComponent.cpp | Reactions process component — phase R1 body |
| ReactionsComponent.hpp | The org.hydrocouple.openswmm.reactions process component — phase R1: parse model.rxn [REACTION_*] sections into ReactionData + the species registry |
| ReactionsWriter.cpp | Canonical .rxn serializer (E-C3) |
| ReactionsWriter.hpp | Canonical .rxn text from engine state (E-C3) |
| ► WaterAgeModule | |
| WaterAgeComponent.cpp | Waterage component apply hook — phase A1a body |
| WaterAgeComponent.hpp | The org.hydrocouple.openswmm.waterage process component — phase A1a: parse [WATER_AGE_SOURCES] (model.age) into SimulationContext::water_age_config |
| WaterAgeLegacy.cpp | Phase A1b body — LEGACY CSTR water-age mirror |
| WaterAgeLegacy.hpp | Phase A1b — the LEGACY (CSTR) engine's water-age mirror |
| WaterAgeLid.cpp | Phase A4 body — water age through the LID layer stack |
| WaterAgeLid.hpp | Phase A4 — water age through the LID layer stack |
| WaterAgeWatershed.cpp | Phase A3 body — subcatchment surface water age |
| WaterAgeWatershed.hpp | Phase A3 — water age on subcatchment surfaces |
| LidLayerCommon.cpp | LID layer topology and geometry, shared by every species track |
| LidLayerCommon.hpp | LID layer topology and geometry, shared by every species track |
| WatershedCommon.cpp | The arriving-water rate at a subarea (S1 — snow mixing volume) |
| WatershedCommon.hpp | The arriving-water rate at a subarea — shared by every species track on the watershed surface |
| ► fvkernels | |
| SpeciesTransportKernels.cpp | Shared 1D FV species transport kernels — bodies moved VERBATIM from hydraulics/fv/ExplicitFvSolver.cpp (phase E0; see the header) |
| SpeciesTransportKernels.hpp | Shared 1D FV species transport kernels (advection reconstruction, Zalesak FCT flux limiting, implicit per-chain dispersion) |
| InitialQualitySeeds.hpp | [INITIAL_QUALITY] reserved-species (WATER_AGE/__TEMPERATURE__) helpers for the per-engine seed sites (E-A3) |
| MsxInitialQuality.cpp | U2 — [INITIAL_QUALITY] MSX rows mirrored into ReactionData (see header) |
| MsxInitialQuality.hpp | U2 (2026-09-07) — [INITIAL_QUALITY] rows for MSX species |
| TransportPolicy.cpp | Domain × Species-class transport contract (see the header) |
| TransportPolicy.hpp | The Domain × Species-class transport contract (OPT plan §5, E2) |
| ▼ legacy | |
| ► engine | |
| climate.c | Climate related functions |
| consts.h | Header file for SWMM constants |
| controls.c | Rule-based controls functions |
| culvert.c | |
| datetime.c | |
| datetime.h | Header file for date and time functions |
| dwflow.c | |
| dynwave.c | |
| enums.h | Header file for enumerated constants |
| error.c | Error messages |
| error.h | Header file for error codes |
| exfil.c | |
| exfil.h | Exfiltration object header file |
| findroot.c | |
| findroot.h | Header file for root finding method |
| flowrout.c | |
| forcmain.c | |
| funcs.h | Header file for global interfacing functions |
| gage.c | |
| globals.h | |
| gwater.c | |
| hash.c | |
| hash.h | |
| headers.h | |
| hotstart.c | |
| iface.c | |
| infil.c | |
| infil.h | |
| inflow.c | |
| inlet.c | |
| inlet.h | |
| input.c | |
| inputrpt.c | |
| keywords.c | |
| keywords.h | |
| kinwave.c | |
| landuse.c | |
| lid.c | |
| lid.h | |
| lidproc.c | |
| link.c | |
| macros.h | |
| massbal.c | |
| mathexpr.c | |
| mathexpr.h | |
| mempool.c | |
| mempool.h | |
| node.c | |
| objects.h | Definitions of data structures |
| odesolve.c | |
| odesolve.h | |
| output.c | |
| project.c | |
| qualrout.c | |
| rain.c | |
| rdii.c | |
| report.c | |
| roadway.c | |
| routing.c | |
| runoff.c | |
| shape.c | |
| snow.c | |
| stats.c | |
| statsrpt.c | |
| street.c | |
| street.h | |
| subcatch.c | |
| surfqual.c | Subcatchment water quality functions |
| table.c | |
| text.h | |
| toposort.c | |
| transect.c | |
| treatmnt.c | |
| xsect.c | |
| ► output | |
| errormanager.c | Source file providing a simple interface for managing SWMM output API runtime error messages |
| errormanager.h | Header file for SWMM output API error handling |
