OpenSWMM Engine  6.0.0-alpha.3
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.3)
Loading...
Searching...
No Matches
Node.hpp
Go to the documentation of this file.
1
15
16#ifndef OPENSWMM_NODE_HPP
17#define OPENSWMM_NODE_HPP
18
19#include "../core/Constants.hpp"
20#include "../data/NodeData.hpp"
21#include "../data/TableData.hpp"
22
23namespace openswmm {
24
26struct NodeSubtypes; // relational storage/outfall/divider side-tables (optional source)
27
28namespace node {
29
30// ============================================================================
31// Per-element functions (for C API / single-object queries)
32// ============================================================================
33
45double getVolume(const NodeData& nodes, int idx, double depth,
46 TableData* tables = nullptr, int unit_sys = 0,
47 const NodeSubtypes* subs = nullptr);
48
60double getSurfArea(const NodeData& nodes, int idx, double depth,
61 TableData* tables = nullptr, int unit_sys = 0,
62 const NodeSubtypes* subs = nullptr);
63
75double getPondedArea(const NodeData& nodes, int idx, double depth,
76 TableData* tables = nullptr, int unit_sys = 0,
77 const NodeSubtypes* subs = nullptr);
78
90double getMaxOutflow(const NodeData& nodes, int idx, double q, double dt);
91
104double getOverflow(double new_volume, double full_volume, double dt);
105
114double getDepth(const NodeData& nodes, int idx, double volume,
115 TableData* tables = nullptr, int unit_sys = 0,
116 const NodeSubtypes* subs = nullptr);
117
121inline double getHead(double invert_elev, double depth) {
122 return invert_elev + depth;
123}
124
125// ============================================================================
126// Batch functions (for routing hot loop)
127// ============================================================================
128
137void computeHeads(const double* invert, const double* depth, double* head, int n);
138
146void computeVolumes(const NodeData& nodes, const double* depth, double* volume,
147 const NodeSubtypes* subs = nullptr);
148
158void computeOverflows(const double* new_volume, const double* full_volume,
159 double* overflow, double dt, int n);
160
161} // namespace node
162
163// Constants now consolidated in core/Constants.hpp
164
165} // namespace openswmm
166
167#endif // OPENSWMM_NODE_HPP
Global physical, numerical, and model constants for OpenSWMM Engine.
Structure-of-Arrays (SoA) storage for all node types.
Time series and rating curve data with bidirectional cursor.
Definition Node.cpp:22
double getPondedArea(const NodeData &nodes, int idx, double depth, TableData *tables, int unit_sys, const NodeSubtypes *subs)
Get the ponded area (for overflow above rim).
Definition Node.cpp:317
void computeVolumes(const NodeData &nodes, const double *depth, double *volume, const NodeSubtypes *subs)
Compute volumes for all nodes from their current depths.
Definition Node.cpp:371
double getHead(double invert_elev, double depth)
Compute head from depth: head = invert + depth.
Definition Node.hpp:121
void computeOverflows(const double *new_volume, const double *full_volume, double *overflow, double dt, int n)
Compute overflow for all nodes.
Definition Node.cpp:383
double getSurfArea(const NodeData &nodes, int idx, double depth, TableData *tables, int unit_sys, const NodeSubtypes *subs)
Compute surface area at a given depth for a single node.
Definition Node.cpp:256
void computeHeads(const double *invert, const double *depth, double *head, int n)
Compute head = invert + depth for all nodes.
Definition Node.cpp:361
double getOverflow(double new_volume, double full_volume, double dt)
Compute overflow rate at a node.
Definition Node.cpp:350
double getMaxOutflow(const NodeData &nodes, int idx, double q, double dt)
Compute max outflow limited by available volume.
Definition Node.cpp:335
double getVolume(const NodeData &nodes, int idx, double depth, TableData *tables, int unit_sys, const NodeSubtypes *subs)
Compute volume at a given depth for a single node.
Definition Node.cpp:70
double getDepth(const NodeData &nodes, int idx, double volume, TableData *tables, int unit_sys, const NodeSubtypes *subs)
Compute depth from volume for a single node (inverse of getVolume).
Definition Node.cpp:139
Definition NodeCoupling.cpp:15
Structure-of-Arrays storage for all nodes.
Definition NodeData.hpp:114
Owns the three node subtype side-tables plus the reverse index map.
Definition NodeSubtypes.hpp:357
Central, reentrant simulation context.
Definition SimulationContext.hpp:292