Skip to content

Commit

Permalink
#428 [SA] when finalStates are dumped in contingencies, reorder them …
Browse files Browse the repository at this point in the history
…in a clean folder

Signed-off-by: Dimitri Baron <[email protected]>
  • Loading branch information
barondim authored and rosiereflo committed Nov 28, 2024
1 parent f2baec6 commit 2cb1736
Show file tree
Hide file tree
Showing 10 changed files with 749 additions and 2 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ nrt/data/IEEE14/MC*/timeLine
nrt/data/IEEE14/MC*/timeline
nrt/data/IEEE14/MC*/logs
nrt/data/IEEE14/MC*/constraints
nrt/data/IEEE14/MC*/finalState
nrt/data/IEEE14/MC*/result.zip
nrt/data/IEEE14/MC*/*.dyd
nrt/data/IEEE14/MC*/criteria*
Expand Down
14 changes: 14 additions & 0 deletions sources/Common/DYNSimulationResult.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ SimulationResult::SimulationResult(const SimulationResult& result):
timelineStream_ << result.timelineStream_.str();
constraintsStream_ << result.constraintsStream_.str();
lostEquipmentsStream_ << result.lostEquipmentsStream_.str();
outputIIDMStream_ << result.outputIIDMStream_.str();
}

SimulationResult&
Expand All @@ -63,6 +64,9 @@ SimulationResult::operator=(const SimulationResult& result) {
lostEquipmentsStream_.str("");
lostEquipmentsStream_.clear();
lostEquipmentsStream_ << result.lostEquipmentsStream_.str();
outputIIDMStream_.str("");
outputIIDMStream_.clear();
outputIIDMStream_ << result.outputIIDMStream_.str();
failingCriteria_ = result.failingCriteria_;
timelineFileExtension_ = result.timelineFileExtension_;
constraintsFileExtension_ = result.constraintsFileExtension_;
Expand Down Expand Up @@ -122,6 +126,16 @@ SimulationResult::getLostEquipementsStreamStr() const {
return lostEquipmentsStream_.str();
}

std::stringstream&
SimulationResult::getOutputIIDMStream() {
return outputIIDMStream_;
}

std::string
SimulationResult::getOutputIIDMStreamStr() const {
return outputIIDMStream_.str();
}

std::string
SimulationResult::getScenarioId() const {
return scenarioId_;
Expand Down
13 changes: 13 additions & 0 deletions sources/Common/DYNSimulationResult.h
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,18 @@ class SimulationResult {
*/
std::string getLostEquipementsStreamStr() const;

/**
* @brief getter of the final state IIDM stream associated to the scenario
* @return final state IIDM stream associated to the scenario
*/
std::stringstream& getOutputIIDMStream();

/**
* @brief getter of the final state IIDM associated to the scenario
* @return final state IIDM associated to the scenario
*/
std::string getOutputIIDMStreamStr() const;

/**
* @brief getter of the scenario id associated to the simulation
* @return the scenario id associated to the simulation
Expand Down Expand Up @@ -253,6 +265,7 @@ class SimulationResult {
std::stringstream timelineStream_; ///< stream for the timeline associated to the scenario
std::stringstream constraintsStream_; ///< stream for the constraints associated to the scenario
std::stringstream lostEquipmentsStream_; ///< stream for the lost equipments associated to the scenario
std::stringstream outputIIDMStream_; ///< stream for the output final state IIDM dump associated to the scenario
std::string scenarioId_; ///< id of the scenario
double variation_; ///< variation of the scenario (aka loadLevel when associated to a load increase)
bool success_; ///< @b true if the simulation reached its end, @b false otherwise
Expand Down
6 changes: 6 additions & 0 deletions sources/Common/test/TestBaseClasses.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ TEST(TestBaseClasses, testSimulationResult) {
sr.getConstraintsStream() << "Test Constraints";
sr.getTimelineStream() << "Test Timeline";
sr.getLostEquipementsStream() << "Test LostEquipements";
sr.getOutputIIDMStream() << "Test OutputIIDM";
sr.setConstraintsFileExtension("log");
sr.setTimelineFileExtension("log");
sr.setLostEquipmentsFileExtension("log");
Expand All @@ -133,6 +134,7 @@ TEST(TestBaseClasses, testSimulationResult) {
ASSERT_EQ(sr.getConstraintsStreamStr(), "Test Constraints");
ASSERT_EQ(sr.getTimelineStreamStr(), "Test Timeline");
ASSERT_EQ(sr.getLostEquipementsStreamStr(), "Test LostEquipements");
ASSERT_EQ(sr.getOutputIIDMStreamStr(), "Test OutputIIDM");
ASSERT_EQ(sr.getVariation(), 50);
ASSERT_EQ(sr.getConstraintsFileExtension(), "log");
ASSERT_EQ(sr.getTimelineFileExtension(), "log");
Expand All @@ -149,6 +151,7 @@ TEST(TestBaseClasses, testSimulationResult) {
ASSERT_EQ(srCopy.getConstraintsStreamStr(), "Test Constraints");
ASSERT_EQ(srCopy.getTimelineStreamStr(), "Test Timeline");
ASSERT_EQ(srCopy.getLostEquipementsStreamStr(), "Test LostEquipements");
ASSERT_EQ(srCopy.getOutputIIDMStreamStr(), "Test OutputIIDM");
ASSERT_EQ(srCopy.getVariation(), 50);
ASSERT_EQ(srCopy.getConstraintsFileExtension(), "log");
ASSERT_EQ(srCopy.getTimelineFileExtension(), "log");
Expand All @@ -173,6 +176,7 @@ TEST(TestBaseClasses, testSimulationResult) {
ASSERT_EQ(srCopy2.getConstraintsStreamStr(), "Test Constraints");
ASSERT_EQ(srCopy2.getTimelineStreamStr(), "Test Timeline");
ASSERT_EQ(srCopy2.getLostEquipementsStreamStr(), "Test LostEquipements");
ASSERT_EQ(srCopy2.getOutputIIDMStreamStr(), "Test OutputIIDM");
ASSERT_EQ(srCopy2.getVariation(), 50);
ASSERT_EQ(srCopy2.getConstraintsFileExtension(), "log");
ASSERT_EQ(srCopy2.getTimelineFileExtension(), "log");
Expand All @@ -189,6 +193,7 @@ TEST(TestBaseClasses, testSimulationResult) {
ASSERT_EQ(srMove.getConstraintsStreamStr(), "Test Constraints");
ASSERT_EQ(srMove.getTimelineStreamStr(), "Test Timeline");
ASSERT_EQ(srMove.getLostEquipementsStreamStr(), "Test LostEquipements");
ASSERT_EQ(srMove.getOutputIIDMStreamStr(), "Test OutputIIDM");
ASSERT_EQ(srMove.getVariation(), 50);
ASSERT_EQ(srMove.getConstraintsFileExtension(), "log");
ASSERT_EQ(srMove.getTimelineFileExtension(), "log");
Expand All @@ -206,6 +211,7 @@ TEST(TestBaseClasses, testSimulationResult) {
ASSERT_EQ(srMove2.getConstraintsStreamStr(), "Test Constraints");
ASSERT_EQ(srMove2.getTimelineStreamStr(), "Test Timeline");
ASSERT_EQ(srMove2.getLostEquipementsStreamStr(), "Test LostEquipements");
ASSERT_EQ(srMove2.getOutputIIDMStreamStr(), "Test OutputIIDM");
ASSERT_EQ(srMove2.getVariation(), 50);
ASSERT_EQ(srMove2.getConstraintsFileExtension(), "log");
ASSERT_EQ(srMove2.getTimelineFileExtension(), "log");
Expand Down
38 changes: 36 additions & 2 deletions sources/Launcher/DYNRobustnessAnalysisLauncher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ RobustnessAnalysisLauncher::simulate(const boost::shared_ptr<DYN::Simulation>& s
simulation->printTimeline(result.getTimelineStream());
simulation->printConstraints(result.getConstraintsStream());
simulation->printLostEquipments(result.getLostEquipementsStream());
simulation->dumpIIDMFile(result.getOutputIIDMStream());
return result.getStatus();
}

Expand Down Expand Up @@ -452,6 +453,12 @@ RobustnessAnalysisLauncher::storeOutputs(const SimulationResult& result, std::ma
mapData[lostEquipmentsName.str()] = result.getLostEquipementsStreamStr();
}

if (!result.getOutputIIDMStreamStr().empty()) {
std::stringstream outputIIDMName;
outputIIDMName << "finalState/outputIIDM_" << result.getUniqueScenarioId() << ".xml";
mapData[outputIIDMName.str()] = result.getOutputIIDMStreamStr();
}

if (!result.getLogPath().empty()) {
std::stringstream logName;
logName << "logs/log_" << result.getUniqueScenarioId() << ".log";
Expand Down Expand Up @@ -479,9 +486,13 @@ RobustnessAnalysisLauncher::writeOutputs(const SimulationResult& result) const {
std::string lostEquipmentsPath = createAbsolutePath("lostEquipments", workingDirectory_);
if (!is_directory(lostEquipmentsPath))
create_directory(lostEquipmentsPath);
std::string finalStatePath = createAbsolutePath("finalState", workingDirectory_);
if (!is_directory(finalStatePath))
create_directory(finalStatePath);
std::string logPath = createAbsolutePath("logs", workingDirectory_);
if (!is_directory(logPath))
create_directory(logPath);

if (!result.getConstraintsStreamStr().empty()) {
std::ofstream file;
std::string filepath = createAbsolutePath("constraints_" + result.getUniqueScenarioId() + "." + result.getConstraintsFileExtension(), constraintPath);
Expand Down Expand Up @@ -516,6 +527,17 @@ RobustnessAnalysisLauncher::writeOutputs(const SimulationResult& result) const {
file.close();
}

if (!result.getOutputIIDMStreamStr().empty()) {
std::string filepath = createAbsolutePath("outputIIDM_" + result.getUniqueScenarioId() + ".xml", finalStatePath);
std::ofstream file;
file.open(filepath);
if (!file.is_open()) {
throw DYNError(DYN::Error::API, KeyError_t::FileGenerationFailed, filepath);
}
file << result.getOutputIIDMStreamStr();
file.close();
}

if (!result.getLogPath().empty()) {
boost::filesystem::path from(result.getLogPath());
boost::filesystem::path to(createAbsolutePath("log_" + result.getUniqueScenarioId() + ".log", logPath));
Expand Down Expand Up @@ -615,15 +637,26 @@ RobustnessAnalysisLauncher::importResult(const std::string& id) const {

// lost equipments
auto& lostEquipments = ret.getLostEquipementsStream();
while (tmpStr.find("variation:") != 0) {
while (tmpStr.find("outputIIDM:") != 0) {
file >> tmpStr;
if (tmpStr.find("variation:") == 0) {
if (tmpStr.find("outputIIDM:") == 0) {
// case no lost equipments
break;
}
lostEquipments << tmpStr << std::endl;
}

// outputIIDM
auto& outputIIDM = ret.getOutputIIDMStream();
while (tmpStr.find("variation:") != 0) {
file >> tmpStr;
if (tmpStr.find("variation:") == 0) {
// case no output IIDM
break;
}
outputIIDM << tmpStr << std::endl;
}

// variation
double variation;
tmpStr = tmpStr.substr(tmpStr.find(delimiter)+1);
Expand Down Expand Up @@ -708,6 +741,7 @@ RobustnessAnalysisLauncher::exportResult(const SimulationResult& result) const {
file << "timeline:" << std::endl << result.getTimelineStreamStr() << std::endl;
file << "constraints:" << std::endl << result.getConstraintsStreamStr() << std::endl;
file << "lostEquipments:" << std::endl << result.getLostEquipementsStreamStr() << std::endl;
file << "outputIIDM:" << std::endl << result.getOutputIIDMStreamStr() << std::endl;
file << "variation:" <<result.getVariation() << std::endl;
file << "success:" << std::boolalpha << result.getSuccess() << std::endl;
file << "status:" << static_cast<unsigned int>(result.getStatus()) << std::endl;
Expand Down
3 changes: 3 additions & 0 deletions sources/Launcher/test/TestRobustnessAnalysisLauncher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,16 +66,19 @@ class MyLauncher : public RobustnessAnalysisLauncher {
ASSERT_FALSE(exists("res/constraints/constraints_MyScenario.xml"));
ASSERT_FALSE(exists("res/timeLine/timeline_MyScenario.log"));
ASSERT_FALSE(exists("res/timeLine/timeline_MyScenario.xml"));
ASSERT_FALSE(exists("res/finalState/outputIIDM_MyScenario.xml"));
ASSERT_TRUE(exists("res/logs/log_MyScenario.log"));

result_.getConstraintsStream() << "Test Constraints";
result_.getTimelineStream() << "Test Timeline";
result_.getOutputIIDMStream() << "Test final state";

writeResults();
ASSERT_TRUE(exists("res/MyOutputFile.zip"));
ASSERT_TRUE(exists("res/constraints/constraints_MyScenario.xml"));
ASSERT_TRUE(exists("res/timeLine/timeline_MyScenario.log"));
ASSERT_FALSE(exists("res/timeLine/timeline_MyScenario.xml"));
ASSERT_TRUE(exists("res/finalState/outputIIDM_MyScenario.xml"));
ASSERT_TRUE(exists("res/logs/log_MyScenario.log"));
}

Expand Down
119 changes: 119 additions & 0 deletions sources/Launcher/test/res/fic_DYD.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2024, RTE (http://www.rte-france.com)
See AUTHORS.txt
All rights reserved.
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, you can obtain one at http://mozilla.org/MPL/2.0/.
SPDX-License-Identifier: MPL-2.0
This file is part of Dynawo, an hybrid C++/Modelica open source time domain
simulation tool for power systems.
-->
<dyn:dynamicModelsArchitecture xmlns:dyn="http://www.rte-france.com/dynawo">
<dyn:blackBoxModel id="_LOAD___2_EC" lib="LoadAlphaBeta" parFile="fic_PAR.xml" parId="1" staticId="_LOAD___2_EC">
<dyn:staticRef var="load_PPu" staticVar="p"/>
<dyn:staticRef var="load_QPu" staticVar="q"/>
<dyn:staticRef var="load_state" staticVar="state"/>
</dyn:blackBoxModel>
<dyn:blackBoxModel id="_LOAD___3_EC" lib="LoadAlphaBeta" parFile="fic_PAR.xml" parId="1" staticId="_LOAD___3_EC">
<dyn:macroStaticRef id="LOAD"/>
</dyn:blackBoxModel>
<dyn:blackBoxModel id="_LOAD___4_EC" lib="LoadAlphaBeta" parFile="fic_PAR.xml" parId="1" staticId="_LOAD___4_EC">
<dyn:macroStaticRef id="LOAD"/>
</dyn:blackBoxModel>
<dyn:blackBoxModel id="_LOAD___5_EC" lib="LoadAlphaBeta" parFile="fic_PAR.xml" parId="1" staticId="_LOAD___5_EC">
<dyn:macroStaticRef id="LOAD"/>
</dyn:blackBoxModel>
<dyn:blackBoxModel id="_LOAD___6_EC" lib="LoadAlphaBeta" parFile="fic_PAR.xml" parId="1" staticId="_LOAD___6_EC">
<dyn:macroStaticRef id="LOAD"/>
</dyn:blackBoxModel>
<dyn:blackBoxModel id="_LOAD___9_EC" lib="LoadAlphaBeta" parFile="fic_PAR.xml" parId="1" staticId="_LOAD___9_EC">
<dyn:macroStaticRef id="LOAD"/>
</dyn:blackBoxModel>
<dyn:blackBoxModel id="_LOAD__10_EC" lib="LoadAlphaBeta" parFile="fic_PAR.xml" parId="1" staticId="_LOAD__10_EC">
<dyn:macroStaticRef id="LOAD"/>
</dyn:blackBoxModel>
<dyn:blackBoxModel id="_LOAD__11_EC" lib="LoadAlphaBeta" parFile="fic_PAR.xml" parId="1" staticId="_LOAD__11_EC">
<dyn:macroStaticRef id="LOAD"/>
</dyn:blackBoxModel>
<dyn:blackBoxModel id="_LOAD__12_EC" lib="LoadAlphaBeta" parFile="fic_PAR.xml" parId="1" staticId="_LOAD__12_EC">
<dyn:macroStaticRef id="LOAD"/>
</dyn:blackBoxModel>
<dyn:blackBoxModel id="_LOAD__13_EC" lib="LoadAlphaBeta" parFile="fic_PAR.xml" parId="1" staticId="_LOAD__13_EC">
<dyn:macroStaticRef id="LOAD"/>
</dyn:blackBoxModel>
<dyn:blackBoxModel id="_LOAD__14_EC" lib="LoadAlphaBeta" parFile="fic_PAR.xml" parId="1" staticId="_LOAD__14_EC">
<dyn:macroStaticRef id="LOAD"/>
</dyn:blackBoxModel>
<dyn:blackBoxModel id="GEN____1_SM" lib="GeneratorSynchronousFourWindingsProportionalRegulations" parFile="fic_PAR.xml" parId="2" staticId="_GEN____1_SM">
<dyn:staticRef var="generator_PGenPu" staticVar="p"/>
<dyn:staticRef var="generator_QGenPu" staticVar="q"/>
<dyn:staticRef var="generator_state" staticVar="state"/>
</dyn:blackBoxModel>
<dyn:blackBoxModel id="GEN____2_SM" lib="GeneratorSynchronousFourWindingsProportionalRegulations" parFile="fic_PAR.xml" parId="3" staticId="_GEN____2_SM">
<dyn:macroStaticRef id="GEN"/>
</dyn:blackBoxModel>
<dyn:blackBoxModel id="GEN____3_SM" lib="GeneratorSynchronousFourWindingsProportionalRegulations" parFile="fic_PAR.xml" parId="4" staticId="_GEN____3_SM">
<dyn:macroStaticRef id="GEN"/>
</dyn:blackBoxModel>
<dyn:blackBoxModel id="GEN____6_SM" lib="GeneratorSynchronousThreeWindingsProportionalRegulations" parFile="fic_PAR.xml" parId="5" staticId="_GEN____6_SM">
<dyn:macroStaticRef id="GEN"/>
</dyn:blackBoxModel>
<dyn:blackBoxModel id="GEN____8_SM" lib="GeneratorSynchronousThreeWindingsProportionalRegulations" parFile="fic_PAR.xml" parId="6" staticId="_GEN____8_SM">
<dyn:macroStaticRef id="GEN"/>
</dyn:blackBoxModel>
<dyn:blackBoxModel id="OMEGA_REF" lib="DYNModelOmegaRef" parFile="fic_PAR.xml" parId="7"/>
<dyn:connect id1="OMEGA_REF" var1="omega_grp_0" id2="GEN____1_SM" var2="generator_omegaPu"/>
<dyn:connect id1="OMEGA_REF" var1="omegaRef_grp_0" id2="GEN____1_SM" var2="generator_omegaRefPu"/>
<dyn:connect id1="OMEGA_REF" var1="numcc_node_0" id2="NETWORK" var2="@_GEN____1_SM@@NODE@_numcc"/>
<dyn:connect id1="OMEGA_REF" var1="running_grp_0" id2="GEN____1_SM" var2="generator_running"/>
<dyn:connect id1="OMEGA_REF" var1="omega_grp_1" id2="GEN____2_SM" var2="generator_omegaPu"/>
<dyn:connect id1="OMEGA_REF" var1="omegaRef_grp_1" id2="GEN____2_SM" var2="generator_omegaRefPu"/>
<dyn:connect id1="OMEGA_REF" var1="numcc_node_1" id2="NETWORK" var2="@_GEN____2_SM@@NODE@_numcc"/>
<dyn:connect id1="OMEGA_REF" var1="running_grp_1" id2="GEN____2_SM" var2="generator_running"/>
<dyn:connect id1="OMEGA_REF" var1="omega_grp_2" id2="GEN____3_SM" var2="generator_omegaPu"/>
<dyn:connect id1="OMEGA_REF" var1="omegaRef_grp_2" id2="GEN____3_SM" var2="generator_omegaRefPu"/>
<dyn:connect id1="OMEGA_REF" var1="numcc_node_2" id2="NETWORK" var2="@_GEN____3_SM@@NODE@_numcc"/>
<dyn:connect id1="OMEGA_REF" var1="running_grp_2" id2="GEN____3_SM" var2="generator_running"/>
<dyn:connect id1="OMEGA_REF" var1="omega_grp_3" id2="GEN____6_SM" var2="generator_omegaPu"/>
<dyn:connect id1="OMEGA_REF" var1="omegaRef_grp_3" id2="GEN____6_SM" var2="generator_omegaRefPu"/>
<dyn:connect id1="OMEGA_REF" var1="numcc_node_3" id2="NETWORK" var2="@_GEN____6_SM@@NODE@_numcc"/>
<dyn:connect id1="OMEGA_REF" var1="running_grp_3" id2="GEN____6_SM" var2="generator_running"/>
<dyn:connect id1="OMEGA_REF" var1="omega_grp_4" id2="GEN____8_SM" var2="generator_omegaPu"/>
<dyn:connect id1="OMEGA_REF" var1="omegaRef_grp_4" id2="GEN____8_SM" var2="generator_omegaRefPu"/>
<dyn:connect id1="OMEGA_REF" var1="numcc_node_4" id2="NETWORK" var2="@_GEN____8_SM@@NODE@_numcc"/>
<dyn:connect id1="OMEGA_REF" var1="running_grp_4" id2="GEN____8_SM" var2="generator_running"/>
<dyn:connect id1="_LOAD__10_EC" var1="load_terminal" id2="NETWORK" var2="_BUS___10_TN_ACPIN"/>
<dyn:connect id1="_LOAD__11_EC" var1="load_terminal" id2="NETWORK" var2="_BUS___11_TN_ACPIN"/>
<dyn:connect id1="_LOAD__12_EC" var1="load_terminal" id2="NETWORK" var2="_BUS___12_TN_ACPIN"/>
<dyn:connect id1="_LOAD__13_EC" var1="load_terminal" id2="NETWORK" var2="_BUS___13_TN_ACPIN"/>
<dyn:connect id1="_LOAD__14_EC" var1="load_terminal" id2="NETWORK" var2="_BUS___14_TN_ACPIN"/>
<dyn:connect id1="_LOAD___2_EC" var1="load_terminal" id2="NETWORK" var2="_BUS____2_TN_ACPIN"/>
<dyn:connect id1="_LOAD___3_EC" var1="load_terminal" id2="NETWORK" var2="_BUS____3_TN_ACPIN"/>
<dyn:connect id1="_LOAD___4_EC" var1="load_terminal" id2="NETWORK" var2="_BUS____4_TN_ACPIN"/>
<dyn:connect id1="_LOAD___5_EC" var1="load_terminal" id2="NETWORK" var2="_BUS____5_TN_ACPIN"/>
<dyn:connect id1="_LOAD___6_EC" var1="load_terminal" id2="NETWORK" var2="_BUS____6_TN_ACPIN"/>
<dyn:connect id1="_LOAD___9_EC" var1="load_terminal" id2="NETWORK" var2="_BUS____9_TN_ACPIN"/>
<dyn:connect id1="GEN____1_SM" var1="generator_terminal" id2="NETWORK" var2="@_GEN____1_SM@@NODE@_ACPIN"/>
<dyn:connect id1="GEN____1_SM" var1="generator_switchOffSignal1" id2="NETWORK" var2="@_GEN____1_SM@@NODE@_switchOff"/>
<dyn:connect id1="GEN____2_SM" var1="generator_terminal" id2="NETWORK" var2="@_GEN____2_SM@@NODE@_ACPIN"/>
<dyn:connect id1="GEN____2_SM" var1="generator_switchOffSignal1" id2="NETWORK" var2="@_GEN____2_SM@@NODE@_switchOff"/>
<dyn:connect id1="GEN____3_SM" var1="generator_terminal" id2="NETWORK" var2="@_GEN____3_SM@@NODE@_ACPIN"/>
<dyn:connect id1="GEN____3_SM" var1="generator_switchOffSignal1" id2="NETWORK" var2="@_GEN____3_SM@@NODE@_switchOff"/>
<dyn:connect id1="GEN____6_SM" var1="generator_terminal" id2="NETWORK" var2="@_GEN____6_SM@@NODE@_ACPIN"/>
<dyn:connect id1="GEN____6_SM" var1="generator_switchOffSignal1" id2="NETWORK" var2="@_GEN____6_SM@@NODE@_switchOff"/>
<dyn:connect id1="GEN____8_SM" var1="generator_terminal" id2="NETWORK" var2="@_GEN____8_SM@@NODE@_ACPIN"/>
<dyn:connect id1="GEN____8_SM" var1="generator_switchOffSignal1" id2="NETWORK" var2="@_GEN____8_SM@@NODE@_switchOff"/>
<dyn:macroStaticReference id="GEN">
<dyn:staticRef var="generator_PGenPu" staticVar="p"/>
<dyn:staticRef var="generator_QGenPu" staticVar="q"/>
<dyn:staticRef var="generator_state" staticVar="state"/>
</dyn:macroStaticReference>
<dyn:macroStaticReference id="LOAD">
<dyn:staticRef var="load_PPu" staticVar="p"/>
<dyn:staticRef var="load_QPu" staticVar="q"/>
<dyn:staticRef var="load_state" staticVar="state"/>
</dyn:macroStaticReference>
</dyn:dynamicModelsArchitecture>
Loading

0 comments on commit 2cb1736

Please sign in to comment.