OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
HeatOverrideData.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2//
3// Copyright 2026 Caleb Buahin
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing, software
12// distributed under the License is distributed on an "AS IS" BASIS,
13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14// See the License for the specific language governing permissions and
15// limitations under the License.
16
63
64#ifndef OPENSWMM_ENGINE_DATA_HEAT_OVERRIDE_DATA_HPP
65#define OPENSWMM_ENGINE_DATA_HEAT_OVERRIDE_DATA_HPP
66
67#include <cstddef>
68#include <cstdint>
69#include <string>
70#include <vector>
71
72namespace openswmm {
73
75enum class HeatElemKind : std::uint8_t {
76 NODE = 0,
77 LINK = 1,
79 LID = 3,
83};
84
97 int index = -1;
98
105 static HeatElement node(int i) { return {HeatElemKind::NODE, i}; }
112 static HeatElement link(int i) { return {HeatElemKind::LINK, i}; }
119 static HeatElement subcatch(int i) { return {HeatElemKind::SUBCATCH, i}; }
126 static HeatElement cell2d(int i) { return {HeatElemKind::CELL2D, i}; }
127};
128
130enum class HeatScope : std::uint8_t {
132 TAG = 1,
133 NODE = 2,
134 LINK = 3,
135 // 4/5 remain reserved for the effective-value API's air/series sources.
138};
139
171
181inline bool isSedimentAttr(HeatAttr a) noexcept {
182 return static_cast<int>(a) >= static_cast<int>(HeatAttr::SED_THERMAL_DIFFUSIVITY);
183}
184
193
194// The dense storage that these rows resolve into lives in HeatData.hpp, as
195// `HeatOverrideData`, because it holds real `RadiativeConfig` /
196// `SedimentConfig` values and those are declared there. Keeping the TOKENS
197// here lets BedExchange.hpp and the flux evaluators take a `HeatElement`
198// without pulling in the whole heat-config header.
199
200} // namespace openswmm
201
202#endif // OPENSWMM_ENGINE_DATA_HEAT_OVERRIDE_DATA_HPP
Definition ExchangeLaw.hpp:60
HeatAttr
Which attribute an override row sets.
Definition HeatOverrideData.hpp:150
@ SED_MESH_POROSITY
Definition HeatOverrideData.hpp:167
@ SED_BED_THICKNESS
Definition HeatOverrideData.hpp:161
@ SKY_VIEW
Definition HeatOverrideData.hpp:154
@ SED_HYPORHEIC_VELOCITY
Definition HeatOverrideData.hpp:164
@ LANDCOVER_TEMP
NEW (PE2) — NaN means "use air temperature".
Definition HeatOverrideData.hpp:157
@ EMISS_WATER
Definition HeatOverrideData.hpp:155
@ SED_GROUND_DEPTH
Definition HeatOverrideData.hpp:162
@ SED_GROUND_TEMP
Definition HeatOverrideData.hpp:163
@ SED_GROUND_SOURCE
Definition HeatOverrideData.hpp:168
@ ALBEDO
Definition HeatOverrideData.hpp:152
@ SHADE_FACTOR
Definition HeatOverrideData.hpp:153
@ SED_SPECIFIC_HEAT
Definition HeatOverrideData.hpp:166
@ SED_THERMAL_DIFFUSIVITY
Definition HeatOverrideData.hpp:159
@ EMISS_LANDCOVER
Definition HeatOverrideData.hpp:156
@ SED_DENSITY
Definition HeatOverrideData.hpp:165
@ SED_SOLUTE_DIFFUSIVITY
Definition HeatOverrideData.hpp:160
HeatScope
Scope of one override row (D-PE3). Ordered by specificity.
Definition HeatOverrideData.hpp:130
@ MESH_TAG
Definition HeatOverrideData.hpp:137
@ GLOBAL
Definition HeatOverrideData.hpp:131
@ TAG
Definition HeatOverrideData.hpp:132
HeatElemKind
What kind of element a flux is being evaluated for (D-PE1).
Definition HeatOverrideData.hpp:75
@ CELL2D
Definition HeatOverrideData.hpp:82
@ NODE
Definition HeatOverrideData.hpp:76
@ SUBCATCH
Definition HeatOverrideData.hpp:78
@ LID
Definition HeatOverrideData.hpp:79
@ LINK
Definition HeatOverrideData.hpp:77
@ COUNT_
Definition HeatData.hpp:80
bool isSedimentAttr(HeatAttr a) noexcept
Classify an attribute ordinal by the sediment-family boundary.
Definition HeatOverrideData.hpp:181
Which element a flux evaluator is being called for.
Definition HeatOverrideData.hpp:95
static HeatElement subcatch(int i)
Construct a SUBCATCH heat-element descriptor.
Definition HeatOverrideData.hpp:119
static HeatElement link(int i)
Construct a LINK heat-element descriptor.
Definition HeatOverrideData.hpp:112
static HeatElement node(int i)
Construct a NODE heat-element descriptor.
Definition HeatOverrideData.hpp:105
int index
Definition HeatOverrideData.hpp:97
static HeatElement cell2d(int i)
Construct a CELL2D heat-element descriptor.
Definition HeatOverrideData.hpp:126
HeatElemKind kind
Definition HeatOverrideData.hpp:96
Definition HeatOverrideData.hpp:187
std::string name
tag or element name; empty at GLOBAL scope
Definition HeatOverrideData.hpp:190
HeatScope scope
Definition HeatOverrideData.hpp:189
double value
Definition HeatOverrideData.hpp:191
HeatAttr attr
Definition HeatOverrideData.hpp:188