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 double getV(Terminal t) { Bus b = t.getBusBreakerView().getBus(); return b != null ? b.getV() : Double.NaN; }
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; }
public 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 static Bus getBus(Terminal t, boolean noswitch) { if (noswitch) { return t.getBusView().getBus(); } else { return t.getBusBreakerView().getBus(); } }
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); }
@Override protected void writeSubElements(Generator g, VoltageLevel vl, NetworkXmlWriterContext context) throws XMLStreamException { if (g.getRegulatingTerminal() != null && !Objects.equals(g.getRegulatingTerminal().getBusBreakerView().getConnectableBus(), g.getTerminal().getBusBreakerView().getConnectableBus())) { writeTerminalRef(g.getRegulatingTerminal(), context, "regulatingTerminal"); } ReactiveLimitsXml.INSTANCE.write(g, context); }
public boolean test(Connectable<?> connectable) { if (buses == null) { return true; } for (Terminal t : connectable.getTerminals()) { Bus b = options.getTopologyLevel() == TopologyLevel.BUS_BRANCH ? t.getBusView().getConnectableBus() : t.getBusBreakerView().getConnectableBus(); if (b != null && !buses.contains(b.getId())) { return false; } } return true; } }
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 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()); } }
public static void printGeneratorsSetpointDiff(Network network, Logger logger) { for (Generator g : network.getGenerators()) { double dp = Math.abs(g.getTerminal().getP() + g.getTargetP()); double dq = Math.abs(g.getTerminal().getQ() + g.getTargetQ()); double dv = Math.abs(g.getTerminal().getBusBreakerView().getConnectableBus().getV() - g.getTargetV()); if (dp > 1 || dq > 5 || dv > 0.1) { logger.warn("Generator {}: ({}, {}, {}) ({}, {}, {}) -> ({}, {}, {})", g.getId(), dp, dq, dv, -g.getTargetP(), -g.getTargetQ(), g.getTargetV(), g.getTerminal().getP(), g.getTerminal().getQ(), g.getTerminal().getBusBreakerView().getConnectableBus().getV()); } } }
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 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); } } }
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 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 boolean removeSwitchandBus(VoltageLevel vl, Switch s, Bus toRemove, Bus toKeep) { List<Terminal> terminals = getTerminals(toRemove); if (terminals.size() <= 1) { terminals.forEach(t -> { boolean reconnect = false; if (t.isConnected()) { t.disconnect(); reconnect = true; } t.getBusBreakerView().setConnectableBus(toKeep.getId()); if (!s.isOpen() && reconnect) { t.connect(); } }); vl.getBusBreakerView().removeSwitch(s.getId()); vl.getBusBreakerView().removeBus(toRemove.getId()); return true; } return false; }
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 }