private void createAdditionalBank(EsgNetwork esgNetwork, TwoWindingsTransformer twt, String nodeName, Set<String> additionalBanksIds, double rcapba, double plosba) { if ((Math.abs(plosba) > G_EPSILON) || (Math.abs(rcapba) > B_EPSILON)) { //simple new bank naming: 4 first letters of the node name, 7th letter of the node name, 'C', 2 digits order code String nnodeName = Strings.padEnd(nodeName, 8, ' '); String newBankNamePrefix = nnodeName.substring(0, 4) + nnodeName.charAt(6) + 'C'; String newBankName = newBankNamePrefix + "00"; int counter = 1; while (additionalBanksIds.contains(newBankName)) { String newCounter = String.format("%02d", counter++); if (newCounter.length() > 2) { throw new RuntimeException("Renaming error " + nodeName + " -> " + newBankName); } newBankName = newBankNamePrefix + newCounter; } additionalBanksIds.add(newBankName); LOGGER.info("create additional bank with id: {} at node: {}, for twt: {} ( B={}, G={} ); rcapba={}, plosba={}", newBankName, nodeName, twt, twt.getB(), twt.getG(), rcapba, plosba); esgNetwork.addCapacitorsOrReactorBanks(new EsgCapacitorOrReactorBank(new Esg8charName(newBankName), new Esg8charName(nodeName), 1, plosba, rcapba, 1, EsgCapacitorOrReactorBank.RegulatingMode.NOT_REGULATING)); } }
private static void writeCapacitorOrReactorBank(EsgCapacitorOrReactorBank bank, RecordWriter recordWriter) throws IOException { recordWriter.addValue('C', 1); recordWriter.addValue(bank.getZnamba().toString(), 3, 10); recordWriter.addValue(bank.getZnodba().toString(), 12, 19); recordWriter.addValue(bank.getIeleba(), 39, 41); recordWriter.addValue(bank.getPlosba(), 43, 50); recordWriter.addValue(bank.getRcapba(), 52, 59); recordWriter.addValue(bank.getImaxba(), 61, 63); recordWriter.addValue(toChar(bank.getXregba()), 65, 65); recordWriter.addValue(0.f, 67, 74); //...Unused recordWriter.addValue(" ", 76, 83); //...Unused recordWriter.addValue(0.f, 85, 92); //...Free numeric attribute 1 recordWriter.addValue(0.f, 94, 101); //...Free numeric attribute 2 recordWriter.addValue(" ", 103, 110); //...Free alphanumeric attribute recordWriter.newLine(); }
public void addCapacitorsOrReactorBanks(EsgCapacitorOrReactorBank bank) { if (capacitorsOrReactorBanks.containsKey(bank.getZnamba().toString())) { throw new IllegalArgumentException("Capacitor or reactor bank '" + bank.getZnamba() + "' already exists"); } capacitorsOrReactorBanks.put(bank.getZnamba().toString(), bank); }
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)); } }
EsgCapacitorOrReactorBank.RegulatingMode xregba = EsgCapacitorOrReactorBank.RegulatingMode.NOT_REGULATING; esgNetwork.addCapacitorsOrReactorBanks(new EsgCapacitorOrReactorBank(new Esg8charName(dictionary.getEsgId(fictionalShuntId)), new Esg8charName(dictionary.getEsgId(bNode.getId())), ieleba, plosba, rcapba, imaxba, xregba));