Skip to content

Commit ea5e784

Browse files
authored
Migrate components to ParameterReader (#632)
* migrate PD components to ParameterReader * update READMEs
1 parent 9c211f3 commit ea5e784

32 files changed

Lines changed: 393 additions & 1071 deletions

‎CHANGELOG.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
- Added `Model::ParameterReader`
1313
- Removed legacy PhasorDynamics component constructors in favor of constructors taking model data.
1414
- Added hierarchical PhasorDynamics system models.
15+
- Migrated PhasorDynamics models with real and Boolean parameters to `Model::ParameterReader`.
1516

1617
## v0.2
1718

‎GridKit/Model/PhasorDynamics/Branch/Branch.hpp‎

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,6 @@ namespace GridKit
113113
void setDerivedParams();
114114
void terminalCurrent1(ScalarT& Ir, ScalarT& Ii);
115115
void terminalCurrent2(ScalarT& Ir, ScalarT& Ii);
116-
bool readRealParameter(const ModelDataT& data,
117-
typename ModelDataT::Parameters parameter,
118-
RealT& target);
119116

120117
static __attribute__((always_inline)) inline void addAdmittanceContribution(const RealT G,
121118
const RealT B,
@@ -203,8 +200,6 @@ namespace GridKit
203200
RealT g22_{0.0};
204201
RealT b22_{0.0};
205202

206-
int parameter_error_count_{0};
207-
208203
/// Variable monitor
209204
std::unique_ptr<MonitorT> monitor_;
210205
};

‎GridKit/Model/PhasorDynamics/Branch/BranchImpl.hpp‎

Lines changed: 11 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,7 @@
77
*
88
*/
99

10-
#include <variant>
11-
12-
#include <magic_enum/magic_enum.hpp>
13-
10+
#include <GridKit/Model/ParameterReader.hpp>
1411
#include <GridKit/Model/PhasorDynamics/Branch/Branch.hpp>
1512
#include <GridKit/Model/PhasorDynamics/Branch/BranchData.hpp>
1613
#include <GridKit/Model/PhasorDynamics/Bus/Bus.hpp>
@@ -109,8 +106,6 @@ namespace GridKit
109106
{
110107
Model::ConfigurationChecks checks("Branch");
111108

112-
checks.check(parameter_error_count_ == 0, "model data has invalid parameters");
113-
114109
checks.check(bus1_ != nullptr, "bus1 pointer is null");
115110
checks.check(bus2_ != nullptr, "bus2 pointer is null");
116111

@@ -311,14 +306,16 @@ namespace GridKit
311306
using Parameter = typename ModelDataT::Parameters;
312307
using Buses = typename ModelDataT::Buses;
313308

314-
readRealParameter(data, Parameter::R, R_);
315-
readRealParameter(data, Parameter::X, X_);
316-
readRealParameter(data, Parameter::G, G_);
317-
readRealParameter(data, Parameter::B, B_);
318-
readRealParameter(data, Parameter::Gmag, Gmag_);
319-
readRealParameter(data, Parameter::Bmag, Bmag_);
320-
readRealParameter(data, Parameter::tap, tap_);
321-
readRealParameter(data, Parameter::phase, phase_);
309+
const Model::ParameterReader reader(data, "Branch");
310+
311+
R_ = reader.readReal(Parameter::R).value_or(R_);
312+
X_ = reader.readReal(Parameter::X).value_or(X_);
313+
G_ = reader.readReal(Parameter::G).value_or(G_);
314+
B_ = reader.readReal(Parameter::B).value_or(B_);
315+
Gmag_ = reader.readReal(Parameter::Gmag).value_or(Gmag_);
316+
Bmag_ = reader.readReal(Parameter::Bmag).value_or(Bmag_);
317+
tap_ = reader.readReal(Parameter::tap).value_or(tap_);
318+
phase_ = reader.readReal(Parameter::phase).value_or(phase_);
322319

323320
if (data.buses.contains(Buses::bus1))
324321
{
@@ -331,35 +328,6 @@ namespace GridKit
331328
}
332329
}
333330

334-
template <typename scalar_type, typename index_type>
335-
bool Branch<scalar_type, index_type>::readRealParameter(const ModelDataT& data,
336-
typename ModelDataT::Parameters parameter,
337-
RealT& target)
338-
{
339-
if (!data.parameters.contains(parameter))
340-
{
341-
return false;
342-
}
343-
344-
const auto& value = data.parameters.at(parameter);
345-
if (const auto* real_value = std::get_if<RealT>(&value))
346-
{
347-
target = *real_value;
348-
return true;
349-
}
350-
351-
if (const auto* integer_value = std::get_if<IdxT>(&value))
352-
{
353-
target = static_cast<RealT>(*integer_value);
354-
return true;
355-
}
356-
357-
Log::error() << "Branch: parameter " << magic_enum::enum_name(parameter)
358-
<< " must be numeric\n";
359-
parameter_error_count_ += 1;
360-
return false;
361-
}
362-
363331
template <typename scalar_type, typename index_type>
364332
const Model::VariableMonitorBase* Branch<scalar_type, index_type>::getMonitor() const
365333
{

‎GridKit/Model/PhasorDynamics/Controller/REECB/Reecb.hpp‎

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -176,15 +176,7 @@ namespace GridKit
176176
bool buildInitialPoint(InitialPoint& point);
177177
void commitInitialPoint(const InitialPoint& point);
178178

179-
void loadRealParameter(const ModelDataT& data,
180-
ReecbParameters parameter,
181-
RealT& target,
182-
const char* name);
183-
void loadBooleanParameter(const ModelDataT& data,
184-
ReecbParameters parameter,
185-
bool& target,
186-
const char* name);
187-
bool floorTimeConstant(RealT& value, const char* name);
179+
bool floorTimeConstant(RealT& value);
188180
void initializeParameters(const ModelDataT& data);
189181
void initializeMonitor();
190182
void setDerivedParameters();
@@ -234,7 +226,6 @@ namespace GridKit
234226
RealT Imax_{1.3};
235227

236228
bool Vref0_given_{false};
237-
IdxT parameter_error_count_{0};
238229

239230
// Derived parameters
240231
RealT pf_on_{0};

0 commit comments

Comments
 (0)