OpenSWMM Engine  6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
Loading...
Searching...
No Matches
RDII.hpp
Go to the documentation of this file.
1
20#ifndef OPENSWMM_RDII_HPP
21#define OPENSWMM_RDII_HPP
22
23#include <vector>
24#include <string>
25#include <unordered_map>
26
27namespace openswmm {
28
29struct SimulationContext;
30
31namespace rdii {
32
34 double r[12][3] = {};
35 double tPeak[12][3] = {};
36 double tBase[12][3] = {};
37 double iaMax[12][3] = {};
38 double iaRecov[12][3] = {};
39 double iaInit[12][3] = {};
40};
41
43 int count = 0;
44 std::vector<int> node_idx;
45 std::vector<int> uh_idx;
46 std::vector<double> area;
47
48 // Circular buffer of past rainfall (per group)
49 std::vector<std::vector<double>> past_rain;
50 std::vector<std::vector<int>> past_month;
51 std::vector<int> period;
52 std::vector<int> max_periods;
53
54 void resize(int n);
55};
56
58public:
59 void init(SimulationContext& ctx);
60
68 int addUnitHydParams(const std::string& name, const UnitHydParams& params);
69
74 int findUnitHyd(const std::string& name) const;
75
82 void computeAll(SimulationContext& ctx, double rainfall, int month, double dt);
83
84 std::vector<UnitHydParams> uh_params;
85
86private:
87 RDIIGroupSoA groups_;
88 std::unordered_map<std::string, int> uh_name_to_idx_;
89
91 double uhOrdinate(const UnitHydParams& uh, int month, int response, double t) const;
92
94 static int getRainInterval(const UnitHydParams& uh, double wet_step);
95
97 static int getMaxPeriods(const UnitHydParams& uh, int response, int rainInterval);
98};
99
100} // namespace rdii
101} // namespace openswmm
102
103#endif // OPENSWMM_RDII_HPP
Definition RDII.hpp:57
void init(SimulationContext &ctx)
Definition RDII.cpp:103
std::vector< UnitHydParams > uh_params
Definition RDII.hpp:84
void computeAll(SimulationContext &ctx, double rainfall, int month, double dt)
Compute RDII inflows for all groups and add to node lat_flow.
Definition RDII.cpp:159
int findUnitHyd(const std::string &name) const
Look up unit hydrograph index by name.
Definition RDII.cpp:64
int addUnitHydParams(const std::string &name, const UnitHydParams &params)
Register a unit hydrograph parameter set by name.
Definition RDII.cpp:51
Definition Controls.cpp:24
Central, reentrant simulation context.
Definition SimulationContext.hpp:141
Definition RDII.hpp:42
void resize(int n)
Definition RDII.cpp:19
std::vector< int > uh_idx
Unit hydrograph parameter index.
Definition RDII.hpp:45
std::vector< int > max_periods
Buffer size.
Definition RDII.hpp:52
std::vector< double > area
Contributing area (ft2)
Definition RDII.hpp:46
std::vector< std::vector< int > > past_month
[group][period]
Definition RDII.hpp:50
std::vector< int > node_idx
Target node index.
Definition RDII.hpp:44
std::vector< int > period
Current period index.
Definition RDII.hpp:51
std::vector< std::vector< double > > past_rain
[group][period]
Definition RDII.hpp:49
int count
Definition RDII.hpp:43
Definition RDII.hpp:33
double iaRecov[12][3]
IA recovery rate.
Definition RDII.hpp:38
double iaMax[12][3]
Initial abstraction max depth.
Definition RDII.hpp:37
double tPeak[12][3]
Time to peak (sec) per month × response.
Definition RDII.hpp:35
double tBase[12][3]
Base time (sec) per month × response.
Definition RDII.hpp:36
double r[12][3]
Rainfall fraction per month × response.
Definition RDII.hpp:34
double iaInit[12][3]
Initial IA used.
Definition RDII.hpp:39