16#ifndef OPENSWMM_NODE_HPP
17#define OPENSWMM_NODE_HPP
45double getVolume(
const NodeData& nodes,
int idx,
double depth,
46 TableData* tables =
nullptr,
int unit_sys = 0,
47 const NodeSubtypes* subs =
nullptr);
60double getSurfArea(
const NodeData& nodes,
int idx,
double depth,
61 TableData* tables =
nullptr,
int unit_sys = 0,
62 const NodeSubtypes* subs =
nullptr);
75double getPondedArea(
const NodeData& nodes,
int idx,
double depth,
76 TableData* tables =
nullptr,
int unit_sys = 0,
77 const NodeSubtypes* subs =
nullptr);
90double getMaxOutflow(
const NodeData& nodes,
int idx,
double q,
double dt);
104double getOverflow(
double new_volume,
double full_volume,
double dt);
114double getDepth(
const NodeData& nodes,
int idx,
double volume,
115 TableData* tables =
nullptr,
int unit_sys = 0,
116 const NodeSubtypes* subs =
nullptr);
121inline double getHead(
double invert_elev,
double depth) {
122 return invert_elev + depth;
137void computeHeads(
const double* invert,
const double* depth,
double* head,
int n);
159 double* overflow,
double dt,
int n);
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)
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