OpenSWMM Engine  6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
Loading...
Searching...
No Matches
Landuse.hpp
Go to the documentation of this file.
1
30#ifndef OPENSWMM_LANDUSE_HPP
31#define OPENSWMM_LANDUSE_HPP
32
33#include <vector>
34
35namespace openswmm {
36
37struct SimulationContext;
38
39namespace landuse {
40
41// ============================================================================
42// Buildup/washoff function types
43// ============================================================================
44
45enum class BuildupType : int {
46 NONE = 0,
47 POWER = 1,
48 EXPON = 2,
49 SATUR = 3,
50 EXTERNAL = 4
51};
52
53enum class WashoffType : int {
54 NONE = 0,
55 EXPON = 1,
56 RATING = 2,
57 EMC = 3
58};
59
60// ============================================================================
61// Per (landuse × pollutant) buildup/washoff parameters — SoA
62// ============================================================================
63
66 double coeff[3] = {};
67 double max_days = 0.0;
68 int normalizer = 0;
69};
70
73 double coeff = 0.0;
74 double expon = 0.0;
75 double sweep_effic = 0.0;
76 double bmp_effic = 0.0;
77};
78
79// ============================================================================
80// Surface quality SoA (per subcatchment × pollutant)
81// ============================================================================
82
84 int n_subcatch = 0;
85 int n_landuses = 0;
86 int n_pollutants = 0;
87
90 std::vector<double> buildup;
91
93 std::vector<double> washoff_conc;
94
96 std::size_t bu_idx(int sc, int lu, int p) const {
97 return static_cast<std::size_t>(sc) * static_cast<std::size_t>(n_landuses * n_pollutants)
98 + static_cast<std::size_t>(lu) * static_cast<std::size_t>(n_pollutants)
99 + static_cast<std::size_t>(p);
100 }
101
102 void resize(int n_sc, int n_lu, int n_poll);
103};
104
105// ============================================================================
106// Landuse quality solver
107// ============================================================================
108
110public:
111 void init(int n_landuses, int n_pollutants);
112
123 const double* area, const double* curb_length,
124 double dt, int n_subcatch);
125
135 const double* runoff, const double* area,
136 int n_subcatch);
137
139 std::vector<BuildupParams> buildup_params;
140 std::vector<WashoffParams> washoff_params;
141 int n_landuses_ = 0;
143};
144
145} // namespace landuse
146} // namespace openswmm
147
148#endif // OPENSWMM_LANDUSE_HPP
Definition Landuse.hpp:109
void computeBuildup(SurfaceQualitySoA &sq, const double *area, const double *curb_length, double dt, int n_subcatch)
Batch compute buildup for all subcatchments.
Definition Landuse.cpp:76
void computeWashoff(SurfaceQualitySoA &sq, const double *runoff, const double *area, int n_subcatch)
Batch compute washoff for all subcatchments.
Definition Landuse.cpp:98
std::vector< BuildupParams > buildup_params
Per (landuse × pollutant) parameters. Index: [lu * n_pollutants + p].
Definition Landuse.hpp:139
int n_pollutants_
Definition Landuse.hpp:142
void init(int n_landuses, int n_pollutants)
Definition Landuse.cpp:27
int n_landuses_
Definition Landuse.hpp:141
std::vector< WashoffParams > washoff_params
Definition Landuse.hpp:140
WashoffType
Definition Landuse.hpp:53
BuildupType
Definition Landuse.hpp:45
Definition Controls.cpp:24
Definition Landuse.hpp:64
double max_days
Time to reach max buildup.
Definition Landuse.hpp:67
BuildupType type
Definition Landuse.hpp:65
int normalizer
0=PER_AREA, 1=PER_CURB
Definition Landuse.hpp:68
double coeff[3]
c0 (max), c1 (rate), c2 (exponent)
Definition Landuse.hpp:66
Definition Landuse.hpp:83
std::vector< double > buildup
Definition Landuse.hpp:90
std::size_t bu_idx(int sc, int lu, int p) const
Index into buildup array for (subcatch, landuse, pollutant)
Definition Landuse.hpp:96
std::vector< double > washoff_conc
Washoff concentration [subcatch * n_pollutants + pollutant] (mass/vol)
Definition Landuse.hpp:93
void resize(int n_sc, int n_lu, int n_poll)
Definition Landuse.cpp:19
int n_subcatch
Definition Landuse.hpp:84
int n_pollutants
Definition Landuse.hpp:86
int n_landuses
Definition Landuse.hpp:85
Definition Landuse.hpp:71
double expon
Washoff exponent.
Definition Landuse.hpp:74
double bmp_effic
BMP removal [0-1].
Definition Landuse.hpp:76
WashoffType type
Definition Landuse.hpp:72
double sweep_effic
Street sweep removal [0-1].
Definition Landuse.hpp:75
double coeff
Washoff coefficient.
Definition Landuse.hpp:73