![]() |
OpenSWMM Engine
6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
|
Cross-section closure for one conduit's cell chain. More...
#include <NetworkMeshData.hpp>
Public Attributes | |
| XSectParams | xs {} |
| copied scalars; transect/profile table pointers remain borrowed | |
| double | y_full = 0.0 |
| full depth (ft) | |
| double | a_full = 0.0 |
| area when full (ft²) | |
| double | w_max = 0.0 |
| width at widest point (ft) | |
| double | r_full = 0.0 |
| hydraulic radius when full (ft) | |
| double | barrel_scale = 1.0 |
| double | y_crown = 0.0 |
| double | t_slot = 0.0 |
| double | a_crown = 0.0 |
| double | i1_crown = 0.0 |
| I₁(y_full) — the table's last entry, cached for the same reason. | |
| uint8_t | is_open = 0 |
| open section: no crown, no slot taper | |
| int | barrels = 1 |
| parallel identical barrels | |
| FvClosure | closure_tbl {} |
Cross-section closure for one conduit's cell chain.
One continuous geometry valid from dry bed to full pressurization: the Preissmann slot is folded into A(h)/T(h)/R(h) so every cell evaluates the same flux function and "transition" is just a depth crossing the crown (plan §3.3). t_slot is derived from FV_SLOT_CELERITY, and the slot mouth is tapered over [y_crown, y_full] so dA/dh stays Lipschitz through the crown — a discontinuous dA/dh would produce spurious reflections and corrupt the Riemann solver's wave-speed estimates.
| double openswmm::fv::FvGeometry::a_crown = 0.0 |
A(y_full) INCLUDING the slot area accumulated over the tapered mouth. Cached because every above-crown evaluation and the analytic I₁ extension start from it.
| double openswmm::fv::FvGeometry::a_full = 0.0 |
area when full (ft²)
| double openswmm::fv::FvGeometry::barrel_scale = 1.0 |
barrels as a factor on AREA and TOP WIDTH (see barrels below). Kept beside the fields every area evaluation already loads.
| int openswmm::fv::FvGeometry::barrels = 1 |
parallel identical barrels
| FvClosure openswmm::fv::FvGeometry::closure_tbl {} |
The closure every FvKernels section function evaluates: the exact section (SectionGeometry.hpp) sampled at build time into a monotone cubic table with the slot folded in, or the polynomial class for open sections (FvClosureKernels.hpp). A fixed-size, pointer-free POD block, so the whole geometry can be captured by a device backend as plain bytes; xs above still carries host table pointers for the table- defined shapes and is read only at build time.
| double openswmm::fv::FvGeometry::i1_crown = 0.0 |
I₁(y_full) — the table's last entry, cached for the same reason.
| uint8_t openswmm::fv::FvGeometry::is_open = 0 |
open section: no crown, no slot taper
| double openswmm::fv::FvGeometry::r_full = 0.0 |
hydraulic radius when full (ft)
| double openswmm::fv::FvGeometry::t_slot = 0.0 |
Top width of the slot above the crown, g·A_full/c_slot². Open shapes carry w_max here so the vertical-wall extension is one code path.
| double openswmm::fv::FvGeometry::w_max = 0.0 |
width at widest point (ft)
| XSectParams openswmm::fv::FvGeometry::xs {} |
copied scalars; transect/profile table pointers remain borrowed
| double openswmm::fv::FvGeometry::y_crown = 0.0 |
Depth at which the slot begins to open. Closed shapes: SLOT_CROWN_CUTOFF · y_full (Sjöberg-style, engages just below the crown). Open shapes: y_full, with no taper — the section simply continues with vertical walls.
| double openswmm::fv::FvGeometry::y_full = 0.0 |
full depth (ft)