OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
openswmm::SolarConfig Struct Reference

[SOLAR_RADIATION] — site geometry and Bird atmosphere (H6a). More...

#include <HeatData.hpp>

Collaboration diagram for openswmm::SolarConfig:

Public Attributes

double latitude_deg = 0.0
 +N. REQUIRED under COMPUTED.
 
double longitude_deg = 0.0
 +E. REQUIRED under COMPUTED.
 
double timezone_hours = 0.0
 Offset from UTC, +E (e.g. MST = -7).
 
bool has_latitude = false
 Set by the parser, checked at close.
 
bool has_longitude = false
 
bool has_timezone = false
 
double elevation_m = 0.0
 
bool has_elevation = false
 
double aod380 = 0.30
 Aerosol optical depth at 380 nm.
 
double aod500 = 0.20
 Aerosol optical depth at 500 nm.
 
double precip_water_cm = 1.42
 Precipitable water vapour, cm.
 
double ozone_cm = 0.34
 Ozone column, cm (NTP)
 
double ground_albedo = 0.20
 

Detailed Description

[SOLAR_RADIATION] — site geometry and Bird atmosphere (H6a).

Warning
latitude/longitude have no usable default and the COMPUTED branch refuses without them. This is deliberate and is stricter than D-H5c's dry-element policy, which does default: a dry-element convention has a defensible default, an unstated latitude does not. ClimateState::latitude cannot stand in — it is the [TEMPERATURE] SNOWMELT field, defaults to 0, and is written only by decks carrying that line, so borrowing it would silently model equatorial noon (plan §2.5 trap 1).
Note
ClimateState::dtlong cannot stand in for longitude either: it is a solar-time correction in MINUTES carrying a sentinel (0 means "true solar time", which is not "longitude 0"). Plan §2.5 trap 2.

Member Data Documentation

◆ aod380

double openswmm::SolarConfig::aod380 = 0.30

Aerosol optical depth at 380 nm.

◆ aod500

double openswmm::SolarConfig::aod500 = 0.20

Aerosol optical depth at 500 nm.

◆ elevation_m

double openswmm::SolarConfig::elevation_m = 0.0

Site elevation, metres, for the Bird pressure term. Absent means "take the climate state's `elev`", which is the usual case.

A < 0 sentinel was the first spelling and was wrong: the parser deliberately admits elevations below sea level (the Dead Sea, the Salton Sea), and every one of them would have been silently discarded in favour of the climate value. An explicit flag cannot collide with a legal value.

◆ ground_albedo

double openswmm::SolarConfig::ground_albedo = 0.20

Surface albedo for the sky-ground multiple-reflection term. NOT RadiativeConfig::albedo, which is the WATER's reflectance — two different surfaces, deliberately two different fields.

◆ has_elevation

bool openswmm::SolarConfig::has_elevation = false

◆ has_latitude

bool openswmm::SolarConfig::has_latitude = false

Set by the parser, checked at close.

◆ has_longitude

bool openswmm::SolarConfig::has_longitude = false

◆ has_timezone

bool openswmm::SolarConfig::has_timezone = false

Not required — 0 (UTC) is a legal answer — but an OMITTED timezone shifts the whole diurnal curve by up to 12 h, which dwarfs every other error in this module. Tracked so the parser can WARN.

◆ latitude_deg

double openswmm::SolarConfig::latitude_deg = 0.0

+N. REQUIRED under COMPUTED.

◆ longitude_deg

double openswmm::SolarConfig::longitude_deg = 0.0

+E. REQUIRED under COMPUTED.

◆ ozone_cm

double openswmm::SolarConfig::ozone_cm = 0.34

Ozone column, cm (NTP)

◆ precip_water_cm

double openswmm::SolarConfig::precip_water_cm = 1.42

Precipitable water vapour, cm.

◆ timezone_hours

double openswmm::SolarConfig::timezone_hours = 0.0

Offset from UTC, +E (e.g. MST = -7).


The documentation for this struct was generated from the following file: