![]() |
OpenSWMM Engine
6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
|
Cross-section geometry — unified batch + per-element API. More...
#include <vector>#include <cstddef>#include <cstdint>#include <cmath>Go to the source code of this file.
Classes | |
| struct | openswmm::XSectParams |
| struct | openswmm::ShapeGroup |
| SoA parameter block for all links of one cross-section shape. More... | |
| class | openswmm::XSectGroups |
| Shape-grouped cross-section manager for batch computation. More... | |
Namespaces | |
| namespace | openswmm |
| namespace | openswmm::xsect |
| namespace | openswmm::xsect_batch |
Macros | |
| #define | OPENSWMM_RESTRICT __restrict__ |
Enumerations | |
| enum class | openswmm::XSectShape : int { openswmm::DUMMY = 0 , openswmm::CIRCULAR = 1 , openswmm::FILLED_CIRCULAR = 2 , openswmm::RECT_CLOSED = 3 , openswmm::RECT_OPEN = 4 , openswmm::TRAPEZOIDAL = 5 , openswmm::TRIANGULAR = 6 , openswmm::PARABOLIC = 7 , openswmm::POWERFUNC = 8 , openswmm::RECT_TRIANG = 9 , openswmm::RECT_ROUND = 10 , openswmm::MOD_BASKET = 11 , openswmm::HORIZ_ELLIPSE = 12 , openswmm::VERT_ELLIPSE = 13 , openswmm::ARCH = 14 , openswmm::EGGSHAPED = 15 , openswmm::HORSESHOE = 16 , openswmm::GOTHIC = 17 , openswmm::CATENARY = 18 , openswmm::SEMIELLIPTICAL = 19 , openswmm::BASKETHANDLE = 20 , openswmm::SEMICIRCULAR = 21 , openswmm::IRREGULAR = 22 , openswmm::CUSTOM = 23 , openswmm::FORCE_MAIN = 24 , openswmm::STREET_XSECT = 25 } |
Functions | |
| double | openswmm::xsect::getAofY (const XSectParams &xs, double y) |
| double | openswmm::xsect::getRofY (const XSectParams &xs, double y) |
| double | openswmm::xsect::getWofY (const XSectParams &xs, double y) |
| double | openswmm::xsect::getYofA (const XSectParams &xs, double a) |
| double | openswmm::xsect::getSofA (const XSectParams &xs, double a) |
| double | openswmm::xsect::getRofA (const XSectParams &xs, double a) |
| double | openswmm::xsect::getdSdA (const XSectParams &xs, double a) |
| double | openswmm::xsect::getAofS (const XSectParams &xs, double s_factor) |
| double | openswmm::xsect::getAmax (const XSectParams &xs) |
| double | openswmm::xsect::getYcrit (const XSectParams &xs, double q) |
| bool | openswmm::xsect::isOpen (int type) |
| int | openswmm::xsect::setParams (XSectParams &xs, int type, const double p[], double ucf) |
| double | openswmm::xsect::lookup (double x, const double *table, int n_items) |
| double | openswmm::xsect::invLookup (double y, const double *table, int n_items) |
| int | openswmm::xsect::locate (double y, const double *table, int n) |
| double | openswmm::xsect::getYcircular (double alpha) |
| double | openswmm::xsect::getScircular (double alpha) |
| void | openswmm::xsect_batch::area_circular (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT y_full, const double *OPENSWMM_RESTRICT a_full, double *OPENSWMM_RESTRICT area, int count) |
| Batch area for CIRCULAR/FORCE_MAIN — lookup table interpolation. | |
| void | openswmm::xsect_batch::area_rect (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT w_max, double *OPENSWMM_RESTRICT area, int count) |
| Batch area for RECT_CLOSED / RECT_OPEN: area = depth * w_max. | |
| void | openswmm::xsect_batch::area_trapezoidal (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT y_bot, const double *OPENSWMM_RESTRICT s_bot, double *OPENSWMM_RESTRICT area, int count) |
| Batch area for TRAPEZOIDAL: area = (y_bot + s_bot * depth) * depth. | |
| void | openswmm::xsect_batch::area_triangular (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT s_bot, double *OPENSWMM_RESTRICT area, int count) |
| Batch area for TRIANGULAR: area = s_bot * depth^2. | |
| void | openswmm::xsect_batch::area_parabolic (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT r_bot, double *OPENSWMM_RESTRICT area, int count) |
| Batch area for PARABOLIC: area = (4/3) * r_bot * depth^(3/2). | |
| void | openswmm::xsect_batch::area_powerfunc (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT s_bot, const double *OPENSWMM_RESTRICT r_bot, double *OPENSWMM_RESTRICT area, int count) |
| Batch area for POWERFUNC: area = r_bot * depth^(s_bot+1). | |
| void | openswmm::xsect_batch::area_tabulated (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT y_full, const double *OPENSWMM_RESTRICT a_full, const double *table, int table_size, double *OPENSWMM_RESTRICT area, int count) |
| Batch area for any tabulated shape (egg, horseshoe, arch, ellipse, etc.). | |
| void | openswmm::xsect_batch::area_inv_tabulated (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT y_full, const double *OPENSWMM_RESTRICT a_full, const double *table, int table_size, double *OPENSWMM_RESTRICT area, int count) |
| Batch area for shapes using invLookup (gothic, catenary, semielliptical, semicircular). | |
| void | openswmm::xsect_batch::hydrad_circular (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT y_full, const double *OPENSWMM_RESTRICT r_full, double *OPENSWMM_RESTRICT hydrad, int count) |
| void | openswmm::xsect_batch::hydrad_trapezoidal (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT y_bot, const double *OPENSWMM_RESTRICT s_bot, const double *OPENSWMM_RESTRICT r_bot, double *OPENSWMM_RESTRICT hydrad, int count) |
| void | openswmm::xsect_batch::hydrad_triangular (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT s_bot, const double *OPENSWMM_RESTRICT r_bot, double *OPENSWMM_RESTRICT hydrad, int count) |
| void | openswmm::xsect_batch::hydrad_rect (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT w_max, double *OPENSWMM_RESTRICT hydrad, int count) |
| void | openswmm::xsect_batch::hydrad_tabulated (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT y_full, const double *OPENSWMM_RESTRICT r_full, const double *table, int table_size, double *OPENSWMM_RESTRICT hydrad, int count) |
| void | openswmm::xsect_batch::width_circular (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT y_full, const double *OPENSWMM_RESTRICT w_max, double *OPENSWMM_RESTRICT width, int count) |
| void | openswmm::xsect_batch::width_trapezoidal (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT y_bot, const double *OPENSWMM_RESTRICT s_bot, double *OPENSWMM_RESTRICT width, int count) |
| void | openswmm::xsect_batch::width_triangular (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT s_bot, double *OPENSWMM_RESTRICT width, int count) |
| void | openswmm::xsect_batch::width_rect (const double *OPENSWMM_RESTRICT w_max, double *OPENSWMM_RESTRICT width, int count) |
| void | openswmm::xsect_batch::width_tabulated (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT y_full, const double *OPENSWMM_RESTRICT w_max, const double *table, int table_size, double *OPENSWMM_RESTRICT width, int count) |
Cross-section geometry — unified batch + per-element API.
This is the SINGLE cross-section header for the new engine. It provides:
xsect:: namespace) — used by C API, hot start, KW/DW solvers for single-conduit queriesXSectGroups, xsect_batch::) — shape-grouped SoA for the routing hot loop; groups links by shape, computes over contiguous arrays with no branchingRouting hot loop (batch):
| #define OPENSWMM_RESTRICT __restrict__ |