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
27
namespace
openswmm
{
28
29
struct
SimulationContext;
30
31
namespace
rdii {
32
33
struct
UnitHydParams
{
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
42
struct
RDIIGroupSoA
{
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
57
class
RDIISolver
{
58
public
:
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
86
private
:
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
openswmm::rdii::RDIISolver
Definition
RDII.hpp:57
openswmm::rdii::RDIISolver::init
void init(SimulationContext &ctx)
Definition
RDII.cpp:103
openswmm::rdii::RDIISolver::uh_params
std::vector< UnitHydParams > uh_params
Definition
RDII.hpp:84
openswmm::rdii::RDIISolver::computeAll
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
openswmm::rdii::RDIISolver::findUnitHyd
int findUnitHyd(const std::string &name) const
Look up unit hydrograph index by name.
Definition
RDII.cpp:64
openswmm::rdii::RDIISolver::addUnitHydParams
int addUnitHydParams(const std::string &name, const UnitHydParams ¶ms)
Register a unit hydrograph parameter set by name.
Definition
RDII.cpp:51
openswmm
Definition
Controls.cpp:24
openswmm::SimulationContext
Central, reentrant simulation context.
Definition
SimulationContext.hpp:141
openswmm::rdii::RDIIGroupSoA
Definition
RDII.hpp:42
openswmm::rdii::RDIIGroupSoA::resize
void resize(int n)
Definition
RDII.cpp:19
openswmm::rdii::RDIIGroupSoA::uh_idx
std::vector< int > uh_idx
Unit hydrograph parameter index.
Definition
RDII.hpp:45
openswmm::rdii::RDIIGroupSoA::max_periods
std::vector< int > max_periods
Buffer size.
Definition
RDII.hpp:52
openswmm::rdii::RDIIGroupSoA::area
std::vector< double > area
Contributing area (ft2)
Definition
RDII.hpp:46
openswmm::rdii::RDIIGroupSoA::past_month
std::vector< std::vector< int > > past_month
[group][period]
Definition
RDII.hpp:50
openswmm::rdii::RDIIGroupSoA::node_idx
std::vector< int > node_idx
Target node index.
Definition
RDII.hpp:44
openswmm::rdii::RDIIGroupSoA::period
std::vector< int > period
Current period index.
Definition
RDII.hpp:51
openswmm::rdii::RDIIGroupSoA::past_rain
std::vector< std::vector< double > > past_rain
[group][period]
Definition
RDII.hpp:49
openswmm::rdii::RDIIGroupSoA::count
int count
Definition
RDII.hpp:43
openswmm::rdii::UnitHydParams
Definition
RDII.hpp:33
openswmm::rdii::UnitHydParams::iaRecov
double iaRecov[12][3]
IA recovery rate.
Definition
RDII.hpp:38
openswmm::rdii::UnitHydParams::iaMax
double iaMax[12][3]
Initial abstraction max depth.
Definition
RDII.hpp:37
openswmm::rdii::UnitHydParams::tPeak
double tPeak[12][3]
Time to peak (sec) per month × response.
Definition
RDII.hpp:35
openswmm::rdii::UnitHydParams::tBase
double tBase[12][3]
Base time (sec) per month × response.
Definition
RDII.hpp:36
openswmm::rdii::UnitHydParams::r
double r[12][3]
Rainfall fraction per month × response.
Definition
RDII.hpp:34
openswmm::rdii::UnitHydParams::iaInit
double iaInit[12][3]
Initial IA used.
Definition
RDII.hpp:39
src
engine
hydrology
RDII.hpp
Generated by
1.9.8