OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
UebSnow.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2
11
12#pragma once
13#include <string>
14#include <vector>
15
16namespace openswmm::surface::ueb {
23struct Parameters {
26 double roughness = .01, measurement_height = 2, snow_density = 200, soil_density = 1700;
28 double liquid_retention = .02, drainage_conductivity = 200; // m/h, reference parameter units
29 double equilibrium_conductance = .02; // m/h
30 double snow_conductivity = .33, soil_conductivity = 6.5; // kJ/(m K h)
31 double low_frequency = .0654, amplitude = 1, stability = 1;
32 double ground_albedo = .25, visible_albedo = .85, infrared_albedo = .65;
33 double new_snow_depth = .002, age_dust = .03;
34 double visible_age = .2, infrared_age = .5;
35 double max_step = 3600; // seconds; kernel subdivides longer forcing intervals
42 std::string validate() const;
43};
44
48struct Site {
49 double forest = 0, drift = 1, pressure = 101325, ground_heat = 0, extinction_depth = .1;
50};
51
56struct Forcing {
57 double seconds = 0, precipitation = 0, temperature = 0, wind = 0, humidity = .5;
58 double shortwave = 0, longwave = 0, cosine = 0; // W/m2; cosine of incident sun angle
59 double snow_catch = 1;
60 double snow_fraction = -1; // -1 uses UEB temperature partition; [0,1] prescribes it
61};
62
64 double seconds = 0, surface = 0, bulk = 0;
65};
66
70struct State {
71 double energy = 0, water = 0, age = 0, refreezing_depth = 0, total_refreezing_depth = 0;
72 std::vector<ThermalSample> history; // at most the preceding 24 hours, duration weighted
73};
74
78struct Fluxes {
79 double rain = 0, snow = 0, liquid = 0,
80 sublimation = 0; // integrated m; sublimation may be negative
81 double net_energy = 0, outgoing_melt_energy = 0; // integrated kJ/m2
84 int steps = 0, retries = 0, diagnostics = 0;
85};
86
105std::string advance(State& state, const Parameters& parameters, const Site& site,
106 const Forcing& forcing, Fluxes& output);
114double bulkTemperature(const State& state, const Parameters& parameters) noexcept;
115}
Definition SnowCheckpoint.hpp:60
TemperatureMethod
Definition UebSnow.hpp:17
@ Equilibrium
Definition UebSnow.hpp:17
@ ModifiedForceRestore
Definition UebSnow.hpp:17
double bulkTemperature(const State &s, const Parameters &p) noexcept
Convert signed represented snow/active-soil energy to bulk temperature.
Definition UebSnow.cpp:340
std::string advance(State &state, const Parameters &p, const Site &site, const Forcing &f, Fluxes &output)
Advance one isolated point pack with bounded reference solves and whole-call publication.
Definition UebSnow.cpp:347
Integrated accepted point exchanges and final thermal diagnostics. Water depths m and energy kJ/m2 co...
Definition UebSnow.hpp:78
int steps
Definition UebSnow.hpp:84
double outgoing_melt_energy
Definition UebSnow.hpp:81
double net_energy
Definition UebSnow.hpp:81
double sublimation
Definition UebSnow.hpp:80
int diagnostics
Definition UebSnow.hpp:84
double energy_residual
Definition UebSnow.hpp:83
double water_residual
Definition UebSnow.hpp:83
double rain
Definition UebSnow.hpp:79
double albedo
Definition UebSnow.hpp:82
double snow
Definition UebSnow.hpp:79
double liquid
Definition UebSnow.hpp:79
double surface_temperature
Definition UebSnow.hpp:82
double bulk_temperature
Definition UebSnow.hpp:82
int retries
Definition UebSnow.hpp:84
Held point meteorology over one requested interval. seconds is duration, precipitation integrated liq...
Definition UebSnow.hpp:56
double wind
Definition UebSnow.hpp:57
double seconds
Definition UebSnow.hpp:57
double snow_catch
Definition UebSnow.hpp:59
double temperature
Definition UebSnow.hpp:57
double precipitation
Definition UebSnow.hpp:57
double shortwave
Definition UebSnow.hpp:58
double cosine
Definition UebSnow.hpp:58
double snow_fraction
Definition UebSnow.hpp:60
double longwave
Definition UebSnow.hpp:58
double humidity
Definition UebSnow.hpp:57
Point UEB material, radiation and integration parameters. Temperatures are Celsius,...
Definition UebSnow.hpp:23
double infrared_albedo
Definition UebSnow.hpp:32
double stability
Definition UebSnow.hpp:31
TemperatureMethod temperature
Definition UebSnow.hpp:24
double soil_heat_capacity
Definition UebSnow.hpp:27
double equilibrium_conductance
Definition UebSnow.hpp:29
double age_dust
Definition UebSnow.hpp:33
double amplitude
Definition UebSnow.hpp:31
double roughness
Definition UebSnow.hpp:26
std::string validate() const
Check formulation, finite fields and implemented physical parameter bounds.
Definition UebSnow.cpp:296
double emissivity
Definition UebSnow.hpp:25
double max_step
Definition UebSnow.hpp:35
double soil_conductivity
Definition UebSnow.hpp:30
double visible_albedo
Definition UebSnow.hpp:32
double snow_density
Definition UebSnow.hpp:26
double soil_density
Definition UebSnow.hpp:26
double visible_age
Definition UebSnow.hpp:34
double snow_conductivity
Definition UebSnow.hpp:30
double low_frequency
Definition UebSnow.hpp:31
double drainage_conductivity
Definition UebSnow.hpp:28
double rain_temperature
Definition UebSnow.hpp:25
double measurement_height
Definition UebSnow.hpp:26
double snow_temperature
Definition UebSnow.hpp:25
double new_snow_depth
Definition UebSnow.hpp:33
double infrared_age
Definition UebSnow.hpp:34
double liquid_retention
Definition UebSnow.hpp:28
double active_soil_depth
Definition UebSnow.hpp:27
double ground_albedo
Definition UebSnow.hpp:32
Per-column environmental settings. forest is canopy fraction, drift a snow multiplier,...
Definition UebSnow.hpp:48
double pressure
Definition UebSnow.hpp:49
double ground_heat
Definition UebSnow.hpp:49
double drift
Definition UebSnow.hpp:49
double extinction_depth
Definition UebSnow.hpp:49
double forest
Definition UebSnow.hpp:49
One owned point snow/active-soil energy and thermal-memory inventory. energy kJ/m2 may be signed,...
Definition UebSnow.hpp:70
std::vector< ThermalSample > history
Definition UebSnow.hpp:72
double water
Definition UebSnow.hpp:71
double total_refreezing_depth
Definition UebSnow.hpp:71
double refreezing_depth
Definition UebSnow.hpp:71
double age
Definition UebSnow.hpp:71
double energy
Definition UebSnow.hpp:71
One duration-weighted preceding thermal sample (seconds and Celsius).
Definition UebSnow.hpp:63
double seconds
Definition UebSnow.hpp:64
double bulk
Definition UebSnow.hpp:64
double surface
Definition UebSnow.hpp:64