32#ifndef OPENSWMM_NODE_HPP
33#define OPENSWMM_NODE_HPP
71double getVolume(
const NodeData& nodes,
int idx,
double depth, TableData* tables =
nullptr,
72 int unit_sys = 0,
const NodeSubtypes* subs =
nullptr);
94double getSurfArea(
const NodeData& nodes,
int idx,
double depth, TableData* tables =
nullptr,
95 int unit_sys = 0,
const NodeSubtypes* subs =
nullptr);
116double getPondedArea(
const NodeData& nodes,
int idx,
double depth, TableData* tables =
nullptr,
117 int unit_sys = 0,
const NodeSubtypes* subs =
nullptr);
132double getMaxOutflow(
const NodeData& nodes,
int idx,
double q,
double dt);
143double getOverflow(
double new_volume,
double full_volume,
double dt);
172double storeVolume(
const NodeData& nodes,
int idx,
double depth,
double volume);
199double getDepth(
const NodeData& nodes,
int idx,
double volume, TableData* tables =
nullptr,
200 int unit_sys = 0,
const NodeSubtypes* subs =
nullptr);
209inline double getHead(
double invert_elev,
double depth) {
210 return invert_elev + depth;
227void computeHeads(
const double* invert,
const double* depth,
double* head,
int n);
260void computeOverflows(
const double* new_volume,
const double* full_volume,
double* overflow,
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.
double getPondedArea(const NodeData &nodes, int idx, double depth, TableData *tables, int unit_sys, const NodeSubtypes *subs)
Select an above-rim ponded area or the raw storage surface area.
Definition Node.cpp:410
void computeVolumes(const NodeData &nodes, const double *depth, double *volume, const NodeSubtypes *subs)
Evaluate every node volume with US-unit, table-free scalar geometry.
Definition Node.cpp:496
double getHead(double invert_elev, double depth)
Compute hydraulic head by adding node invert and depth.
Definition Node.hpp:209
void computeOverflows(const double *new_volume, const double *full_volume, double *overflow, double dt, int n)
Compute per-node overflow from excess native volumes.
Definition Node.cpp:508
double getSurfArea(const NodeData &nodes, int idx, double depth, TableData *tables, int unit_sys, const NodeSubtypes *subs)
Evaluate the raw derivative of storage volume with depth.
Definition Node.cpp:335
double storeVolume(const NodeData &nodes, int idx, double depth, double volume)
Evaluate a transport store using an explicit depth and booked volume.
Definition Node.cpp:460
void computeHeads(const double *invert, const double *depth, double *head, int n)
Add native invert elevation and depth elementwise.
Definition Node.cpp:486
double getOverflow(double new_volume, double full_volume, double dt)
Convert excess node water volume into a timestep overflow rate.
Definition Node.cpp:453
double getMaxOutflow(const NodeData &nodes, int idx, double q, double dt)
Limit a proposed nonnegative withdrawal by legacy node storage availability.
Definition Node.cpp:429
double getVolume(const NodeData &nodes, int idx, double depth, TableData *tables, int unit_sys, const NodeSubtypes *subs)
Evaluate a node depth-volume relation in native units.
Definition Node.cpp:107
double getDepth(const NodeData &nodes, int idx, double volume, TableData *tables, int unit_sys, const NodeSubtypes *subs)
Convert booked storage volume to depth using native geometry.
Definition Node.cpp:196
Definition ExchangeLaw.hpp:60
Structure-of-Arrays storage for all nodes.
Definition NodeData.hpp:125
Owns the three node subtype side-tables plus the reverse index map.
Definition NodeSubtypes.hpp:535
Central, reentrant simulation context.
Definition SimulationContext.hpp:390