Skip to content

Commit

Permalink
#3288 Update status of bus at initialization.
Browse files Browse the repository at this point in the history
Signed-off-by: Gautier Bureau <gautier.bureau@gmail.com>
  • Loading branch information
gautierbureau committed Jun 20, 2024
1 parent f3a4524 commit c5e10bc
Show file tree
Hide file tree
Showing 2 changed files with 110 additions and 5 deletions.
111 changes: 106 additions & 5 deletions dynawo/sources/Modeler/DataInterface/test/TestDataInterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
*
*/

#include <powsybl/iidm/BusbarSection.hpp>

#include "gtest_dynawo.h"

#include "DYNCommon.h"
Expand Down Expand Up @@ -260,6 +262,60 @@ initIIDMNetwork() {
.setR(14.0)
.add();

auto& vl4 = substation.newVoltageLevel()
.setId("VL4")
.setNominalV(360.)
.setTopologyKind(powsybl::iidm::TopologyKind::NODE_BREAKER)
.add();

auto& vl4Bbs = vl4.getNodeBreakerView().newBusbarSection()
.setId("VL4_BBS")
.setNode(0)
.add();

vl4.getNodeBreakerView().newSwitch()
.setId("VL4_SW01")
.setKind(powsybl::iidm::SwitchKind::BREAKER)
.setOpen(false)
.setNode1(0)
.setNode2(1)
.setRetained(true)
.add();

vl4.getNodeBreakerView().newSwitch()
.setId("VL4_SW02")
.setKind(powsybl::iidm::SwitchKind::BREAKER)
.setOpen(false)
.setNode1(0)
.setNode2(2)
.setRetained(true)
.add();

vl4.newLoad()
.setId("VL4_LOAD")
.setNode(1)
.setP0(5000.)
.setQ0(4000.)
.add();

network->newLine()
.setId("LINE_VL1_VL4")
.setVoltageLevel1("VL1")
.setBus1("VL1_BUS1")
.setVoltageLevel2("VL4")
.setNode2(2)
.setR(3.0)
.setX(33.33)
.setG1(1.0)
.setB1(0.2)
.setG2(2.0)
.setB2(0.4)
.add();

vl4Bbs.getTerminal().getBusView().getBus().get()
.setV(360.)
.setAngle(0.);

return network;
}

