|
13 | 13 | #include <GridKit/Model/PhasorDynamics/Branch/Branch.hpp> |
14 | 14 | #include <GridKit/Model/PhasorDynamics/Branch/BranchData.hpp> |
15 | 15 | #include <GridKit/Model/PhasorDynamics/Bus/Bus.hpp> |
| 16 | +#include <GridKit/Model/VariableMonitorImpl.hpp> |
16 | 17 |
|
17 | 18 | namespace GridKit |
18 | 19 | { |
@@ -74,37 +75,11 @@ namespace GridKit |
74 | 75 | template <class ScalarT, typename IdxT> |
75 | 76 | Branch<ScalarT, IdxT>::Branch(bus_type* bus1, bus_type* bus2, const model_data_type& data) |
76 | 77 | : bus1_(bus1), |
77 | | - bus2_(bus2) |
| 78 | + bus2_(bus2), |
| 79 | + monitor_(std::make_unique<MonitorT>(data)) |
78 | 80 | { |
79 | | - if (data.parameters.contains(model_data_type::Parameters::R)) |
80 | | - { |
81 | | - R_ = std::get<RealT>(data.parameters.at(model_data_type::Parameters::R)); |
82 | | - } |
83 | | - |
84 | | - if (data.parameters.contains(model_data_type::Parameters::X)) |
85 | | - { |
86 | | - X_ = std::get<RealT>(data.parameters.at(model_data_type::Parameters::X)); |
87 | | - } |
88 | | - |
89 | | - if (data.parameters.contains(model_data_type::Parameters::G)) |
90 | | - { |
91 | | - G_ = std::get<RealT>(data.parameters.at(model_data_type::Parameters::G)); |
92 | | - } |
93 | | - |
94 | | - if (data.parameters.contains(model_data_type::Parameters::B)) |
95 | | - { |
96 | | - B_ = std::get<RealT>(data.parameters.at(model_data_type::Parameters::B)); |
97 | | - } |
98 | | - |
99 | | - if (data.ports.contains(model_data_type::Ports::bus1)) |
100 | | - { |
101 | | - bus1_id_ = data.ports.at(model_data_type::Ports::bus1); |
102 | | - } |
103 | | - |
104 | | - if (data.ports.contains(model_data_type::Ports::bus2)) |
105 | | - { |
106 | | - bus2_id_ = data.ports.at(model_data_type::Ports::bus2); |
107 | | - } |
| 81 | + initializeParameters(data); |
| 82 | + initializeMonitor(); |
108 | 83 |
|
109 | 84 | size_ = 0; |
110 | 85 | setDerivedParams(); |
@@ -277,6 +252,66 @@ namespace GridKit |
277 | 252 | return 0; |
278 | 253 | } |
279 | 254 |
|
| 255 | + template <class ScalarT, typename IdxT> |
| 256 | + void Branch<ScalarT, IdxT>::initializeParameters(const model_data_type& data) |
| 257 | + { |
| 258 | + if (data.parameters.contains(model_data_type::Parameters::R)) |
| 259 | + { |
| 260 | + R_ = std::get<RealT>(data.parameters.at(model_data_type::Parameters::R)); |
| 261 | + } |
| 262 | + |
| 263 | + if (data.parameters.contains(model_data_type::Parameters::X)) |
| 264 | + { |
| 265 | + X_ = std::get<RealT>(data.parameters.at(model_data_type::Parameters::X)); |
| 266 | + } |
| 267 | + |
| 268 | + if (data.parameters.contains(model_data_type::Parameters::G)) |
| 269 | + { |
| 270 | + G_ = std::get<RealT>(data.parameters.at(model_data_type::Parameters::G)); |
| 271 | + } |
| 272 | + |
| 273 | + if (data.parameters.contains(model_data_type::Parameters::B)) |
| 274 | + { |
| 275 | + B_ = std::get<RealT>(data.parameters.at(model_data_type::Parameters::B)); |
| 276 | + } |
| 277 | + |
| 278 | + if (data.ports.contains(model_data_type::Ports::bus1)) |
| 279 | + { |
| 280 | + bus1_id_ = data.ports.at(model_data_type::Ports::bus1); |
| 281 | + } |
| 282 | + |
| 283 | + if (data.ports.contains(model_data_type::Ports::bus2)) |
| 284 | + { |
| 285 | + bus2_id_ = data.ports.at(model_data_type::Ports::bus2); |
| 286 | + } |
| 287 | + } |
| 288 | + |
| 289 | + template <class ScalarT, typename IdxT> |
| 290 | + const Model::VariableMonitorBase* Branch<ScalarT, IdxT>::getMonitor() const |
| 291 | + { |
| 292 | + return monitor_.get(); |
| 293 | + } |
| 294 | + |
| 295 | + template <class ScalarT, typename IdxT> |
| 296 | + void Branch<ScalarT, IdxT>::initializeMonitor() |
| 297 | + { |
| 298 | + using Variable = typename model_data_type::MonitorableVariables; |
| 299 | + monitor_->set(Variable::ir1, [this] |
| 300 | + { return Ir1(); }); |
| 301 | + monitor_->set(Variable::ii1, [this] |
| 302 | + { return Ii1(); }); |
| 303 | + // monitor_->set(Variable::im1, [this] { return ?(); }); |
| 304 | + // monitor_->set(Variable::p1, [this] { return ?(); }); |
| 305 | + // monitor_->set(Variable::q1, [this] { return ?(); }); |
| 306 | + monitor_->set(Variable::ir2, [this] |
| 307 | + { return Ir2(); }); |
| 308 | + monitor_->set(Variable::ii2, [this] |
| 309 | + { return Ii2(); }); |
| 310 | + // monitor_->set(Variable::im2, [this] { return ?(); }); |
| 311 | + // monitor_->set(Variable::p2, [this] { return ?(); }); |
| 312 | + // monitor_->set(Variable::q2, [this] { return ?(); }); |
| 313 | + } |
| 314 | + |
280 | 315 | /** |
281 | 316 | * @brief Derived parameters |
282 | 317 | * |
|
0 commit comments