From 9338710aac6941cf516e6b1d40e6617fcf2b502a Mon Sep 17 00:00:00 2001 From: Christian Biasuzzi Date: Mon, 8 Jan 2018 18:55:24 +0100 Subject: [PATCH] svc binit computation: fixes NPE and value computation when the svc bus is not connected --- .../iidm/eurostag/export/EurostagEchExport.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/eurostag-ech-export/src/main/java/eu/itesla_project/iidm/eurostag/export/EurostagEchExport.java b/eurostag-ech-export/src/main/java/eu/itesla_project/iidm/eurostag/export/EurostagEchExport.java index 3414bfc1..07979c82 100644 --- a/eurostag-ech-export/src/main/java/eu/itesla_project/iidm/eurostag/export/EurostagEchExport.java +++ b/eurostag-ech-export/src/main/java/eu/itesla_project/iidm/eurostag/export/EurostagEchExport.java @@ -496,9 +496,19 @@ private void createStaticVarCompensators(EsgNetwork esgNetwork) { Esg8charName znamsvc = new Esg8charName(dictionary.getEsgId(svc.getId())); EsgConnectionStatus xsvcst = bus.isConnected() ? EsgConnectionStatus.CONNECTED : EsgConnectionStatus.NOT_CONNECTED; Esg8charName znodsvc = new Esg8charName(dictionary.getEsgId(bus.getId())); - float factor = (float) Math.pow(svc.getTerminal().getVoltageLevel().getNominalV(), 2); + float vlNomVoltage = svc.getTerminal().getVoltageLevel().getNominalV(); + float factor = (float) Math.pow(vlNomVoltage, 2); float bmin = (!config.isSvcAsFixedInjectionInLF()) ? svc.getBmin() * factor : -9999999; // [Mvar] - float binit = (!config.isSvcAsFixedInjectionInLF()) ? svc.getReactivePowerSetPoint() : -svc.getTerminal().getQ() * (float) Math.pow(svc.getTerminal().getVoltageLevel().getNominalV() / EchUtil.getBus(svc.getTerminal(), config).getV(), 2); // [Mvar] + float binit; // [Mvar] + if (!config.isSvcAsFixedInjectionInLF()) { + binit = svc.getReactivePowerSetPoint(); + } else { + binit = -svc.getTerminal().getQ(); + Bus svcBus = EchUtil.getBus(svc.getTerminal(), config); + if ((svcBus != null) && (Math.abs(svcBus.getV()) > 0.0f)) { + binit = binit * (float) Math.pow(vlNomVoltage / svcBus.getV(), 2); + } + } float bmax = (!config.isSvcAsFixedInjectionInLF()) ? svc.getBmax() * factor : 9999999; // [Mvar] EsgRegulatingMode xregsvc = ((svc.getRegulationMode() == StaticVarCompensator.RegulationMode.VOLTAGE) && (!config.isSvcAsFixedInjectionInLF())) ? EsgRegulatingMode.REGULATING : EsgRegulatingMode.NOT_REGULATING; float vregsvc = svc.getVoltageSetPoint();