private List<Generator> filterGenerators(Network network, boolean isFiltered) { List<Generator> filtGens = new ArrayList<>(); for (Generator g : Identifiables.sort(network.getGenerators())) { if (!filteredGenerator(g, isFiltered)) { filtGens.add(g); } } return filtGens; }
public static EurostagFakeNodes build(Network network, EurostagEchExportConfig config) { Objects.requireNonNull(network); Objects.requireNonNull(config); BiMap<String, String> fakeNodesMap = HashBiMap.create(new HashMap<>()); AtomicLongMap<String> countUsesMap = AtomicLongMap.create(); //adds 2 default fake nodes fakeNodesMap.put(EchUtil.FAKE_NODE_NAME1, EchUtil.FAKE_NODE_NAME1); countUsesMap.getAndIncrement(EchUtil.FAKE_NODE_NAME1); fakeNodesMap.put(EchUtil.FAKE_NODE_NAME2, EchUtil.FAKE_NODE_NAME2); countUsesMap.getAndIncrement(EchUtil.FAKE_NODE_NAME2); Identifiables.sort(network.getVoltageLevels()).stream().map(VoltageLevel::getId).forEach(vlId -> fakeNodesMap.put(vlId, newEsgId(fakeNodesMap, vlId))); return new EurostagFakeNodes(fakeNodesMap, countUsesMap, network); }
private void numberOfElements() { System.out.println("Buses = " + Identifiables.sort(_network.getBusBreakerView().getBuses()).size()); System.out.println("Lines = " + Identifiables.sort(_network.getLines()).size()); System.out.println("Trafos = " + Identifiables.sort(_network.getTwoWindingsTransformers()).size()); List<TwoWindingsTransformer> fixedTranformers = new ArrayList<TwoWindingsTransformer>(); List<TwoWindingsTransformer> detailedTranformers = new ArrayList<TwoWindingsTransformer>(); for (TwoWindingsTransformer trafo : Identifiables.sort(_network.getTwoWindingsTransformers())) { if ((trafo.getRatioTapChanger() == null) && (trafo.getPhaseTapChanger() == null)) { fixedTranformers.add(trafo); System.out.println("Detailed Trafos = " + detailedTranformers.size()); System.out.println("Loads = " + Identifiables.sort(_network.getLoads()).size()); System.out.println("Shutns = " + Identifiables.sort(_network.getShunts()).size()); System.out.println("Machines = " + Identifiables.sort(_network.getGenerators()).size()); int numMachines = Identifiables.sort(_network.getGenerators()).size(); int numGens = _ddbManager.findEquipmentAllCount(); int numFixInyec = numMachines - numGens;
private static void dumpLinesDictionary(Network network, EurostagDictionary dictionary, Path dir, EurostagEchExportConfig exportConfig) throws IOException { try (BufferedWriter os = Files.newBufferedWriter(dir.resolve("dict_lines.csv"), StandardCharsets.UTF_8)) { for (Identifiable obj : Identifiables.sort(Iterables.concat( network.getLineStream().filter(line -> !(exportConfig.isExportMainCCOnly() && !EchUtil.isInMainCc(line, exportConfig.isNoSwitch()))).collect(Collectors.toList()), network.getTwoWindingsTransformerStream().filter(twt -> !(exportConfig.isExportMainCCOnly() && !EchUtil.isInMainCc(twt, exportConfig.isNoSwitch()))).collect(Collectors.toList()), network.getDanglingLineStream().filter(dl -> !(exportConfig.isExportMainCCOnly() && !EchUtil.isInMainCc(dl, exportConfig.isNoSwitch()))).collect(Collectors.toList()) ))) { os.write(obj.getId() + ";" + dictionary.getEsgId(obj.getId())); os.newLine(); } for (ThreeWindingsTransformer twt : Identifiables.sort(network.getThreeWindingsTransformers())) { throw new AssertionError("TODO"); } } }
private static void dumpBusesDictionary(Network network, EurostagDictionary dictionary, Path dir, EurostagEchExportConfig exportConfig) throws IOException { try (BufferedWriter os = Files.newBufferedWriter(dir.resolve("dict_buses.csv"), StandardCharsets.UTF_8)) { for (Bus bus : Identifiables.sort(EchUtil.getBuses(network, dictionary.getConfig()))) { if (!(exportConfig.isExportMainCCOnly() && (!EchUtil.isInMainCc(bus)))) { os.write(bus.getId() + ";" + dictionary.getEsgId(bus.getId())); os.newLine(); } } } }
elements.append("BUSES"); elements.append(StaticData.NEW_LINE); for (Bus bus : Identifiables.sort(_network.getBusBreakerView().getBuses())) { elements.append(bus.getId() + ";" + bus.getName()); elements.append(StaticData.NEW_LINE); List<TwoWindingsTransformer> fixedTranformers = new ArrayList<TwoWindingsTransformer>(); List<TwoWindingsTransformer> detailedTranformers = new ArrayList<TwoWindingsTransformer>(); for (TwoWindingsTransformer trafo : Identifiables.sort(_network.getTwoWindingsTransformers())) { if ((trafo.getRatioTapChanger() == null) && (trafo.getPhaseTapChanger() == null)) { fixedTranformers.add(trafo); elements.append("LOAD"); elements.append(StaticData.NEW_LINE); for (Load load : Identifiables.sort(_network.getLoads())) { elements.append(load.getId() + ";" + load.getName()); elements.append(StaticData.NEW_LINE); elements.append("SHUNTS"); elements.append(StaticData.NEW_LINE); for (ShuntCompensator shunt : Identifiables.sort(_network.getShunts())) { elements.append(shunt.getId() + ";" + shunt.getName()); elements.append(StaticData.NEW_LINE); count = 0; int countEq = 0; for (Generator gen : Identifiables.sort(_network.getGenerators())) { elements.append(gen.getId() + ";" + gen.getName()); elements.append(StaticData.NEW_LINE);
for (Generator g : Identifiables.sort(n.getGenerators())) { count.get(insert(g, ddb, genDict, auxDict, config, stateBefore)).add(g.getId());
}); Set<String> busIds = Identifiables.sort(EchUtil.getBuses(network, config)).stream().map(Bus::getId).collect(Collectors.toSet()); Set<String> loadIds = new LinkedHashSet<>(); Identifiables.sort(network.getDanglingLines()).forEach(dl -> { busIds.add(EchUtil.getBusId(dl)); loadIds.add(EchUtil.getLoadId(dl)); }); Identifiables.sort(network.getLoads()).forEach(l -> loadIds.add(l.getId())); Set<String> generatorIds = Identifiables.sort(network.getGenerators()).stream().map(Generator::getId).collect(Collectors.toSet()); Set<String> shuntIds = Identifiables.sort(network.getShunts()).stream().map(ShuntCompensator::getId).collect(Collectors.toSet()); Set<String> svcIds = Identifiables.sort(network.getStaticVarCompensators()).stream().map(StaticVarCompensator::getId).collect(Collectors.toSet()); Set<String> converterStationsIds = Identifiables.sort(network.getVscConverterStations()).stream().map(VscConverterStation::getId).collect(Collectors.toSet()); for (DanglingLine dl : Identifiables.sort(network.getDanglingLines())) { for (VoltageLevel vl : Identifiables.sort(network.getVoltageLevels())) { for (Switch sw : Identifiables.sort(EchUtil.getSwitches(vl, config))) { Bus bus1 = EchUtil.getBus1(vl, sw.getId(), config); Bus bus2 = EchUtil.getBus2(vl, sw.getId(), config); for (Line l : Identifiables.sort(network.getLines())) { for (TwoWindingsTransformer twt : Identifiables.sort(network.getTwoWindingsTransformers())) { for (ThreeWindingsTransformer twt : Identifiables.sort(network.getThreeWindingsTransformers())) { LOGGER.error("NOT YET IMPLEMENTED"); throw new AssertionError("TODO");
for (Load l : Identifiables.sort(network.getLoads())) { if (l.getLoadType() == LoadType.FICTITIOUS) { // skip fictitious loads continue; for (DanglingLine dl : Identifiables.sort(network.getDanglingLines())) { if (onlyMainCC) { Terminal t = dl.getTerminal(); for (Generator g : Identifiables.sort(network.getGenerators())) { if (onlyIntermittentGeneration && !g.getEnergySource().isIntermittent()) { continue;
private void createLoads(EsgNetwork esgNetwork) { for (Load l : Identifiables.sort(network.getLoads())) { // skip loads not in the main connected component if (config.isExportMainCCOnly() && !EchUtil.isInMainCc(l, config.isNoSwitch())) { LOGGER.warn("not in main component, skipping Load: {}", l.getId()); continue; } ConnectionBus bus = ConnectionBus.fromTerminal(l.getTerminal(), config, fakeNodes); esgNetwork.addLoad(createLoad(bus, l.getId(), l.getP0(), l.getQ0())); } for (DanglingLine dl : Identifiables.sort(network.getDanglingLines())) { // skip dls not in the main connected component if (config.isExportMainCCOnly() && !EchUtil.isInMainCc(dl, config.isNoSwitch())) { LOGGER.warn("not in main component, skipping DanglingLine: {}", dl.getId()); continue; } ConnectionBus bus = new ConnectionBus(true, EchUtil.getBusId(dl)); esgNetwork.addLoad(createLoad(bus, EchUtil.getLoadId(dl), dl.getP0(), dl.getQ0())); } }
busesList = Identifiables.sort(_network.getBusBreakerView().getBuses()); exportBuses(writerMo, modContext, modelicaModelsList, modelicaSim); dangLinesList = Identifiables.sort(_network.getDanglingLines()); exportDanglingBuses(writerMo, modContext, modelicaModelsList, modelicaSim); loadsList = Identifiables.sort(_network.getLoads()); exportLoads(writerMo, modContext, modelicaModelsList, modelicaSim); exportDanglingLoads(writerMo, modContext, modelicaModelsList, modelicaSim); trafosList = Identifiables.sort(_network.getTwoWindingsTransformers()); exportTransformers(writerMo, modContext, modelicaModelsList, modelicaSim); linesList = Identifiables.sort(_network.getLines()); exportLines(writerMo, modContext, modelicaModelsList, modelicaSim); shuntsList = Identifiables.sort(_network.getShunts()); exportCapacitors(writerMo, modContext, modelicaModelsList, modelicaSim); genList = Identifiables.sort(_network.getGenerators()); for (Generator gen : genList) { Equipment eq = _ddbManager.findEquipment(gen.getId()); connectLinesList = Identifiables.sort(_network.getLines()); exportConnectLines(writerMo, modContext, modelicaModelsList, modelicaSim); connectDanglingLinesList = Identifiables.sort(_network.getDanglingLines()); exportConnectDanglingLines(writerMo, modContext, modelicaModelsList, modelicaSim);
private void createCouplingDevices(EsgNetwork esgNetwork) { for (VoltageLevel vl : Identifiables.sort(network.getVoltageLevels())) { for (Switch sw : Identifiables.sort(EchUtil.getSwitches(vl, config))) { Bus bus1 = EchUtil.getBus1(vl, sw.getId(), config); Bus bus2 = EchUtil.getBus2(vl, sw.getId(), config); //do not export the Switch if bus1==bus2 if (EchUtil.isSameBus(bus1, bus2)) { LOGGER.warn("skipping Switch: {}; bus1 is equal to bus2: {}", sw.getId(), bus1 != null ? bus1.getId() : bus1); continue; } // skip switches not in the main connected component if (config.isExportMainCCOnly() && (!EchUtil.isInMainCc(bus1) || !EchUtil.isInMainCc(bus2))) { LOGGER.warn("not in main component, skipping Switch: {} {} {}", bus1.getId(), bus2.getId(), sw.getId()); continue; } esgNetwork.addCouplingDevice(new EsgCouplingDevice(new EsgBranchName(new Esg8charName(dictionary.getEsgId(bus1.getId())), new Esg8charName(dictionary.getEsgId(bus2.getId())), parallelIndexes.getParallelIndex(sw.getId())), sw.isOpen() ? EsgCouplingDevice.ConnectionStatus.OPEN : EsgCouplingDevice.ConnectionStatus.CLOSED)); } } }
private void createStaticVarCompensators(EsgNetwork esgNetwork) { for (StaticVarCompensator svc : Identifiables.sort(network.getStaticVarCompensators())) {
private void createBanks(EsgNetwork esgNetwork) { for (ShuntCompensator sc : Identifiables.sort(network.getShunts())) { // skip shunts not in the main connected component if (config.isExportMainCCOnly() && !EchUtil.isInMainCc(sc, config.isNoSwitch())) { LOGGER.warn("not in main component, skipping ShuntCompensator: {}", sc.getId()); continue; } ConnectionBus bus = ConnectionBus.fromTerminal(sc.getTerminal(), config, fakeNodes); //...number of steps in service int ieleba = bus.isConnected() ? sc.getCurrentSectionCount() : 0; // not really correct, because it can be connected with zero section, EUROSTAG should be modified... double vnom = sc.getTerminal().getVoltageLevel().getNominalV(); double plosba = 1000 * vnom * vnom * 0.; // no active lost in the iidm shunt compensator. Expressed in kw double rcapba = vnom * vnom * sc.getbPerSection(); int imaxba = sc.getMaximumSectionCount(); EsgCapacitorOrReactorBank.RegulatingMode xregba = EsgCapacitorOrReactorBank.RegulatingMode.NOT_REGULATING; esgNetwork.addCapacitorsOrReactorBanks(new EsgCapacitorOrReactorBank(new Esg8charName(dictionary.getEsgId(sc.getId())), new Esg8charName(dictionary.getEsgId(bus.getId())), ieleba, plosba, rcapba, imaxba, xregba)); } }
private void createGenerators(EsgNetwork esgNetwork) { for (Generator g : Identifiables.sort(network.getGenerators())) {
private void createTransformers(EsgNetwork esgNetwork, EsgGeneralParameters parameters) { Set<String> additionalBanksIds = new HashSet<>(); for (TwoWindingsTransformer twt : Identifiables.sort(network.getTwoWindingsTransformers())) {
private void createACDCVscConverters(EsgNetwork esgNetwork) { //creates 2 DC nodes, for each hvdc line (one node per converter station) for (HvdcLine hvdcLine : Identifiables.sort(network.getHvdcLines())) { // skip lines with converter stations not in the main connected component if (config.isExportMainCCOnly() && (!EchUtil.isInMainCc(hvdcLine.getConverterStation1(), config.isNoSwitch()) || !EchUtil.isInMainCc(hvdcLine.getConverterStation2(), config.isNoSwitch()))) { LOGGER.warn("skipped HVDC line {}: at least one converter station is not in main component", hvdcLine.getId()); continue; } HvdcConverterStation convStation1 = hvdcLine.getConverterStation1(); HvdcConverterStation convStation2 = hvdcLine.getConverterStation2(); //create two dc nodes, one for each conv. station Esg8charName hvdcNodeName1 = new Esg8charName(addToDictionary("DC_" + convStation1.getId(), dictionary, EurostagNamingStrategy.NameType.NODE)); Esg8charName hvdcNodeName2 = new Esg8charName(addToDictionary("DC_" + convStation2.getId(), dictionary, EurostagNamingStrategy.NameType.NODE)); double dcVoltage = EchUtil.getHvdcLineDcVoltage(hvdcLine); esgNetwork.addDCNode(new EsgDCNode(new Esg2charName("DC"), hvdcNodeName1, dcVoltage, 1)); esgNetwork.addDCNode(new EsgDCNode(new Esg2charName("DC"), hvdcNodeName2, dcVoltage, 1)); //create a dc link, representing the hvdc line //Eurostag model requires a resistance of 1 ohm (not hvdcLine.getR()) float r = 1.0f; esgNetwork.addDCLink(new EsgDCLink(hvdcNodeName1, hvdcNodeName2, '1', r, EsgDCLink.LinkStatus.ON)); //create the two converter stations EsgACDCVscConverter esgConv1 = createACDCVscConverter(network.getVscConverterStation(convStation1.getId()), hvdcLine, hvdcNodeName1); EsgACDCVscConverter esgConv2 = createACDCVscConverter(network.getVscConverterStation(convStation2.getId()), hvdcLine, hvdcNodeName2); esgNetwork.addACDCVscConverter(esgConv1); esgNetwork.addACDCVscConverter(esgConv2); //Create one load on the node to which converters stations are connected esgNetwork.addLoad(createConverterStationAdditionalLoad(hvdcLine, convStation1)); esgNetwork.addLoad(createConverterStationAdditionalLoad(hvdcLine, convStation2)); } }