OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
Inlet.hpp File Reference

Street inlet capture efficiency — FHWA HEC-22. More...

#include <cstdint>
#include <vector>
Include dependency graph for Inlet.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  openswmm::inlet::Geom
 Street / channel geometry seen by one inlet, in INTERNAL units. More...
 
struct  openswmm::inlet::Design
 One inlet design in INTERNAL units (legacy TInletDesign, inlet.c:66-74). More...
 
struct  openswmm::inlet::UsageParams
 The per-placement half of one usage row (legacy TInlet fields). More...
 
struct  openswmm::inlet::InletSoA
 
class  openswmm::inlet::InletSolver
 

Namespaces

namespace  openswmm
 
namespace  openswmm::inlet
 

Enumerations

enum class  openswmm::inlet::InletType : int {
  openswmm::inlet::GRATE = 0 ,
  openswmm::inlet::CURB = 1 ,
  openswmm::inlet::COMBO = 2 ,
  openswmm::inlet::SLOTTED = 3 ,
  openswmm::inlet::DROP_GRATE = 4 ,
  openswmm::inlet::DROP_CURB = 5 ,
  openswmm::inlet::CUSTOM = 6
}
 
enum class  openswmm::inlet::GrateType : int {
  openswmm::inlet::P_BAR_50 = 0 ,
  openswmm::inlet::P_BAR_50x100 = 1 ,
  openswmm::inlet::P_BAR_30 = 2 ,
  openswmm::inlet::CURVED_VANE = 3 ,
  openswmm::inlet::TILT_BAR_45 = 4 ,
  openswmm::inlet::TILT_BAR_30 = 5 ,
  openswmm::inlet::RETICULINE = 6 ,
  openswmm::inlet::GENERIC = 7
}
 Legacy enum GrateType (inlet.c:124-127). More...
 
enum class  openswmm::inlet::Placement : int {
  openswmm::inlet::AUTOMATIC = 0 ,
  openswmm::inlet::ON_GRADE = 1 ,
  openswmm::inlet::ON_SAG = 2
}
 
enum class  openswmm::inlet::ThroatAngle : int {
  openswmm::inlet::HORIZONTAL = 0 ,
  openswmm::inlet::INCLINED = 1 ,
  openswmm::inlet::VERTICAL = 2
}
 Legacy enum ThroatAngleType (inlet.c:131) — InletStore::curb_throat. More...
 
enum class  openswmm::inlet::CurveKind : int {
  openswmm::inlet::UNRESOLVED = 0 ,
  openswmm::inlet::DIVERSION = 1 ,
  openswmm::inlet::RATING = 2
}
 InletStore::curve_kind codes for a CUSTOM design. More...
 

Functions

double openswmm::inlet::getEo (double sr, double ts, double w)
 Compute the depressed-gutter flow ratio using HEC-22 Eq4-4.
 
double openswmm::inlet::getFlowSpread (const Geom &g, double Q)
 Compute approach flow spread with crown limiting and depressed-gutter iteration.
 
double openswmm::inlet::getGutterFlowRatio (const Geom &g, double w)
 Compute the fraction of street flow above a selected gutter width.
 
double openswmm::inlet::getGutterAreaRatio (const Geom &g, double grate_width, double area)
 Compute the grate-width correction to depressed-gutter intercepted flow.
 
double openswmm::inlet::getSplashOverVelocity (int grate_type, double grate_length)
 Evaluate the standard grate splash-over velocity polynomial.
 
double openswmm::inlet::getGrateInletCapture (const Design &d, Geom &g, double Q)
 Compute one on-grade grate's frontal and side capture.
 
double openswmm::inlet::getCurbInletCapture (const Geom &g, double Q, double opening_length)
 Compute on-grade curb-opening capture from equivalent cross slope.
 
double openswmm::inlet::getOnGradeInletCapture (const Design &d, Geom &g, double Q, double depth)
 Compute a single on-grade inlet or combination sweeper/grate capture.
 
double openswmm::inlet::getOnGradeCapturedFlow (const Design &d, const UsageParams &u, Geom &g, double q, double depth)
 Compute series inlet capture across the current street sides.
 
void openswmm::inlet::findOnSagGrateFlows (const Design &d, const Geom &g, double depth, double *weir_flow, double *orifice_flow)
 Compute the active grate weir or orifice contribution for one sag inlet.
 
void openswmm::inlet::findOnSagCurbFlows (const Design &d, const Geom &g, double depth, double opening_length, double *weir_flow, double *orifice_flow)
 Compute sag curb-opening weir/orifice contributions with transition blending.
 
double openswmm::inlet::getCurbOrificeFlow (double flow_depth, double opening_height, double opening_length, int throat_angle)
 Compute sag curb-opening orifice flow using throat-adjusted head.
 
double openswmm::inlet::getOnSagSlottedFlow (const Design &d, double depth)
 Compute one sag slotted-drain weir or orifice capacity.
 
double openswmm::inlet::getOnSagInletCapture (const Design &d, const Geom &g, double depth)
 Combine one sag inlet's grate, sweeper and curb-orifice contributions.
 
double openswmm::inlet::getOnSagCapturedFlow (const Design &d, const UsageParams &u, const Geom &g, double depth, int nsides_prev)
 Scale sag capacity using usage factors and legacy carried-over street sides.
 
double openswmm::inlet::getCustomCapturedFlow (const UsageParams &u, const Geom &g, const Table &curve, int curve_kind, double q, double depth, double ucf_flow, double ucf_len)
 Compute custom inlet capture from authored diversion or rating curves.
 
double openswmm::inlet::getInletArea (const Design &d, const UsageParams &u)
 Compute the usage's effective open inlet area for backflow weighting.
 

Variables

constexpr double openswmm::inlet::MIN_RUNOFF_FLOW = 0.001
 Legacy MIN_RUNOFF_FLOW (consts.h:203) — cfs.
 
constexpr double openswmm::inlet::INLET_FUDGE = 0.0001
 Legacy FUDGE (consts.h:272).
 
constexpr double openswmm::inlet::INLET_BIG = 1.0e10
 Legacy BIG (consts.h:118).
 

Detailed Description

Street inlet capture efficiency — FHWA HEC-22.

Inlet types: GRATE, CURB, COMBO, SLOTTED, DROP_GRATE, DROP_CURB, CUSTOM. On-grade capture uses splash-over velocity and frontal / side flow fractions (HEC-22 Eq. 4-16 … 4-24); on-sag capture uses the weir ↔ orifice transition (Eq. 4-26 … 4-33).

Two host kinds share one kernel and one statistics block (plans/INLET_JUNCTION_IMPLEMENTATION_PLAN_2026-09-05.md §2.1):

  • conduit-attribute usage — [INLET_USAGE], host = a STREET conduit, bypass node = that conduit's downstream node;
  • inlet junction — [INLET_JUNCTIONS], host = the node itself, approach flow from the attached street conduit(s).

The pure kernel functions below are transliterations of the legacy file-scope routines and carry the HEC-22 equation numbers; they take their state through openswmm::inlet::Geom / openswmm::inlet::Design / openswmm::inlet::UsageParams instead of legacy's module-level shared variables, so they are directly unit-testable.

Note
Legacy reference: src/legacy/engine/inlet.c
Author
Caleb Buahin caleb.nosp@m..bua.nosp@m.hin@g.nosp@m.mail.nosp@m..com
License
Apache-2.0