CgmesImporterTest.java
/**
* Copyright (c) 2021, 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.shortcircuit;
import com.powsybl.cgmes.conformity.Cgmes3Catalog;
import com.powsybl.cgmes.conformity.CgmesConformity1Catalog;
import com.powsybl.cgmes.conformity.CgmesConformity1ModifiedCatalog;
import com.powsybl.cgmes.conversion.CgmesImport;
import com.powsybl.cgmes.conversion.CgmesModelExtension;
import com.powsybl.cgmes.model.CgmesModel;
import com.powsybl.cgmes.shorcircuit.CgmesShortCircuitImporter;
import com.powsybl.cgmes.shorcircuit.CgmesShortCircuitModel;
import com.powsybl.iidm.network.Bus;
import com.powsybl.iidm.network.BusbarSection;
import com.powsybl.iidm.network.Generator;
import com.powsybl.iidm.network.Network;
import com.powsybl.iidm.network.NetworkFactory;
import com.powsybl.iidm.network.extensions.GeneratorShortCircuit;
import com.powsybl.iidm.network.extensions.IdentifiableShortCircuit;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
import java.util.List;
import java.util.Properties;
/**
* @author Luma Zamarre��o {@literal <zamarrenolm at aia.es>}
* @author Jos�� Antonio Marqu��s {@literal <marquesja at aia.es>}
*/
class CgmesImporterTest {
@Test
void testImportCgmesGeneratorShortCircuitData() {
Properties p = new Properties();
p.put(CgmesImport.POST_PROCESSORS, List.of("shortcircuit"));
Network network = new CgmesImport().importData(CgmesConformity1Catalog.miniBusBranch().dataSource(),
NetworkFactory.findDefault(), p);
Generator generator = network.getGenerator("392ea173-4f8e-48fa-b2a3-5c3721e93196");
assertNotNull(generator);
GeneratorShortCircuit generatorShortCircuit = generator.getExtension(GeneratorShortCircuit.class);
assertNotNull(generatorShortCircuit);
double tol = 0.000001;
assertEquals(0.1, generatorShortCircuit.getDirectSubtransX(), tol);
assertEquals(1.8, generatorShortCircuit.getDirectTransX(), tol);
assertTrue(Double.isNaN(generatorShortCircuit.getStepUpTransformerX()));
}
@Test
void testImportCgmes3GeneratorShortCircuitData() {
Network network = new CgmesImport().importData(Cgmes3Catalog.miniGrid().dataSource(),
NetworkFactory.findDefault(), new Properties());
CgmesModelExtension cgmesModelExtension = network.getExtension(CgmesModelExtension.class);
assertNotNull(cgmesModelExtension);
CgmesModel cgmesModel = cgmesModelExtension.getCgmesModel();
assertNotNull(cgmesModel);
CgmesShortCircuitModel cgmesScModel = new CgmesShortCircuitModel(cgmesModel.tripleStore());
new CgmesShortCircuitImporter(cgmesScModel, network).importShortcircuitData();
Generator generator = network.getGenerator("ca67be42-750e-4ebf-bfaa-24d446e59a22");
assertNotNull(generator);
GeneratorShortCircuit generatorShortCircuit = generator.getExtension(GeneratorShortCircuit.class);
assertNotNull(generatorShortCircuit);
double tol = 0.000001;
assertEquals(0.6174, generatorShortCircuit.getDirectSubtransX(), tol);
assertEquals(7.938, generatorShortCircuit.getDirectTransX(), tol);
assertTrue(Double.isNaN(generatorShortCircuit.getStepUpTransformerX()));
}
@Test
void testImportCgmesBranchModelBusbarSectionShortCircuitData() {
Network network = new CgmesImport().importData(CgmesConformity1ModifiedCatalog.smallGridBusBranchWithBusbarSectionsAndIpMax().dataSource(),
NetworkFactory.findDefault(), new Properties());
CgmesModelExtension cgmesModelExtension = network.getExtension(CgmesModelExtension.class);
assertNotNull(cgmesModelExtension);
CgmesModel cgmesModel = cgmesModelExtension.getCgmesModel();
assertNotNull(cgmesModel);
CgmesShortCircuitModel cgmesScModel = new CgmesShortCircuitModel(cgmesModel.tripleStore());
new CgmesShortCircuitImporter(cgmesScModel, network).importShortcircuitData();
Bus bus = network.getBusBreakerView().getBus("0472a783-c766-11e1-8775-005056c00008");
assertNotNull(bus);
IdentifiableShortCircuit busShortCircuit = bus.getExtension(IdentifiableShortCircuit.class);
assertNotNull(busShortCircuit);
assertTrue(Double.isNaN(busShortCircuit.getIpMin()));
assertEquals(1000.0, busShortCircuit.getIpMax(), 0.000001);
}
@Test
void testImportCgmesBusbarSectionShortCircuitData() {
Network network = new CgmesImport().importData(CgmesConformity1Catalog.miniNodeBreaker().dataSource(),
NetworkFactory.findDefault(), new Properties());
CgmesModelExtension cgmesModelExtension = network.getExtension(CgmesModelExtension.class);
assertNotNull(cgmesModelExtension);
CgmesModel cgmesModel = cgmesModelExtension.getCgmesModel();
assertNotNull(cgmesModel);
CgmesShortCircuitModel cgmesScModel = new CgmesShortCircuitModel(cgmesModel.tripleStore());
new CgmesShortCircuitImporter(cgmesScModel, network).importShortcircuitData();
BusbarSection busbarSection = network.getBusbarSection("d9f23c01-d924-4040-ab48-d5c36ccdf1a3");
assertNotNull(busbarSection);
IdentifiableShortCircuit busbarSectionShortCircuit = busbarSection.getExtension(IdentifiableShortCircuit.class);
assertNull(busbarSectionShortCircuit);
}
@Test
void testImportCgmes3BusbarSectionShortCircuitData() {
Properties importParams = new Properties();
// Avoid importing assembled micro grid as subnetworks, to have access to whole CGMES model
importParams.put(CgmesImport.IMPORT_CGM_WITH_SUBNETWORKS, "false");
Network network = new CgmesImport().importData(Cgmes3Catalog.microGrid().dataSource(),
NetworkFactory.findDefault(), importParams);
CgmesModelExtension cgmesModelExtension = network.getExtension(CgmesModelExtension.class);
assertNotNull(cgmesModelExtension);
CgmesModel cgmesModel = cgmesModelExtension.getCgmesModel();
assertNotNull(cgmesModel);
CgmesShortCircuitModel cgmesScModel = new CgmesShortCircuitModel(cgmesModel.tripleStore());
new CgmesShortCircuitImporter(cgmesScModel, network).importShortcircuitData();
BusbarSection busbarSection = network.getBusbarSection("364c9ca2-0d1d-4363-8f46-e586f8f66a8c");
assertNotNull(busbarSection);
IdentifiableShortCircuit busbarSectionShortCircuit = busbarSection.getExtension(IdentifiableShortCircuit.class);
assertNotNull(busbarSectionShortCircuit);
assertTrue(Double.isNaN(busbarSectionShortCircuit.getIpMin()));
assertEquals(5000.0, busbarSectionShortCircuit.getIpMax(), 0.000001);
}
}