Skip to content

Commit

Permalink
#216 Fix export par and dyd
Browse files Browse the repository at this point in the history
  • Loading branch information
Le Courtois Florent committed Dec 8, 2021
1 parent bb429ac commit 8333ca5
Show file tree
Hide file tree
Showing 28 changed files with 5,332 additions and 5,247 deletions.
6 changes: 4 additions & 2 deletions sources/Inputs/include/Node.h
Original file line number Diff line number Diff line change
Expand Up @@ -152,12 +152,13 @@ struct Shunt {
* @param voltageRegulationOn whether voltage regulation is enabled for the shunt
* @param bs the vector of the susceptance values for the shunt
*/
Shunt(const ShuntId& id, const BusId& busId, double targetV, bool voltageRegulationOn, const std::vector<double>& bs) :
Shunt(const ShuntId& id, const BusId& busId, double targetV, bool voltageRegulationOn, const std::vector<double>& bs, unsigned int sectionNumber) :
id(id),
busId(busId),
targetV(targetV),
voltageRegulationOn(voltageRegulationOn),
bSections(bs) {}
bSections(bs),
sectionNumber(sectionNumber) {}

/**
* @brief Equality operator
Expand All @@ -176,6 +177,7 @@ struct Shunt {
const double targetV; ///< the target V of the shunt
const bool voltageRegulationOn; ///< whether voltage regulation is enabled for the shunt
const std::vector<double> bSections; ///< the vector of the B values for the shunt
const unsigned int sectionNumber;
};

/// @brief Topological dangling line
Expand Down
3 changes: 2 additions & 1 deletion sources/Inputs/src/NetworkManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,8 @@ NetworkManager::buildTree() {
std::generate(bs.begin(), bs.end(), [&shunt, &i]() { return shunt->getB(i++); });
// We take into account even disconnected shunts as dynamic models may aim to connect them
(shuntsMap[shunt->getBusInterface()->getID()])
.push_back(std::move(Shunt(shunt->getID(), shunt->getBusInterface()->getID(), shunt->getTargetV(), shunt->isVoltageRegulationOn(), bs)));
.push_back(std::move(
Shunt(shunt->getID(), shunt->getBusInterface()->getID(), shunt->getTargetV(), shunt->isVoltageRegulationOn(), bs, shunt->getCurrentSection())));
}

auto vl = std::make_shared<VoltageLevel>(networkVL->getID());
Expand Down
5 changes: 5 additions & 0 deletions sources/Outputs/include/Dyd.h
Original file line number Diff line number Diff line change
Expand Up @@ -316,6 +316,9 @@ class Dyd {
*/
static boost::shared_ptr<dynamicdata::MacroConnect> writeSVarCMacroConnect(const inputs::StaticVarCompensator& svarc);

static void writeShuntConnect(const boost::shared_ptr<dynamicdata::DynamicModelsCollection>& dynamicModelsToConnect, const inputs::Shunt& shunt,
unsigned int index);

private:
static const std::unordered_map<algo::GeneratorDefinition::ModelType, std::string>
correspondence_lib_; ///< Correspondance between generator model type and library name in dyd file
Expand All @@ -332,6 +335,8 @@ class Dyd {
static const std::string macroStaticRefLoadName_; ///< Name for the static ref macro for loads
static const std::string signalNModelName_; ///< Name of the SignalN model
static const std::string modelSignalNQprefix_; ///< Prefix for SignalN models
static const std::string macroStaticRefShuntName_;
static const std::string macroConnectorShuntName_;

private:
DydDefinition def_; ///< Dyd file information
Expand Down
2 changes: 1 addition & 1 deletion sources/Outputs/include/Par.h
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ class Par {
static boost::shared_ptr<parameters::ParametersSet> writeShuntRegulation(const inputs::Shunt::BusId& busId,
const std::vector<std::reference_wrapper<const dfl::inputs::Shunt>>& shunts);

static boost::shared_ptr<parameters::ParametersSet> writeShuntBSection(const inputs::Shunt& shunt, unsigned int index, const std::string& basename,
static boost::shared_ptr<parameters::ParametersSet> writeShuntBSection(const inputs::Shunt& shunt, const std::string& basename,
const boost::filesystem::path& dirname);

/**
Expand Down
28 changes: 26 additions & 2 deletions sources/Outputs/src/Dyd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ const std::string Dyd::signalNModelName_("Model_Signal_N");
const std::string Dyd::macroStaticRefSignalNGeneratorName_("GeneratorStaticRef");
const std::string Dyd::macroStaticRefSVarCName_("StaticVarCompensatorStaticRef");
const std::string Dyd::macroConnectorSVarCName_("StaticVarCompensatorMacroConnector");
const std::string Dyd::macroStaticRefShuntName_("ShuntStaticRef");
const std::string Dyd::macroConnectorShuntName_("ShuntMacroConnector");
const std::string Dyd::macroStaticRefLoadName_("LoadRef");
const std::string Dyd::modelSignalNQprefix_("Model_Signal_NQ_");

Expand Down Expand Up @@ -156,8 +158,7 @@ Dyd::write() const {
for (auto it = shuntPair.second.begin(); it != shuntPair.second.end(); ++it) {
dynamicModelsToConnect->addModel(writeShuntBSections(*it, def_.basename));
unsigned int i = static_cast<unsigned int>(it - shuntPair.second.begin());
dynamicModelsToConnect->addConnect(it->get().id, "shunt_terminal", constants::networkModelName, "@" + it->get().id + "@@NODE@_ACPIN");
dynamicModelsToConnect->addConnect(modelId, "section_" + std::to_string(i) + "_value", it->get().id, "shunt_section_value");
writeShuntConnect(dynamicModelsToConnect, *it, i);
}
}

Expand Down Expand Up @@ -292,9 +293,12 @@ Dyd::writeShuntRegulation(const inputs::Shunt::BusId& busId, const std::string&
boost::shared_ptr<dynamicdata::BlackBoxModel>
Dyd::writeShuntBSections(const inputs::Shunt& shunt, const std::string& basename) {
auto model = dynamicdata::BlackBoxModelFactory::newModel(shunt.id);
model->setStaticId(shunt.id);
model->setLib("ShuntBWithSections");
model->setParFile(basename + ".par");
model->setParId(shunt.id);
model->addMacroStaticRef(dynamicdata::MacroStaticRefFactory::newMacroStaticRef(macroStaticRefShuntName_));

return model;
}

Expand Down Expand Up @@ -389,6 +393,11 @@ Dyd::writeMacroConnectors() {
connector->addConnect("SVarC_terminal", "@STATIC_ID@@NODE@_ACPIN");
ret.push_back(connector);

connector = dynamicdata::MacroConnectorFactory::newMacroConnector(macroConnectorShuntName_);
connector->addConnect("shunt_terminal", "@STATIC_ID@@NODE@_ACPIN");
connector->addConnect("shunt_switchOffSignal1", "@STATIC_ID@@NODE@_switchOff");
ret.push_back(connector);

return ret;
}

Expand All @@ -415,6 +424,12 @@ Dyd::writeMacroStaticRef() {
ref->addStaticRef("SVarC_modeHandling_mode_value", "regulatingMode");
ret.push_back(ref);

ref = dynamicdata::MacroStaticReferenceFactory::newMacroStaticReference(macroStaticRefShuntName_);
ref->addStaticRef("shunt_section_value", "currentSection");
ref->addStaticRef("shunt_QPu", "q");
ref->addStaticRef("shunt_state", "state");
ret.push_back(ref);

return ret;
}

Expand Down Expand Up @@ -471,5 +486,14 @@ Dyd::writeHvdcLineConnect(const boost::shared_ptr<dynamicdata::DynamicModelsColl
}
}

void
Dyd::writeShuntConnect(const boost::shared_ptr<dynamicdata::DynamicModelsCollection>& dynamicModelsToConnect, const inputs::Shunt& shunt, unsigned int index) {
auto modelId = constants::computeShuntRegulationId(shunt.busId);
dynamicModelsToConnect->addConnect(modelId, "section_" + std::to_string(index) + "_value", shunt.id, "shunt_section_value");

auto macroConnect = dynamicdata::MacroConnectFactory::newMacroConnect(macroConnectorShuntName_, shunt.id, constants::networkModelName);
dynamicModelsToConnect->addMacroConnect(macroConnect);
}

} // namespace outputs
} // namespace dfl
13 changes: 6 additions & 7 deletions sources/Outputs/src/Par.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -225,9 +225,8 @@ Par::write() const {
auto shuntsByIds = constants::computeFilteredShuntsByIds(def_.shuntsDefinitions);
for (const auto& shuntDefPair : shuntsByIds) {
dynamicModelsToConnect->addParametersSet(writeShuntRegulation(shuntDefPair.first, shuntDefPair.second));
for (auto it = shuntDefPair.second.begin(); it != shuntDefPair.second.end(); ++it) {
unsigned int index = it - shuntDefPair.second.begin();
dynamicModelsToConnect->addParametersSet(writeShuntBSection(*it, index, def_.basename, def_.dirname));
for (const auto& shunt : shuntDefPair.second) {
dynamicModelsToConnect->addParametersSet(writeShuntBSection(shunt, def_.basename, def_.dirname));
}
}

Expand Down Expand Up @@ -537,13 +536,13 @@ Par::writeShuntRegulation(const inputs::Shunt::BusId& busId, const std::vector<s
set->addParameter(helper::buildParameter("URef0Pu", shunts.front().get().targetV)); // All target V for shunts regulated on same bus are the same
for (auto it = shunts.begin(); it != shunts.end(); ++it) {
const auto& shunt = it->get();
auto index = static_cast<int>(it - shunts.begin());
unsigned int index = it - shunts.begin();
auto indexStr = std::to_string(index);

// self if B goes to negative direction : it is assumed that the b sections are build progressively, in only one direction and starting from 0
set->addParameter(helper::buildParameter("isSelf_" + indexStr, (*shunt.bSections.rbegin() < 0)));

set->addParameter(helper::buildParameter("section0_" + indexStr, index));
set->addParameter(helper::buildParameter("section0_" + indexStr, static_cast<int>(shunt.sectionNumber)));
set->addParameter(helper::buildParameter("sectionMin_" + indexStr, 0));

// we added one element when we created the bSections vector (see network manager)
Expand All @@ -556,13 +555,13 @@ Par::writeShuntRegulation(const inputs::Shunt::BusId& busId, const std::vector<s
}

boost::shared_ptr<parameters::ParametersSet>
Par::writeShuntBSection(const inputs::Shunt& shunt, unsigned int index, const std::string& basename, const boost::filesystem::path& dirname) {
Par::writeShuntBSection(const inputs::Shunt& shunt, const std::string& basename, const boost::filesystem::path& dirname) {
auto set = boost::shared_ptr<parameters::ParametersSet>(new parameters::ParametersSet(shunt.id));

auto tableFilename = dirname;
tableFilename.append(basename + constants::diagramDirectorySuffix).append(constants::diagramFilename(shunt.id));

set->addParameter(helper::buildParameter("shunt_Section0", static_cast<double>(index)));
set->addParameter(helper::buildParameter("shunt_Section0", static_cast<double>(shunt.sectionNumber)));
set->addParameter(helper::buildParameter("shunt_TableBPuName", constants::diagramTableBPu));
set->addParameter(helper::buildParameter("shunt_TableBPuFile", tableFilename.generic_string()));
set->addParameter(helper::buildParameter("shunt_Q0Pu", 0.));
Expand Down
44 changes: 22 additions & 22 deletions tests/algo/TestAlgo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -751,18 +751,18 @@ TEST(Shunts, base) {
auto vl = std::make_shared<dfl::inputs::VoltageLevel>("VL");
auto vl2 = std::make_shared<dfl::inputs::VoltageLevel>("VL2");
auto vl3 = std::make_shared<dfl::inputs::VoltageLevel>("VL3");
std::vector<dfl::inputs::Shunt> shunts1 = {dfl::inputs::Shunt("1.1", "1", 0., false, {0.})};
std::vector<dfl::inputs::Shunt> shunts2 = {dfl::inputs::Shunt("2.1", "2", 0., false, {0.}), dfl::inputs::Shunt("2.2", "2", 0., false, {0.})};
std::vector<dfl::inputs::Shunt> shunts3 = {dfl::inputs::Shunt("3.1", "3", 0., false, {0.}), dfl::inputs::Shunt("3.2", "3", 0., false, {0.}),
dfl::inputs::Shunt("3.3", "3", 0., false, {0.})};
std::vector<dfl::inputs::Shunt> shunts4 = {dfl::inputs::Shunt("4.1", "4", 0., false, {0.}), dfl::inputs::Shunt("4.2", "4", 0., false, {0.}),
dfl::inputs::Shunt("4.3", "4", 0., false, {0.}), dfl::inputs::Shunt("4.4", "4", 0., false, {0.})};
std::vector<dfl::inputs::Shunt> shunts5 = {dfl::inputs::Shunt("5.1", "5", 0., false, {0.}), dfl::inputs::Shunt("5.2", "5", 0., false, {0.}),
dfl::inputs::Shunt("5.3", "5", 0., false, {0.}), dfl::inputs::Shunt("5.4", "5", 0., false, {0.}),
dfl::inputs::Shunt("5.5", "5", 0., false, {0.})};
std::vector<dfl::inputs::Shunt> shunts6 = {dfl::inputs::Shunt("6.1", "6", 0., false, {0.}), dfl::inputs::Shunt("6.2", "6", 0., false, {0.}),
dfl::inputs::Shunt("6.3", "6", 0., false, {0.}), dfl::inputs::Shunt("6.4", "6", 0., false, {0.}),
dfl::inputs::Shunt("6.5", "6", 0., false, {0.}), dfl::inputs::Shunt("6.6", "6", 0., false, {0.})};
std::vector<dfl::inputs::Shunt> shunts1 = {dfl::inputs::Shunt("1.1", "1", 0., false, {0.}, 0)};
std::vector<dfl::inputs::Shunt> shunts2 = {dfl::inputs::Shunt("2.1", "2", 0., false, {0.}, 0), dfl::inputs::Shunt("2.2", "2", 0., false, {0.}, 0)};
std::vector<dfl::inputs::Shunt> shunts3 = {dfl::inputs::Shunt("3.1", "3", 0., false, {0.}, 0), dfl::inputs::Shunt("3.2", "3", 0., false, {0.}, 0),
dfl::inputs::Shunt("3.3", "3", 0., false, {0.}, 0)};
std::vector<dfl::inputs::Shunt> shunts4 = {dfl::inputs::Shunt("4.1", "4", 0., false, {0.}, 0), dfl::inputs::Shunt("4.2", "4", 0., false, {0.}, 0),
dfl::inputs::Shunt("4.3", "4", 0., false, {0.}, 0), dfl::inputs::Shunt("4.4", "4", 0., false, {0.}, 0)};
std::vector<dfl::inputs::Shunt> shunts5 = {dfl::inputs::Shunt("5.1", "5", 0., false, {0.}, 0), dfl::inputs::Shunt("5.2", "5", 0., false, {0.}, 0),
dfl::inputs::Shunt("5.3", "5", 0., false, {0.}, 0), dfl::inputs::Shunt("5.4", "5", 0., false, {0.}, 0),
dfl::inputs::Shunt("5.5", "5", 0., false, {0.}, 0)};
std::vector<dfl::inputs::Shunt> shunts6 = {dfl::inputs::Shunt("6.1", "6", 0., false, {0.}, 0), dfl::inputs::Shunt("6.2", "6", 0., false, {0.}, 0),
dfl::inputs::Shunt("6.3", "6", 0., false, {0.}, 0), dfl::inputs::Shunt("6.4", "6", 0., false, {0.}, 0),
dfl::inputs::Shunt("6.5", "6", 0., false, {0.}, 0), dfl::inputs::Shunt("6.6", "6", 0., false, {0.}, 0)};
std::vector<std::shared_ptr<dfl::inputs::Node>> nodes{
dfl::inputs::Node::build("0", vl3, 0.0, {}), dfl::inputs::Node::build("1", vl, 1.0, shunts1), dfl::inputs::Node::build("2", vl, 2.0, shunts2),
dfl::inputs::Node::build("3", vl, 3.0, shunts3), dfl::inputs::Node::build("4", vl2, 5.0, shunts4), dfl::inputs::Node::build("5", vl2, 5.0, shunts5),
Expand All @@ -787,15 +787,15 @@ TEST(Shunts, base) {
TEST(LinesByIds, base) {
auto vl = std::make_shared<dfl::inputs::VoltageLevel>("VL");
auto vl2 = std::make_shared<dfl::inputs::VoltageLevel>("VLb");
std::vector<dfl::inputs::Shunt> shunts1 = {dfl::inputs::Shunt("1.1", "1", 0., false, {0.})};
std::vector<dfl::inputs::Shunt> shunts2 = {dfl::inputs::Shunt("2.1", "2", 0., false, {0.}), dfl::inputs::Shunt("2.2", "2", 0., false, {0.})};
std::vector<dfl::inputs::Shunt> shunts3 = {dfl::inputs::Shunt("3.1", "3", 0., false, {0.}), dfl::inputs::Shunt("3.2", "3", 0., false, {0.}),
dfl::inputs::Shunt("3.3", "3", 0., false, {0.})};
std::vector<dfl::inputs::Shunt> shunts4 = {dfl::inputs::Shunt("4.1", "4", 0., false, {0.}), dfl::inputs::Shunt("4.2", "4", 0., false, {0.}),
dfl::inputs::Shunt("4.3", "4", 0., false, {0.}), dfl::inputs::Shunt("4.4", "4", 0., false, {0.})};
std::vector<dfl::inputs::Shunt> shunts5 = {dfl::inputs::Shunt("5.1", "5", 0., false, {0.}), dfl::inputs::Shunt("5.2", "5", 0., false, {0.}),
dfl::inputs::Shunt("5.3", "5", 0., false, {0.}), dfl::inputs::Shunt("5.4", "5", 0., false, {0.}),
dfl::inputs::Shunt("5.5", "5", 0., false, {0.})};
std::vector<dfl::inputs::Shunt> shunts1 = {dfl::inputs::Shunt("1.1", "1", 0., false, {0.}, 0)};
std::vector<dfl::inputs::Shunt> shunts2 = {dfl::inputs::Shunt("2.1", "2", 0., false, {0.}, 0), dfl::inputs::Shunt("2.2", "2", 0., false, {0.}, 0)};
std::vector<dfl::inputs::Shunt> shunts3 = {dfl::inputs::Shunt("3.1", "3", 0., false, {0.}, 0), dfl::inputs::Shunt("3.2", "3", 0., false, {0.}, 0),
dfl::inputs::Shunt("3.3", "3", 0., false, {0.}, 0)};
std::vector<dfl::inputs::Shunt> shunts4 = {dfl::inputs::Shunt("4.1", "4", 0., false, {0.}, 0), dfl::inputs::Shunt("4.2", "4", 0., false, {0.}, 0),
dfl::inputs::Shunt("4.3", "4", 0., false, {0.}, 0), dfl::inputs::Shunt("4.4", "4", 0., false, {0.}, 0)};
std::vector<dfl::inputs::Shunt> shunts5 = {dfl::inputs::Shunt("5.1", "5", 0., false, {0.}, 0), dfl::inputs::Shunt("5.2", "5", 0., false, {0.}, 0),
dfl::inputs::Shunt("5.3", "5", 0., false, {0.}, 0), dfl::inputs::Shunt("5.4", "5", 0., false, {0.}, 0),
dfl::inputs::Shunt("5.5", "5", 0., false, {0.}, 0)};
std::vector<std::shared_ptr<dfl::inputs::Node>> nodes{
dfl::inputs::Node::build("VL0", vl2, 0.0, {}), dfl::inputs::Node::build("VL1", vl, 1.0, shunts1), dfl::inputs::Node::build("VL2", vl, 2.0, shunts2),
dfl::inputs::Node::build("VL3", vl, 3.0, shunts3), dfl::inputs::Node::build("VL4", vl, 4.0, shunts4), dfl::inputs::Node::build("VL5", vl, 5.0, shunts5),
Expand Down Expand Up @@ -876,7 +876,7 @@ TEST(ContingencyValidation, base) {
auto vl = std::make_shared<dfl::inputs::VoltageLevel>("VL");
auto vl2 = std::make_shared<dfl::inputs::VoltageLevel>("VL2");
std::vector<std::shared_ptr<dfl::inputs::Node>> nodes{
dfl::inputs::Node::build("0", vl, 110.0, {dfl::inputs::Shunt("SHUNT", "0", 0., false, {0.})}),
dfl::inputs::Node::build("0", vl, 110.0, {dfl::inputs::Shunt("SHUNT", "0", 0., false, {0.}, 0)}),
dfl::inputs::Node::build("1", vl, 110.0, {}),
dfl::inputs::Node::build("2", vl, 110.0, {}),
dfl::inputs::Node::build("3", vl, 110.0, {}),
Expand Down
18 changes: 9 additions & 9 deletions tests/algo/TestAlgoDynModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,15 @@ TEST(TestAlgoDynModel, base) {

auto vl = std::make_shared<dfl::inputs::VoltageLevel>("VL");
auto vl2 = std::make_shared<dfl::inputs::VoltageLevel>("VLb");
std::vector<dfl::inputs::Shunt> shunts1 = {dfl::inputs::Shunt("1.1", "1", 0., false, {0.})};
std::vector<dfl::inputs::Shunt> shunts2 = {dfl::inputs::Shunt("2.1", "2", 0., false, {0.}), dfl::inputs::Shunt("2.2", "2", 0., false, {0.})};
std::vector<dfl::inputs::Shunt> shunts3 = {dfl::inputs::Shunt("3.1", "3", 0., false, {0.}), dfl::inputs::Shunt("3.2", "3", 0., false, {0.}),
dfl::inputs::Shunt("3.3", "3", 0., false, {0.})};
std::vector<dfl::inputs::Shunt> shunts4 = {dfl::inputs::Shunt("4.1", "4", 0., false, {0.}), dfl::inputs::Shunt("4.2", "4", 0., false, {0.}),
dfl::inputs::Shunt("4.3", "4", 0., false, {0.}), dfl::inputs::Shunt("4.4", "4", 0., false, {0.})};
std::vector<dfl::inputs::Shunt> shunts5 = {dfl::inputs::Shunt("5.1", "5", 0., false, {0.}), dfl::inputs::Shunt("5.2", "5", 0., false, {0.}),
dfl::inputs::Shunt("5.3", "5", 0., false, {0.}), dfl::inputs::Shunt("5.4", "5", 0., false, {0.}),
dfl::inputs::Shunt("5.5", "5", 0., false, {0.})};
std::vector<dfl::inputs::Shunt> shunts1 = {dfl::inputs::Shunt("1.1", "1", 0., false, {0.}, 0)};
std::vector<dfl::inputs::Shunt> shunts2 = {dfl::inputs::Shunt("2.1", "2", 0., false, {0.}, 0), dfl::inputs::Shunt("2.2", "2", 0., false, {0.}, 0)};
std::vector<dfl::inputs::Shunt> shunts3 = {dfl::inputs::Shunt("3.1", "3", 0., false, {0.}, 0), dfl::inputs::Shunt("3.2", "3", 0., false, {0.}, 0),
dfl::inputs::Shunt("3.3", "3", 0., false, {0.}, 0)};
std::vector<dfl::inputs::Shunt> shunts4 = {dfl::inputs::Shunt("4.1", "4", 0., false, {0.}, 0), dfl::inputs::Shunt("4.2", "4", 0., false, {0.}, 0),
dfl::inputs::Shunt("4.3", "4", 0., false, {0.}, 0), dfl::inputs::Shunt("4.4", "4", 0., false, {0.}, 0)};
std::vector<dfl::inputs::Shunt> shunts5 = {dfl::inputs::Shunt("5.1", "5", 0., false, {0.}, 0), dfl::inputs::Shunt("5.2", "5", 0., false, {0.}, 0),
dfl::inputs::Shunt("5.3", "5", 0., false, {0.}, 0), dfl::inputs::Shunt("5.4", "5", 0., false, {0.}, 0),
dfl::inputs::Shunt("5.5", "5", 0., false, {0.}, 0)};
std::vector<std::shared_ptr<dfl::inputs::Node>> nodes{
dfl::inputs::Node::build("VL0", vl2, 0.0, {}), dfl::inputs::Node::build("VL1", vl, 1.0, shunts1), dfl::inputs::Node::build("VL2", vl, 2.0, shunts2),
dfl::inputs::Node::build("VL3", vl, 3.0, shunts3), dfl::inputs::Node::build("VL4", vl, 4.0, shunts4), dfl::inputs::Node::build("VL5", vl, 5.0, shunts5),
Expand Down
Loading

0 comments on commit 8333ca5

Please sign in to comment.