OpenSWMM Engine  6.0.0-alpha.3
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.3)
Loading...
Searching...
No Matches
openswmm::dynwave Namespace Reference

Classes

struct  DPSConfig
 DPS configuration parameters (derived from SimulationOptions at init). More...
 
struct  DPSLinkArrays
 
struct  DWNodeArrays
 
class  DWSolver
 Dynamic wave solver — operates on entire link/node system. More...
 

Enumerations

enum class  SurchargeMethod : int {
  EXTRAN = 0 ,
  SLOT = 1 ,
  DYNAMIC_SLOT = 2
}
 Surcharge method: EXTRAN (classic) or SLOT (Preissmann). More...
 
enum class  MomentumCategory : uint8_t {
  SKIP_DRY = 0 ,
  MANNING_OPEN = 1 ,
  MANNING_CLOSED_FS = 2 ,
  MANNING_CLOSED_FULL = 3 ,
  FORCE_MAIN_HW = 4 ,
  FORCE_MAIN_DW = 5 ,
  N_CATEGORIES = 6
}
 Momentum category for branch-free per-category kernel dispatch. More...
 

Variables

constexpr double SQRT_GRAVITY
 sqrt(GRAVITY) — precomputed to avoid per-element std::sqrt in Froude calc.
 
constexpr double INV_SQRT_GRAVITY
 1.0 / sqrt(GRAVITY) — multiply instead of divide in Froude computation.
 
constexpr double OMEGA
 
constexpr double DEFAULT_HEAD_TOL
 
constexpr int DEFAULT_MAX_TRIALS
 
constexpr double MAX_VELOCITY
 
constexpr double MIN_TIMESTEP
 
constexpr double EXTRAN_CROWN_CUTOFF
 
constexpr double SLOT_CROWN_CUTOFF
 Preissmann slot crown cutoff fraction.
 
constexpr double SLOT_WIDTH_FACTOR
 Preissmann slot width factor (slot_width = y_full * this factor).
 
constexpr double MIN_SURFAREA
 

Enumeration Type Documentation

◆ MomentumCategory

enum class openswmm::dynwave::MomentumCategory : uint8_t
strong

Momentum category for branch-free per-category kernel dispatch.

Each conduit is classified once per Picard iteration (after geometry is computed). Per-category kernels have zero shape/type/state branches in their inner loops, enabling compiler auto-vectorization.

Enumerator
SKIP_DRY 

DRY/UP_DRY/DN_DRY, aMid<=FUDGE, or is_closed.

MANNING_OPEN 

Standard Manning, open channel (Froude-based sigma)

MANNING_CLOSED_FS 

Manning, closed conduit, free surface.

MANNING_CLOSED_FULL 

Manning, closed conduit, surcharged (fr=0, sig=0)

FORCE_MAIN_HW 

Force main, Hazen-Williams friction.

FORCE_MAIN_DW 

Force main, Darcy-Weisbach friction.

N_CATEGORIES 

◆ SurchargeMethod

enum class openswmm::dynwave::SurchargeMethod : int
strong

Surcharge method: EXTRAN (classic) or SLOT (Preissmann).

See also
Legacy: SurchargeMethod in enums.h
Enumerator
EXTRAN 

Classic EXTRAN approach — dQ/dH for surcharged nodes.

SLOT 

Preissmann slot — fictitious narrow slot above crown.

DYNAMIC_SLOT 

Dynamic slot — slot width varies with flow conditions (experimental) Sharior, S., Hodges, B.R., & Vasconcelos, J.G. (2023). Generalized, Dynamic, and Transient-Storage Form of the Preissmann Slot. Journal of Hydraulic Engineering, 149(11), 04023046.

Variable Documentation

◆ DEFAULT_HEAD_TOL

double openswmm::constants::DEFAULT_HEAD_TOL
constexpr

Default convergence tolerance for node depth change (ft).

See also
Legacy: HeadTol in globals.h

◆ DEFAULT_MAX_TRIALS

int openswmm::constants::DEFAULT_MAX_TRIALS
constexpr

Default maximum Picard iterations per routing step.

See also
Legacy: MaxTrials in globals.h

◆ EXTRAN_CROWN_CUTOFF

double openswmm::constants::EXTRAN_CROWN_CUTOFF
constexpr

EXTRAN surcharge crown cutoff fraction (depth/full_depth). Above this, the Preissmann slot or surcharge algorithm activates.

◆ INV_SQRT_GRAVITY

double openswmm::constants::INV_SQRT_GRAVITY
constexpr

1.0 / sqrt(GRAVITY) — multiply instead of divide in Froude computation.

◆ MAX_VELOCITY

double openswmm::constants::MAX_VELOCITY
constexpr

Maximum conduit velocity (ft/s) — prevents numerical blowup.

See also
Legacy: MAXVELOCITY in dynwave.c

◆ MIN_SURFAREA

double openswmm::constants::MIN_SURFAREA
constexpr

Default minimum surface area (ft²) — approximately a 4-ft diameter manhole.

See also
Legacy: MIN_SURFAREA in consts.h

◆ MIN_TIMESTEP

double openswmm::constants::MIN_TIMESTEP
constexpr

Absolute minimum routing timestep (s).

See also
Legacy: MINTIMESTEP in dynwave.c

◆ OMEGA

double openswmm::constants::OMEGA
constexpr

Picard iteration under-relaxation factor.

See also
Legacy: OMEGA in dynwave.c

◆ SLOT_CROWN_CUTOFF

double openswmm::constants::SLOT_CROWN_CUTOFF
constexpr

Preissmann slot crown cutoff fraction.

◆ SLOT_WIDTH_FACTOR

double openswmm::constants::SLOT_WIDTH_FACTOR
constexpr

Preissmann slot width factor (slot_width = y_full * this factor).

◆ SQRT_GRAVITY

double openswmm::constants::SQRT_GRAVITY
constexpr

sqrt(GRAVITY) — precomputed to avoid per-element std::sqrt in Froude calc.