Expand All @@ -268,7 +324,16 @@ TEST(DataInterfaceTest, testLostEquipments) {

shared_ptr<DataInterfaceIIDM> data(new DataInterfaceIIDM(network));
data->initFromIIDM();
auto& switchVl3Iidm = network->getSwitch("VL3_SW01");
ASSERT_FALSE(switchVl3Iidm.isOpen());
auto& load3Iidm = network->getLoad("VL3_LOAD");
ASSERT_TRUE(load3Iidm.getTerminal().isConnected());
auto& bbsVl3 = network->getBusbarSection("VL3_BBS");
ASSERT_TRUE(bbsVl3.getTerminal().isConnected());
exportStateVariables(data);
ASSERT_TRUE(switchVl3Iidm.isOpen());
ASSERT_FALSE(load3Iidm.getTerminal().isConnected());
ASSERT_FALSE(bbsVl3.getTerminal().isConnected());

shared_ptr<SwitchInterface> sw = data->getNetwork()->getVoltageLevels()[0]->getSwitches()[0];
shared_ptr<LoadInterface> load = data->getNetwork()->getVoltageLevels()[0]->getLoads()[0];
Expand Down Expand Up @@ -446,22 +511,44 @@ TEST(DataInterfaceTest, testLostEquipments) {
ASSERT_EQ(mapIdToType[tfo->getID()], tfo->getTypeAsString());

///
// NODE_BREAKER case
// NODE_BREAKER case 1
///

shared_ptr<SwitchInterface> swNBVL4 = data->getNetwork()->getVoltageLevels()[3]->getSwitches()[0];
shared_ptr<LoadInterface> loadNBVL4 = data->getNetwork()->getVoltageLevels()[3]->getLoads()[0];
connectedComponents = data->findConnectedComponents();
swNBVL4->setValue(SWITCH_STATE, OPEN);
data->exportStateVariablesNoReadFromModel();
lostEquipments = data->findLostEquipments(connectedComponents);
mapIdToType.clear();
for (itLostEquipment = lostEquipments->cbegin(); itLostEquipment != lostEquipments->cend(); ++itLostEquipment) {
mapIdToType[(*itLostEquipment)->getId()] = (*itLostEquipment)->getType();
}
ASSERT_EQ(mapIdToType.size(), 2);
ASSERT_EQ(mapIdToType[swNBVL4->getID()], swNBVL4->getTypeAsString());
ASSERT_EQ(mapIdToType[loadNBVL4->getID()], loadNBVL4->getTypeAsString());

///
// NODE_BREAKER case 2
// This VL is isolated so it is switchedOff at initialization so no lost component
///

shared_ptr<SwitchInterface> swNB = data->getNetwork()->getVoltageLevels()[2]->getSwitches()[0];
shared_ptr<LoadInterface> loadNB = data->getNetwork()->getVoltageLevels()[2]->getLoads()[0];
shared_ptr<BusInterface> bbsVL3 = data->getNetwork()->getVoltageLevels()[2]->getBuses()[0];
shared_ptr<BusInterface> loadCalculatedBusVL3 = data->getNetwork()->getVoltageLevels()[2]->getBuses()[1];
connectedComponents = data->findConnectedComponents();
swNB->setValue(SWITCH_STATE, OPEN);
ASSERT_TRUE(swNB->isOpen());
ASSERT_FALSE(loadNB->isConnected());
ASSERT_FALSE(bbsVL3->isConnected());
ASSERT_FALSE(loadCalculatedBusVL3->isConnected());
data->exportStateVariablesNoReadFromModel();
lostEquipments = data->findLostEquipments(connectedComponents);
mapIdToType.clear();
for (itLostEquipment = lostEquipments->cbegin(); itLostEquipment != lostEquipments->cend(); ++itLostEquipment) {
mapIdToType[(*itLostEquipment)->getId()] = (*itLostEquipment)->getType();
}
ASSERT_EQ(mapIdToType.size(), 2);
ASSERT_EQ(mapIdToType[swNB->getID()], swNB->getTypeAsString());
ASSERT_EQ(mapIdToType[loadNB->getID()], loadNB->getTypeAsString());
ASSERT_EQ(mapIdToType.size(), 0);
}

TEST(DataInterfaceTest, testInstatiateNetwork) {
Expand Down Expand Up @@ -502,6 +589,20 @@ TEST(DataInterfaceTest, testInstatiateNetwork) {
data->hasDynamicModel("2WT_VL1_VL2");
ASSERT_TRUE(data->instantiateNetwork());
data->hasDynamicModel("HVDC1");
ASSERT_TRUE(data->instantiateNetwork());
data->hasDynamicModel("calculatedBus_VL4_0");
ASSERT_TRUE(data->instantiateNetwork());
data->hasDynamicModel("calculatedBus_VL4_1");
ASSERT_TRUE(data->instantiateNetwork());
data->hasDynamicModel("calculatedBus_VL4_2");
ASSERT_TRUE(data->instantiateNetwork());
data->hasDynamicModel("VL4_LOAD");
ASSERT_TRUE(data->instantiateNetwork());
data->hasDynamicModel("LINE_VL1_VL4");
ASSERT_TRUE(data->instantiateNetwork());
data->hasDynamicModel("VL4_SW01");
ASSERT_TRUE(data->instantiateNetwork());
data->hasDynamicModel("VL4_SW02");
ASSERT_FALSE(data->instantiateNetwork());
}

Expand Down
4 changes: 4 additions & 0 deletions dynawo/sources/Models/CPP/ModelNetwork/DYNModelBus.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -551,17 +551,21 @@ ModelBus::getY0() {
if (getSwitchOff()) {
y_[urNum_] = 0.0;
y_[uiNum_] = 0.0;
connectionState_ = OPEN;
} else {
y_[urNum_] = ur0_;
y_[uiNum_] = ui0_;
connectionState_ = CLOSED;
}
} else {
if (getSwitchOff()) {
y_[urNum_] = 0.0;
y_[uiNum_] = 0.0;
connectionState_ = OPEN;
} else {
y_[urNum_] = ur0_;
y_[uiNum_] = ui0_;
connectionState_ = CLOSED;
}

yp_[urNum_] = 0.0;
Expand Down

0 comments on commit c5e10bc

Please sign in to comment.