SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
rainfallseriesmodel.h
Go to the documentation of this file.
1
28#ifndef OPENSWMMVIS_PLOT_RAINFALLSERIESMODEL_H
29#define OPENSWMMVIS_PLOT_RAINFALLSERIESMODEL_H
30
31#include <QDateTime>
32#include <QObject>
33#include <QPointF>
34#include <QString>
35#include <QVector>
36
37namespace openswmmvis::plot {
38
41 QString id;
42 int engineIndex = -1;
43 int dataSource = 0;
44 int rainType = 0;
45 int fileFormat = -1;
46 double intervalSec = 3600.0;
47 double scaleFactor = 1.0;
49 QString stationId;
50 QString fileColumn;
51 QVector<double> timesOA;
52 QVector<double> intensity;
53 bool fileFailed = false;
54
55 bool hasData() const noexcept { return !timesOA.isEmpty(); }
56};
57
60 int sampleCount = 0;
61 double totalDepth = 0.0;
62 double peakIntensity = 0.0;
63 QDateTime peakTime;
64 QDateTime first;
65 QDateTime last;
66 int gapCount = 0;
67 qint64 longestGapSecs = 0;
68};
69
70class RainfallSeriesModel : public QObject
71{
72 Q_OBJECT
73
74public:
76 enum class Basis {
77 Intensity,
80 };
81 Q_ENUM(Basis)
82
83 explicit RainfallSeriesModel(QObject *parent = nullptr);
84
87 void setEngine(void *engineHandle) { m_engine = engineHandle; }
88 void *engine() const noexcept { return m_engine; }
89
94 int reload(bool reloadRainFiles);
95
96 const QVector<RainGageRainfall> &gages() const noexcept { return m_gages; }
97
98 // ── Pure series/stats math (unit-testable without an engine) ────────────
99
101
106 static QVector<QPointF> buildStepSeries(const RainGageRainfall &g, Basis b);
107
109 static QVector<QPointF> buildCumulativeSeries(const RainGageRainfall &g);
110
113 static double entryDurationSecs(const RainGageRainfall &g, int i);
114
115signals:
117 void reloaded();
118
119private:
120 void *m_engine = nullptr;
121 QVector<RainGageRainfall> m_gages;
122};
123
124} // namespace openswmmvis::plot
125
126#endif // OPENSWMMVIS_PLOT_RAINFALLSERIESMODEL_H
Definition rainfallseriesmodel.h:71
static QVector< QPointF > buildCumulativeSeries(const RainGageRainfall &g)
Cumulative-depth polyline (X msecsSinceEpoch, Y total depth).
Definition rainfallseriesmodel.cpp:181
static RainGageStats computeStats(const RainGageRainfall &g)
Definition rainfallseriesmodel.cpp:104
int reload(bool reloadRainFiles)
Re-assemble every gage's series from the engine.
Definition rainfallseriesmodel.cpp:35
void * engine() const noexcept
Definition rainfallseriesmodel.h:88
void reloaded()
reload() finished; consumers rebuild charts/tables.
const QVector< RainGageRainfall > & gages() const noexcept
Definition rainfallseriesmodel.h:96
void setEngine(void *engineHandle)
Bind the engine handle (void* keeps the header MOC-clean; registry precedent). Does not load — call r...
Definition rainfallseriesmodel.h:87
static double entryDurationSecs(const RainGageRainfall &g, int i)
Effective accrual duration of entry i in seconds: min(recording interval, spacing to the next entry).
Definition rainfallseriesmodel.cpp:92
static QVector< QPointF > buildStepSeries(const RainGageRainfall &g, Basis b)
Step-function chart points for the engine's application contract: per entry (t_i, v_i) (t_end,...
Definition rainfallseriesmodel.cpp:137
Basis
Display basis for chart series built from a gage.
Definition rainfallseriesmodel.h:76
@ Intensity
As resolved: units/hr, step function.
@ DepthPerInterval
Depth accrued over each entry's interval.
size_t i
Definition contourjob.cpp:27
int b
local residual indices, a < b
Definition meshquadmatch.cpp:46
Definition chartproperties.h:34
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
One rain gage's metadata + resolved rainfall series.
Definition rainfallseriesmodel.h:40
QVector< double > timesOA
Absolute SWMM DateTimes, ascending.
Definition rainfallseriesmodel.h:51
int engineIndex
Definition rainfallseriesmodel.h:42
bool fileFailed
FILE source with an empty resolved series.
Definition rainfallseriesmodel.h:53
QString id
Definition rainfallseriesmodel.h:41
QVector< double > intensity
Resolved intensity, project rain units/hr.
Definition rainfallseriesmodel.h:52
int fileFormat
5 STAN_PRCP / 6 USER_CSV / -1 n.a.
Definition rainfallseriesmodel.h:45
QString timeseriesName
TIMESERIES source only.
Definition rainfallseriesmodel.h:48
int dataSource
0 = TIMESERIES, 1 = FILE.
Definition rainfallseriesmodel.h:43
double intervalSec
Definition rainfallseriesmodel.h:46
QString stationId
STAN_PRCP files only.
Definition rainfallseriesmodel.h:49
double scaleFactor
Definition rainfallseriesmodel.h:47
QString fileColumn
USER_CSV files only.
Definition rainfallseriesmodel.h:50
bool hasData() const noexcept
Definition rainfallseriesmodel.h:55
int rainType
0 INTENSITY / 1 VOLUME / 2 CUMULATIVE (authoring info).
Definition rainfallseriesmodel.h:44
Per-gage summary statistics (computed from the resolved series).
Definition rainfallseriesmodel.h:59
int sampleCount
Definition rainfallseriesmodel.h:60
QDateTime peakTime
Definition rainfallseriesmodel.h:63
double totalDepth
Project rain units.
Definition rainfallseriesmodel.h:61
qint64 longestGapSecs
Definition rainfallseriesmodel.h:67
QDateTime first
Definition rainfallseriesmodel.h:64
int gapCount
Spacings > 1.5 × recording interval.
Definition rainfallseriesmodel.h:66
double peakIntensity
Project rain units / hr.
Definition rainfallseriesmodel.h:62
QDateTime last
Definition rainfallseriesmodel.h:65