OpenSWMM Engine  6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
Loading...
Searching...
No Matches
RdiiInterface.hpp
Go to the documentation of this file.
1
31
32#ifndef OPENSWMM_RDII_INTERFACE_HPP
33#define OPENSWMM_RDII_INTERFACE_HPP
34
35#include <cstdio>
36#include <string>
37#include <vector>
38
39namespace openswmm {
40
42
43namespace rdii_iface {
44
45static const char RDII_FILE_STAMP[] = "SWMM5-RDII";
46
51public:
53
60 int openForRead(SimulationContext& ctx, const std::string& path);
61
68 int openForWrite(const std::string& path, int rdii_step,
69 const std::vector<int>& node_idx);
70
75 void applyFlows(SimulationContext& ctx, double current_date);
76
82 void saveFlows(double current_date, const std::vector<double>& node_flows);
83
84 void close();
85
86 bool isOpen() const { return fp_ != nullptr; }
87 bool isWriting() const { return writing_; }
88 int step() const { return rdii_step_; }
89
90private:
91 std::FILE* fp_ = nullptr;
92 bool writing_ = false;
93 bool binary_ = true;
94
95 int rdii_step_ = 0;
96 int flow_units_ = 0;
97 std::vector<int> node_idx_;
98 std::vector<float> flows_;
99 double start_date_ = 0.0;
100 double end_date_ = 0.0;
101 bool have_record_ = false;
102
103 int readBinaryHeader(SimulationContext& ctx);
104 int readTextHeader(SimulationContext& ctx);
105 bool readNextRecord();
106};
107
108} // namespace rdii_iface
109} // namespace openswmm
110
111#endif // OPENSWMM_RDII_INTERFACE_HPP
RDII interface file manager (USE = read/override, SAVE = export).
Definition RdiiInterface.hpp:50
bool isWriting() const
Definition RdiiInterface.hpp:87
int openForRead(SimulationContext &ctx, const std::string &path)
Open an existing RDII file for reading (USE mode).
Definition RdiiInterface.cpp:36
bool isOpen() const
Definition RdiiInterface.hpp:86
~RdiiInterfaceFile()
Definition RdiiInterface.hpp:52
void applyFlows(SimulationContext &ctx, double current_date)
USE mode: add the file's RDII flows for current_date to ctx.nodes.rdii_inflow (step-aligned,...
Definition RdiiInterface.cpp:200
int openForWrite(const std::string &path, int rdii_step, const std::vector< int > &node_idx)
Open an RDII file for writing (SAVE mode, binary format).
Definition RdiiInterface.cpp:224
int step() const
Definition RdiiInterface.hpp:88
void close()
Definition RdiiInterface.cpp:270
void saveFlows(double current_date, const std::vector< double > &node_flows)
SAVE mode: write one record (date + per-node flows in cfs).
Definition RdiiInterface.cpp:253
Definition RdiiInterface.cpp:25
Definition NodeCoupling.cpp:15
Central, reentrant simulation context.
Definition SimulationContext.hpp:292