Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
/**
* Copyright (c) 2025, RTE (http://www.rte-france.com)
* 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
*/
package com.powsybl.cgmes.conversion.test;

import com.powsybl.iidm.network.Load;
import com.powsybl.iidm.network.Network;
import org.junit.jupiter.api.Test;

import java.util.Properties;

import static com.powsybl.cgmes.conversion.test.ConversionUtil.readCgmesResources;
import static org.junit.jupiter.api.Assertions.*;

/**
* @author Luma Zamarreño {@literal <zamarrenolm at aia.es>}
* @author José Antonio Marqués {@literal <marquesja at aia.es>}
*/
class UpdateUseCasesTest {

private static final String INCREMENTAL_DIR = "/update/use_cases/incremental_update_using_one_variant/";
private static final String COMPLETE_DIR = "/update/use_cases/complete_update_using_different_variants/";

@Test
void incrementalUpdateUsingOneVariantTest() {
Network network = readCgmesResources(INCREMENTAL_DIR, "incremental_update_EQ.xml", "incremental_update_SSH_00.xml");
assertEquals(3, network.getLoadCount());
assertIncrementalEq(network);
assertIncrementalSsh(network, 10.1, 5.1, 10.2, 5.2, 10.3, 5.3);

Properties properties = new Properties();
properties.put("iidm.import.cgmes.use-previous-values-during-update", "true");
readCgmesResources(network, properties, INCREMENTAL_DIR, "incremental_update_SSH_08.xml");
assertIncrementalSsh(network, 20.1, 10.1, 10.2, 5.2, 10.3, 5.3);

readCgmesResources(network, properties, INCREMENTAL_DIR, "incremental_update_SSH_16.xml");
assertIncrementalSsh(network, 20.1, 10.1, 20.2, 10.2, 10.3, 5.3);

readCgmesResources(network, properties, INCREMENTAL_DIR, "incremental_update_SSH_24.xml");
assertIncrementalSsh(network, 20.1, 10.1, 20.2, 10.2, 20.3, 10.3);
}

private static void assertIncrementalEq(Network network) {
assertNotNull(network.getLoad("EnergyConsumer_1"));
assertNotNull(network.getLoad("EnergyConsumer_2"));
assertNotNull(network.getLoad("EnergyConsumer_3"));
}

void assertIncrementalSsh(Network network, double p1, double q1, double p2, double q2, double p3, double q3) {
assertSsh(network.getLoad("EnergyConsumer_1"), p1, q1);
assertSsh(network.getLoad("EnergyConsumer_2"), p2, q2);
assertSsh(network.getLoad("EnergyConsumer_3"), p3, q3);
}

private static void assertSsh(Load load, double p0, double q0) {
assertNotNull(load);
assertEquals(p0, load.getP0());
assertEquals(q0, load.getQ0());
}

@Test
void completeUpdateUsingDifferentVariantsTest() {
Network network = readCgmesResources(COMPLETE_DIR, "complete_update_EQ.xml", "complete_update_SSH_00.xml");
assertEquals(3, network.getLoadCount());
assertCompleteEq(network);

network.getVariantManager().cloneVariant(network.getVariantManager().getWorkingVariantId(), "update-08");
network.getVariantManager().setWorkingVariant("update-08");
readCgmesResources(network, COMPLETE_DIR, "complete_update_SSH_08.xml");

network.getVariantManager().cloneVariant(network.getVariantManager().getWorkingVariantId(), "update-16");
network.getVariantManager().setWorkingVariant("update-16");
readCgmesResources(network, COMPLETE_DIR, "complete_update_SSH_16.xml");

network.getVariantManager().cloneVariant(network.getVariantManager().getWorkingVariantId(), "update-24");
network.getVariantManager().setWorkingVariant("update-24");
readCgmesResources(network, COMPLETE_DIR, "complete_update_SSH_24.xml");

network.getVariantManager().setWorkingVariant("InitialState");
assertCompleteSsh(network, 20.1, 10.1, 20.2, 10.2, 20.3, 10.3);

network.getVariantManager().setWorkingVariant("update-08");
assertCompleteSsh(network, 8.1, 4.1, 8.2, 4.2, 8.3, 4.3);

network.getVariantManager().setWorkingVariant("update-16");
assertCompleteSsh(network, 16.1, 8.1, 16.2, 8.2, 16.3, 8.3);

network.getVariantManager().setWorkingVariant("update-24");
assertCompleteSsh(network, 24.1, 12.1, 24.2, 12.2, 24.3, 12.3);
}

private static void assertCompleteEq(Network network) {
assertNotNull(network.getLoad("EnergySource_1"));
assertNotNull(network.getLoad("EnergySource_2"));
assertNotNull(network.getLoad("EnergySource_3"));
}

void assertCompleteSsh(Network network, double p1, double q1, double p2, double q2, double p3, double q3) {
assertSsh(network.getLoad("EnergySource_1"), p1, q1);
assertSsh(network.getLoad("EnergySource_2"), p2, q2);
assertSsh(network.getLoad("EnergySource_3"), p3, q3);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<rdf:RDF xmlns:cim="http://iec.ch/TC57/CIM100#" xmlns:md="http://iec.ch/TC57/61970-552/ModelDescription/1#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:eu="http://iec.ch/TC57/CIM100-European#">
<md:FullModel rdf:about="urn:uuid:d400c631-75a0-4c30-8aed-832b0d282e73">
<md:Model.created>2024-02-21T11:00:00Z</md:Model.created>
<md:Model.scenarioTime>2024-02-21T11:00:00Z</md:Model.scenarioTime>
<md:Model.version>1</md:Model.version>
<md:Model.description>Complete update using different variants</md:Model.description>
<md:Model.modelingAuthoritySet>https://www.powsybl.org/</md:Model.modelingAuthoritySet>
<md:Model.profile>http://iec.ch/TC57/ns/CIM/CoreEquipment-EU/3.0</md:Model.profile>
</md:FullModel>

<cim:GeographicalRegion rdf:ID="_GeographicalRegionTest">
<cim:IdentifiedObject.name>GeographicalRegionTest</cim:IdentifiedObject.name>
</cim:GeographicalRegion>
<cim:SubGeographicalRegion rdf:ID="_SubGeographicalRegionTest">
<cim:IdentifiedObject.name>SubGeographicalRegionTest</cim:IdentifiedObject.name>
<cim:SubGeographicalRegion.Region rdf:resource="#_GeographicalRegionTest" />
</cim:SubGeographicalRegion>
<cim:Substation rdf:ID="_Substation1">
<cim:IdentifiedObject.name>Substation1</cim:IdentifiedObject.name>
<cim:Substation.Region rdf:resource="#_SubGeographicalRegionTest" />
</cim:Substation>
<cim:BaseVoltage rdf:ID="_BaseVoltage400">
<cim:IdentifiedObject.name>400.0 kV</cim:IdentifiedObject.name>
<cim:BaseVoltage.nominalVoltage>400.0</cim:BaseVoltage.nominalVoltage>
</cim:BaseVoltage>
<cim:VoltageLevel rdf:ID="_VoltageLevel1">
<cim:IdentifiedObject.name>VoltageLevel1</cim:IdentifiedObject.name>
<cim:VoltageLevel.Substation rdf:resource="#_Substation1"/>
<cim:VoltageLevel.BaseVoltage rdf:resource="#_BaseVoltage400"/>
</cim:VoltageLevel>
<cim:ConnectivityNode rdf:ID="_ConnectivityNode1">
<cim:IdentifiedObject.name>Connectivity Node 1</cim:IdentifiedObject.name>
<cim:ConnectivityNode.ConnectivityNodeContainer rdf:resource="#_VoltageLevel1" />
</cim:ConnectivityNode>

<cim:EnergySource rdf:ID="_EnergySource_1">
<cim:IdentifiedObject.name>EnergySource_1</cim:IdentifiedObject.name>
<cim:Equipment.EquipmentContainer rdf:resource="#_VoltageLevel1"/>
</cim:EnergySource>
<cim:Terminal rdf:ID="_EnergySource_1_T">
<cim:IdentifiedObject.name>EnergySource_T</cim:IdentifiedObject.name>
<cim:Terminal.ConductingEquipment rdf:resource="#_EnergySource_1" />
<cim:Terminal.ConnectivityNode rdf:resource="#_ConnectivityNode1" />
</cim:Terminal>

<cim:EnergySource rdf:ID="_EnergySource_2">
<cim:IdentifiedObject.name>EnergySource_2</cim:IdentifiedObject.name>
<cim:Equipment.EquipmentContainer rdf:resource="#_VoltageLevel1"/>
</cim:EnergySource>
<cim:Terminal rdf:ID="_EnergySource_2_T">
<cim:IdentifiedObject.name>EnergySource_T</cim:IdentifiedObject.name>
<cim:Terminal.ConductingEquipment rdf:resource="#_EnergySource_2" />
<cim:Terminal.ConnectivityNode rdf:resource="#_ConnectivityNode1" />
</cim:Terminal>

<cim:EnergySource rdf:ID="_EnergySource_3">
<cim:IdentifiedObject.name>EnergySource_3</cim:IdentifiedObject.name>
<cim:Equipment.EquipmentContainer rdf:resource="#_VoltageLevel1"/>
</cim:EnergySource>
<cim:Terminal rdf:ID="_EnergySource_3_T">
<cim:IdentifiedObject.name>EnergySource_T</cim:IdentifiedObject.name>
<cim:Terminal.ConductingEquipment rdf:resource="#_EnergySource_3" />
<cim:Terminal.ConnectivityNode rdf:resource="#_ConnectivityNode1" />
</cim:Terminal>

</rdf:RDF>
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<rdf:RDF xmlns:cim="http://iec.ch/TC57/CIM100#" xmlns:md="http://iec.ch/TC57/61970-552/ModelDescription/1#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:eu="http://iec.ch/TC57/CIM100-European#">
<md:FullModel rdf:about="urn:uuid:d400c631-75a0-4c30-8aed-832b0d282e74">
<md:Model.created>2024-02-21T11:00:00Z</md:Model.created>
<md:Model.scenarioTime>2024-02-21T11:00:00Z</md:Model.scenarioTime>
<md:Model.version>1</md:Model.version>
<md:Model.description>Complete update using different variants</md:Model.description>
<md:Model.modelingAuthoritySet>https://www.powsybl.org/</md:Model.modelingAuthoritySet>
<md:Model.profile>http://iec.ch/TC57/ns/CIM/SteadyStateHypothesis-EU/3.0</md:Model.profile>
</md:FullModel>

<cim:EnergySource rdf:about="#_EnergySource_1">
<cim:EnergySource.activePower>20.1</cim:EnergySource.activePower>
<cim:EnergySource.reactivePower>10.1</cim:EnergySource.reactivePower>
</cim:EnergySource>
<cim:Terminal rdf:about="#_EnergySource_1_T">
<cim:ACDCTerminal.connected>true</cim:ACDCTerminal.connected>
</cim:Terminal>

<cim:EnergySource rdf:about="#_EnergySource_2">
<cim:EnergySource.activePower>20.2</cim:EnergySource.activePower>
<cim:EnergySource.reactivePower>10.2</cim:EnergySource.reactivePower>
</cim:EnergySource>
<cim:Terminal rdf:about="#_EnergySource_2_T">
<cim:ACDCTerminal.connected>true</cim:ACDCTerminal.connected>
</cim:Terminal>

<cim:EnergySource rdf:about="#_EnergySource_3">
<cim:EnergySource.activePower>20.3</cim:EnergySource.activePower>
<cim:EnergySource.reactivePower>10.3</cim:EnergySource.reactivePower>
</cim:EnergySource>
<cim:Terminal rdf:about="#_EnergySource_3_T">
<cim:ACDCTerminal.connected>true</cim:ACDCTerminal.connected>
</cim:Terminal>

</rdf:RDF>
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<rdf:RDF xmlns:cim="http://iec.ch/TC57/CIM100#" xmlns:md="http://iec.ch/TC57/61970-552/ModelDescription/1#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:eu="http://iec.ch/TC57/CIM100-European#">
<md:FullModel rdf:about="urn:uuid:d400c631-75a0-4c30-8aed-832b0d282e74">
<md:Model.created>2024-02-21T11:00:00Z</md:Model.created>
<md:Model.scenarioTime>2024-02-21T11:00:00Z</md:Model.scenarioTime>
<md:Model.version>1</md:Model.version>
<md:Model.description>Complete update using different variants</md:Model.description>
<md:Model.modelingAuthoritySet>https://www.powsybl.org/</md:Model.modelingAuthoritySet>
<md:Model.profile>http://iec.ch/TC57/ns/CIM/SteadyStateHypothesis-EU/3.0</md:Model.profile>
</md:FullModel>

<cim:EnergySource rdf:about="#_EnergySource_1">
<cim:EnergySource.activePower>8.1</cim:EnergySource.activePower>
<cim:EnergySource.reactivePower>4.1</cim:EnergySource.reactivePower>
</cim:EnergySource>
<cim:Terminal rdf:about="#_EnergySource_1_T">
<cim:ACDCTerminal.connected>true</cim:ACDCTerminal.connected>
</cim:Terminal>

<cim:EnergySource rdf:about="#_EnergySource_2">
<cim:EnergySource.activePower>8.2</cim:EnergySource.activePower>
<cim:EnergySource.reactivePower>4.2</cim:EnergySource.reactivePower>
</cim:EnergySource>
<cim:Terminal rdf:about="#_EnergySource_2_T">
<cim:ACDCTerminal.connected>true</cim:ACDCTerminal.connected>
</cim:Terminal>

<cim:EnergySource rdf:about="#_EnergySource_3">
<cim:EnergySource.activePower>8.3</cim:EnergySource.activePower>
<cim:EnergySource.reactivePower>4.3</cim:EnergySource.reactivePower>
</cim:EnergySource>
<cim:Terminal rdf:about="#_EnergySource_3_T">
<cim:ACDCTerminal.connected>true</cim:ACDCTerminal.connected>
</cim:Terminal>

</rdf:RDF>
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<rdf:RDF xmlns:cim="http://iec.ch/TC57/CIM100#" xmlns:md="http://iec.ch/TC57/61970-552/ModelDescription/1#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:eu="http://iec.ch/TC57/CIM100-European#">
<md:FullModel rdf:about="urn:uuid:d400c631-75a0-4c30-8aed-832b0d282e74">
<md:Model.created>2024-02-21T11:00:00Z</md:Model.created>
<md:Model.scenarioTime>2024-02-21T11:00:00Z</md:Model.scenarioTime>
<md:Model.version>1</md:Model.version>
<md:Model.description>Complete update using different variants</md:Model.description>
<md:Model.modelingAuthoritySet>https://www.powsybl.org/</md:Model.modelingAuthoritySet>
<md:Model.profile>http://iec.ch/TC57/ns/CIM/SteadyStateHypothesis-EU/3.0</md:Model.profile>
</md:FullModel>

<cim:EnergySource rdf:about="#_EnergySource_1">
<cim:EnergySource.activePower>16.1</cim:EnergySource.activePower>
<cim:EnergySource.reactivePower>8.1</cim:EnergySource.reactivePower>
</cim:EnergySource>
<cim:Terminal rdf:about="#_EnergySource_1_T">
<cim:ACDCTerminal.connected>true</cim:ACDCTerminal.connected>
</cim:Terminal>

<cim:EnergySource rdf:about="#_EnergySource_2">
<cim:EnergySource.activePower>16.2</cim:EnergySource.activePower>
<cim:EnergySource.reactivePower>8.2</cim:EnergySource.reactivePower>
</cim:EnergySource>
<cim:Terminal rdf:about="#_EnergySource_2_T">
<cim:ACDCTerminal.connected>true</cim:ACDCTerminal.connected>
</cim:Terminal>

<cim:EnergySource rdf:about="#_EnergySource_3">
<cim:EnergySource.activePower>16.3</cim:EnergySource.activePower>
<cim:EnergySource.reactivePower>8.3</cim:EnergySource.reactivePower>
</cim:EnergySource>
<cim:Terminal rdf:about="#_EnergySource_3_T">
<cim:ACDCTerminal.connected>true</cim:ACDCTerminal.connected>
</cim:Terminal>

</rdf:RDF>
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<rdf:RDF xmlns:cim="http://iec.ch/TC57/CIM100#" xmlns:md="http://iec.ch/TC57/61970-552/ModelDescription/1#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:eu="http://iec.ch/TC57/CIM100-European#">
<md:FullModel rdf:about="urn:uuid:d400c631-75a0-4c30-8aed-832b0d282e74">
<md:Model.created>2024-02-21T11:00:00Z</md:Model.created>
<md:Model.scenarioTime>2024-02-21T11:00:00Z</md:Model.scenarioTime>
<md:Model.version>1</md:Model.version>
<md:Model.description>Complete update using different variants</md:Model.description>
<md:Model.modelingAuthoritySet>https://www.powsybl.org/</md:Model.modelingAuthoritySet>
<md:Model.profile>http://iec.ch/TC57/ns/CIM/SteadyStateHypothesis-EU/3.0</md:Model.profile>
</md:FullModel>

<cim:EnergySource rdf:about="#_EnergySource_1">
<cim:EnergySource.activePower>24.1</cim:EnergySource.activePower>
<cim:EnergySource.reactivePower>12.1</cim:EnergySource.reactivePower>
</cim:EnergySource>
<cim:Terminal rdf:about="#_EnergySource_1_T">
<cim:ACDCTerminal.connected>true</cim:ACDCTerminal.connected>
</cim:Terminal>

<cim:EnergySource rdf:about="#_EnergySource_2">
<cim:EnergySource.activePower>24.2</cim:EnergySource.activePower>
<cim:EnergySource.reactivePower>12.2</cim:EnergySource.reactivePower>
</cim:EnergySource>
<cim:Terminal rdf:about="#_EnergySource_2_T">
<cim:ACDCTerminal.connected>true</cim:ACDCTerminal.connected>
</cim:Terminal>

<cim:EnergySource rdf:about="#_EnergySource_3">
<cim:EnergySource.activePower>24.3</cim:EnergySource.activePower>
<cim:EnergySource.reactivePower>12.3</cim:EnergySource.reactivePower>
</cim:EnergySource>
<cim:Terminal rdf:about="#_EnergySource_3_T">
<cim:ACDCTerminal.connected>true</cim:ACDCTerminal.connected>
</cim:Terminal>

</rdf:RDF>
Loading