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,
84};
85
98 int index = -1;
99
100 static HeatElement node(int i) { return {HeatElemKind::NODE, i}; }
101 static HeatElement link(int i) { return {HeatElemKind::LINK, i}; }
102 static HeatElement subcatch(int i) { return {HeatElemKind::SUBCATCH, i}; }
103 static HeatElement cell2d(int i) { return {HeatElemKind::CELL2D, i}; }
104};
105
107enum class HeatScope : std::uint8_t {
109 TAG = 1,
110 NODE = 2,
112};
113
143
147inline bool isSedimentAttr(HeatAttr a) noexcept {
148 return static_cast<int>(a) >= static_cast<int>(HeatAttr::SED_THERMAL_DIFFUSIVITY);
149}
150
159
160// The dense storage that these rows resolve into lives in HeatData.hpp, as
161// `HeatOverrideData`, because it holds real `RadiativeConfig` /
162// `SedimentConfig` values and those are declared there. Keeping the TOKENS
163// here lets BedExchange.hpp and the flux evaluators take a `HeatElement`
164// without pulling in the whole heat-config header.
165
166} // namespace openswmm
167
168#endif // OPENSWMM_ENGINE_DATA_HEAT_OVERRIDE_DATA_HPP
Definition NodeCoupling.cpp:16
HeatAttr
Which attribute an override row sets.
Definition HeatOverrideData.hpp:124
@ SED_BED_THICKNESS
Definition HeatOverrideData.hpp:135
@ SKY_VIEW
Definition HeatOverrideData.hpp:128
@ SED_HYPORHEIC_VELOCITY
Definition HeatOverrideData.hpp:138
@ LANDCOVER_TEMP
NEW (PE2) — NaN means "use air temperature".
Definition HeatOverrideData.hpp:131
@ EMISS_WATER
Definition HeatOverrideData.hpp:129
@ SED_GROUND_DEPTH
Definition HeatOverrideData.hpp:136
@ SED_GROUND_TEMP
Definition HeatOverrideData.hpp:137
@ ALBEDO
Definition HeatOverrideData.hpp:126
@ SHADE_FACTOR
Definition HeatOverrideData.hpp:127
@ SED_SPECIFIC_HEAT
Definition HeatOverrideData.hpp:140
@ SED_THERMAL_DIFFUSIVITY
Definition HeatOverrideData.hpp:133
@ EMISS_LANDCOVER
Definition HeatOverrideData.hpp:130
@ SED_DENSITY
Definition HeatOverrideData.hpp:139
@ SED_SOLUTE_DIFFUSIVITY
Definition HeatOverrideData.hpp:134
HeatScope
Scope of one override row (D-PE3). Ordered by specificity.
Definition HeatOverrideData.hpp:107
@ GLOBAL
Definition HeatOverrideData.hpp:108
@ TAG
Definition HeatOverrideData.hpp:109
HeatElemKind
What kind of element a flux is being evaluated for (D-PE1).
Definition HeatOverrideData.hpp:75
@ CELL2D
Definition HeatOverrideData.hpp:83
@ 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
Definition HeatOverrideData.hpp:147
Which element a flux evaluator is being called for.
Definition HeatOverrideData.hpp:96
static HeatElement subcatch(int i)
Definition HeatOverrideData.hpp:102
static HeatElement link(int i)
Definition HeatOverrideData.hpp:101
static HeatElement node(int i)
Definition HeatOverrideData.hpp:100
int index
Definition HeatOverrideData.hpp:98
static HeatElement cell2d(int i)
Definition HeatOverrideData.hpp:103
HeatElemKind kind
Definition HeatOverrideData.hpp:97
Definition HeatOverrideData.hpp:153
std::string name
tag or element name; empty at GLOBAL scope
Definition HeatOverrideData.hpp:156
HeatScope scope
Definition HeatOverrideData.hpp:155
double value
Definition HeatOverrideData.hpp:157
HeatAttr attr
Definition HeatOverrideData.hpp:154