private static void addConnectedShunt(Terminal.BusBreakerView view, double q, String shuntId, ConnectedPower balanceMainCC, ConnectedPower balanceOtherCC) { if (view.getBus().isInMainConnectedComponent()) { if (q > 0) { balanceMainCC.connectedShuntPositiveVolume += q; } else { balanceMainCC.connectedShuntNegativeVolume += q; } balanceMainCC.connectedShunts.add(shuntId); } else { if (q > 0) { balanceOtherCC.connectedShuntPositiveVolume += q; } else { balanceOtherCC.connectedShuntNegativeVolume += q; } balanceOtherCC.connectedShunts.add(shuntId); } }
public static ConnectionInfo getConnectionInfoInBusBreakerView(Terminal t) { Bus bus = t.getBusBreakerView().getBus(); boolean connected; if (bus != null) { connected = true; } else { connected = false; bus = t.getBusBreakerView().getConnectableBus(); if (bus == null) { // otherwise take first bus of the substation at the same voltage // level... Iterator<Bus> itVLB = t.getVoltageLevel().getBusBreakerView().getBuses().iterator(); if (itVLB.hasNext()) { bus = itVLB.next(); } else { throw new PowsyblException("Cannot find a connection bus"); } } } return new ConnectionInfo(bus, connected); }
public static boolean isConnected(Load load) { Bus loadBus = load.getTerminal().getBusBreakerView().getBus(); double voltage = getV(load.getTerminal()); if (loadBus != null && !Double.isNaN(voltage)) { // load is connected return true; } return false; }
private static void addGenerators(Network network, ConnectedPower balanceMainCC, ConnectedPower balanceOtherCC) { for (Generator g : network.getGenerators()) { Terminal.BusBreakerView view = g.getTerminal().getBusBreakerView(); if (view.getBus() != null) { if (view.getBus().isInMainConnectedComponent()) { balanceMainCC.connectedMaxGeneration += g.getMaxP(); balanceMainCC.connectedGeneration += g.getTargetP(); balanceMainCC.connectedGenerators.add(g.getId()); } else { balanceOtherCC.connectedMaxGeneration += g.getMaxP(); balanceOtherCC.connectedGeneration += g.getTargetP(); balanceOtherCC.connectedGenerators.add(g.getId()); } } else { if (view.getConnectableBus().isInMainConnectedComponent()) { balanceMainCC.disconnectedMaxGeneration += g.getMaxP(); balanceMainCC.disconnectedGeneration += g.getTargetP(); balanceMainCC.disconnectedGenerators.add(g.getId()); } else { balanceOtherCC.disconnectedMaxGeneration += g.getMaxP(); balanceOtherCC.disconnectedGeneration += g.getTargetP(); balanceOtherCC.disconnectedGenerators.add(g.getId()); } } } }
/** * Create a Dummy Bus (corresponding to a dangling line) * @param writerMo * @param modContext * @param modelicaModelsList * @param modelicaSim * @throws IOException */ private void exportDanglingBuses(Writer writerMo, ModExportContext modContext, List<String> modelicaModelsList, SimulatorInst modelicaSim) throws IOException { if ((dangLinesList.size() != 0) && (!dangLinesList.isEmpty())) { for (DanglingLine dl : dangLinesList) { Bus knownBus = dl.getTerminal().getBusBreakerView().getBus(); SV sv = new SV(0, 0, knownBus.getV(), knownBus.getAngle()); SV svDangling = sv.otherSide(dl); double voltage = svDangling.getU() / knownBus.getVoltageLevel().getNominalV(); double angle = svDangling.getA(); String name = "ext_" + dl.getId(); BusRecord busRecord = ModelConverter.getModelicaRecord(name, voltage, angle, modContext, _ddbManager, modelicaSim); this.danglingBuses.add(busRecord); this.addRecord(busRecord, writerMo, modContext, _ddbManager, modelicaSim); } } }
private static void addDanglingLines(Network network, ConnectedPower balanceMainCC, ConnectedPower balanceOtherCC) { for (DanglingLine dl : network.getDanglingLines()) { Terminal.BusBreakerView view = dl.getTerminal().getBusBreakerView(); if (view.getBus() != null) { if (view.getBus().isInMainConnectedComponent()) { balanceMainCC.connectedLoads.add(dl.getId()); balanceMainCC.connectedLoadVolume += dl.getP0(); } else { balanceOtherCC.connectedLoads.add(dl.getId()); balanceOtherCC.connectedLoadVolume += dl.getP0(); } } else { if (view.getConnectableBus().isInMainConnectedComponent()) { balanceMainCC.disconnectedLoads.add(dl.getId()); balanceMainCC.disconnectedLoadVolume += dl.getP0(); } else { balanceOtherCC.disconnectedLoads.add(dl.getId()); balanceOtherCC.disconnectedLoadVolume += dl.getP0(); } } } }
private static void addLoads(Network network, ConnectedPower balanceMainCC, ConnectedPower balanceOtherCC) { for (Load l : network.getLoads()) { Terminal.BusBreakerView view = l.getTerminal().getBusBreakerView(); if (view.getBus() != null) { if (view.getBus().isInMainConnectedComponent()) { balanceMainCC.connectedLoads.add(l.getId()); balanceMainCC.connectedLoadVolume += l.getP0(); } else { balanceOtherCC.connectedLoads.add(l.getId()); balanceOtherCC.connectedLoadVolume += l.getP0(); } } else { if (view.getConnectableBus().isInMainConnectedComponent()) { balanceMainCC.disconnectedLoads.add(l.getId()); balanceMainCC.disconnectedLoadVolume += l.getP0(); } else { balanceOtherCC.disconnectedLoads.add(l.getId()); balanceOtherCC.disconnectedLoadVolume += l.getP0(); } } } }
private static void extractTfo2WData(Network network, NetworkData networkData) { for (TwoWindingsTransformer tfo : network.getTwoWindingsTransformers()) { networkData.addTfo2WData(new Tfo2WData(tfo.getId(), (tfo.getTerminal1().getBusBreakerView().getBus() != null) ? tfo.getTerminal1().getBusBreakerView().getBus().getId() : tfo.getTerminal1().getBusBreakerView().getConnectableBus().getId(), (tfo.getTerminal2().getBusBreakerView().getBus() != null) ? tfo.getTerminal2().getBusBreakerView().getBus().getId() : tfo.getTerminal2().getBusBreakerView().getConnectableBus().getId(), apparentPower(tfo.getTerminal1()), apparentPower(tfo.getTerminal2()), tfo.getTerminal1().getVoltageLevel().getNominalV(), tfo.getTerminal2().getVoltageLevel().getNominalV(), (tfo.getCurrentLimits1() != null) ? tfo.getCurrentLimits1().getPermanentLimit() : Float.NaN, (tfo.getCurrentLimits2() != null) ? tfo.getCurrentLimits2().getPermanentLimit() : Float.NaN, isRegulating(tfo), correntStepPosition(tfo)) ); } }
protected static void writeNodeOrBus(Integer index, Terminal t, NetworkXmlWriterContext context) throws XMLStreamException { TopologyLevel topologyLevel = TopologyLevel.min(t.getVoltageLevel().getTopologyKind(), context.getOptions().getTopologyLevel()); switch (topologyLevel) { case NODE_BREAKER: writeNode(index, t, context); break; case BUS_BREAKER: writeBus(index, t.getBusBreakerView().getBus(), t.getBusBreakerView().getConnectableBus(), context); break; case BUS_BRANCH: writeBus(index, t.getBusView().getBus(), t.getBusView().getConnectableBus(), context); break; default: throw new AssertionError("Unexpected TopologyLevel value: " + topologyLevel); } if (index != null) { context.getWriter().writeAttribute("voltageLevelId" + index, context.getAnonymizer().anonymizeString(t.getVoltageLevel().getId())); } }
private static void extractGeneratorsData(Network network, NetworkData networkData) { for (Generator generator : network.getGenerators()) { networkData.addGeneratorData(new GeneratorData(generator.getId(), (generator.getTerminal().getBusBreakerView().getBus() != null) ? generator.getTerminal().getBusBreakerView().getBus().getId() : generator.getTerminal().getBusBreakerView().getConnectableBus().getId(), generator.getTerminal().getBusBreakerView().getBus() != null, apparentPower(generator.getTerminal()), generator.getTerminal().getP(), generator.getTerminal().getQ(), generator.getRatedS(), generator.getReactiveLimits().getMaxQ(generator.getTargetP()), generator.getReactiveLimits().getMinQ(generator.getTargetP())) // generator.getReactiveLimits().getMaxQ(generator.getTerminal().getP()), // generator.getReactiveLimits().getMinQ(generator.getTerminal().getP())) ); } }
private static void extractLinesData(Network network, NetworkData networkData) { for (Line line : network.getLines()) { if (line.getTerminal1().getVoltageLevel().getNominalV() >= 110) { networkData.addLineData(new LineData(line.getId(), (line.getTerminal1().getBusBreakerView().getBus() != null) ? line.getTerminal1().getBusBreakerView().getBus().getId() : line.getTerminal1().getBusBreakerView().getConnectableBus().getId(), (line.getTerminal2().getBusBreakerView().getBus() != null) ? line.getTerminal2().getBusBreakerView().getBus().getId() : line.getTerminal2().getBusBreakerView().getConnectableBus().getId(), line.getTerminal1().getI(), line.getTerminal2().getI(), (line.getCurrentLimits1() != null) ? line.getCurrentLimits1().getPermanentLimit() : Float.NaN, (line.getCurrentLimits2() != null) ? line.getCurrentLimits2().getPermanentLimit() : Float.NaN) ); } } }
private ConnectBusInfo findBus(Terminal terminal, String context) { ConnectBusInfo busInfo; Bus bus = null; boolean connected = true; bus = terminal.getBusBreakerView().getBus(); if (bus == null) { connected = false; bus = terminal.getBusBreakerView().getConnectableBus(); if (bus == null) { throw new RuntimeException("Cannot find connection bus"); } } busInfo = new ConnectBusInfo(bus, connected); return busInfo; }
private static void extractLoadsData(Network network, NetworkData networkData) { for (Load load : network.getLoads()) { networkData.addLoadData(new LoadData(load.getId(), (load.getTerminal().getBusBreakerView().getBus() != null) ? load.getTerminal().getBusBreakerView().getBus().getId() : load.getTerminal().getBusBreakerView().getConnectableBus().getId(), load.getTerminal().getBusBreakerView().getBus() != null, load.getTerminal().getVoltageLevel().getNominalV(), load.getTerminal().getP(), load.getTerminal().getQ()) ); } }
private static double getV(Terminal t) { Bus b = t.getBusBreakerView().getBus(); return b != null ? b.getV() : Double.NaN; }
public static Bus getBus(Terminal t, boolean noswitch) { if (noswitch) { return t.getBusView().getBus(); } else { return t.getBusBreakerView().getBus(); } }
public static boolean isConnected(Generator generator) { Bus generatorBus = generator.getTerminal().getBusBreakerView().getBus(); double voltage = getV(generator.getTerminal()); if (generatorBus != null && !Double.isNaN(voltage)) { // generator is connected return true; } return false; }
public Bus getBus(Terminal t, boolean noswitch) { if (noswitch) { return t.getBusView().getBus(); } else { return t.getBusBreakerView().getBus(); } }
public static boolean isRedispatchable(Generator generator, float redispatchLimitsPercentage) { return (generator.getTerminal().getBusBreakerView().getBus() != null) // is connected && (generator.getEnergySource() == EnergySource.HYDRO || generator.getEnergySource() == EnergySource.THERMAL) // is hydro or thermal && (generator.getTerminal().getP() < 0) // inject power && (generator.isVoltageRegulatorOn()) // has voltage regulator on && (generator.getTargetP() <= getRedispatchPMax(generator, redispatchLimitsPercentage) && generator.getTargetP() >= getRedispatchPMin(generator, redispatchLimitsPercentage)); // target P is within redispatch limits //&& (generator.getTargetP() <= generator.getMaxP() && generator.getTargetP() >= generator.getMinP()) // target P is within limits }
private static void fillNodeOrBus(InjectionAdder adder, Terminal terminal) { if (terminal.getVoltageLevel().getTopologyKind() == TopologyKind.NODE_BREAKER) { adder.setNode(terminal.getNodeBreakerView().getNode()); } else { if (terminal.isConnected()) { adder.setBus(terminal.getBusBreakerView().getBus().getId()); } adder.setConnectableBus(terminal.getBusBreakerView().getConnectableBus().getId()); } }
private static void addShuntCompensators(Network network, ConnectedPower balanceMainCC, ConnectedPower balanceOtherCC) { for (ShuntCompensator sc : network.getShuntCompensators()) { Terminal.BusBreakerView view = sc.getTerminal().getBusBreakerView(); double q = sc.getCurrentB() * Math.pow(sc.getTerminal().getVoltageLevel().getNominalV(), 2); if (view.getBus() != null) { addConnectedShunt(view, q, sc.getId(), balanceMainCC, balanceOtherCC); } else { addDisonnectedShunt(view, q, sc.getId(), balanceMainCC, balanceOtherCC); } } }