OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
HeatData.hpp File Reference

Heat-transport data (heat plan §1, §3; phase H1). More...

#include <limits>
#include <vector>
#include "BedZoneData.hpp"
#include "HeatOverrideData.hpp"
Include dependency graph for HeatData.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  openswmm::ConductionConfig
 Vertical conduction between LID layers (plan §6.1 D-H5b, H5b). More...
 
struct  openswmm::SolarConfig
 [SOLAR_RADIATION] — site geometry and Bird atmosphere (H6a). More...
 
struct  openswmm::CloudConfig
 [CLOUD_COVER] — one fraction driving two modules (H6a, D-H6a-2). More...
 
struct  openswmm::RadiativeConfig
 [RADIATIVE_FLUXES] parameters (heat plan §2.2, phase H3). More...
 
struct  openswmm::HeatOverrideData
 Dense per-element attribute storage (PE2, D-PE2). More...
 
struct  openswmm::HeatConfigData
 Parsed model.heat state (heat component, phase H1). More...
 
struct  openswmm::HeatState
 Runtime heat state shared by the engines (phase H1). More...
 

Namespaces

namespace  openswmm
 

Enumerations

enum class  openswmm::HeatSource : int {
  openswmm::RAINFALL = 0 ,
  openswmm::DWF = 1 ,
  openswmm::GW = 2 ,
  openswmm::RDII = 3 ,
  openswmm::EXTERNAL_INFLOW = 4 ,
  openswmm::IFACE = 5 ,
  openswmm::INITIAL_STATE = 6 ,
  openswmm::COUNT_ = 7
}
 
enum class  openswmm::HeatSubArea : int {
  openswmm::IMPERV0 = 0 ,
  openswmm::IMPERV1 = 1 ,
  openswmm::PERV = 2 ,
  openswmm::COUNT_ = 3
}
 
enum class  openswmm::DryTempPolicy : int {
  openswmm::HOLD = 0 ,
  openswmm::AIR = 1 ,
  openswmm::DEFAULT = 2
}
 What a dry or absent element reports (plan D-H5c, user 2026-08-19). More...
 
enum class  openswmm::ShortwaveMode : int {
  openswmm::CONSTANT = 0 ,
  openswmm::TIMESERIES = 1 ,
  openswmm::COMPUTED = 2
}
 Where incoming shortwave Jin comes from (plan §2.5, phase H6a). More...
 

Detailed Description

Heat-transport data (heat plan §1, §3; phase H1).

Temperature is the reserved species __TEMPERATURE__ (registry kind RESERVED_TEMPERATURE), advected and mixed by whichever quality engine is active. H1 delivers TRANSPORT ONLY — the surface, radiative and sediment flux modules of plan §2 arrive with H2–H4, so nothing here adds or removes energy; temperature is carried and mixed exactly as a conservative tracer.

Per-source inlet temperatures come from the heat component's [HEAT_SOURCES] (model.heat, D-UT8), mirroring [WATER_AGE_SOURCES] row-for-row. Each QualitySolver loader contributes q · T_source to its node, the same seam the age channel uses (master plan §4.3 / D-UT10).

Why this carries temperature-volume and not Joules
Plan §3 describes the channel as enthalpy ρw cp V T_source. At H1 there are no energy fluxes, so ρw and cp appear on BOTH sides of every mixing operation and cancel identically — carrying them would ship two constants that no H1 gate could observe being wrong (lesson 39: unobserved is not tested). node_temp_vol_in is therefore q · T (°C·ft³/s), the exact analogue of node_age_vol_in. H2 introduces the constants together with the W/m² fluxes that make them load-bearing and observable, and rescales this accumulator to J/s at that point — a rename in the same loader sites, which is the churn D-UT10 already accepted as cheap.
See also
plans/transport/HEAT_TRANSPORT_PLAN.md §1, §3, §6 H1
data/WaterAgeData.hpp — the shape this mirrors
Author
Caleb Buahin caleb.nosp@m..bua.nosp@m.hin@g.nosp@m.mail.nosp@m..com
License\n Apache-2.0