protected static void addNextTerminals(TerminalExt otherTerminal, List<TerminalExt> nextTerminals) { Objects.requireNonNull(otherTerminal); Objects.requireNonNull(nextTerminals); Connectable otherConnectable = otherTerminal.getConnectable(); if (otherConnectable instanceof Branch) { Branch branch = (Branch) otherConnectable; if (branch.getTerminal1() == otherTerminal) { nextTerminals.add((TerminalExt) branch.getTerminal2()); } else if (branch.getTerminal2() == otherTerminal) { nextTerminals.add((TerminalExt) branch.getTerminal1()); } else { throw new AssertionError(); } } else if (otherConnectable instanceof ThreeWindingsTransformer) { ThreeWindingsTransformer ttc = (ThreeWindingsTransformer) otherConnectable; if (ttc.getLeg1().getTerminal() == otherTerminal) { nextTerminals.add((TerminalExt) ttc.getLeg2().getTerminal()); nextTerminals.add((TerminalExt) ttc.getLeg3().getTerminal()); } else if (ttc.getLeg2().getTerminal() == otherTerminal) { nextTerminals.add((TerminalExt) ttc.getLeg1().getTerminal()); nextTerminals.add((TerminalExt) ttc.getLeg3().getTerminal()); } else if (ttc.getLeg3().getTerminal() == otherTerminal) { nextTerminals.add((TerminalExt) ttc.getLeg1().getTerminal()); nextTerminals.add((TerminalExt) ttc.getLeg2().getTerminal()); } else { throw new AssertionError(); } } }
Mockito.when(leg2.getX()).thenReturn(X2); Mockito.when(leg2.getRatedU()).thenReturn(RATED_U2); Mockito.when(leg2.getTerminal()).thenReturn(leg2Terminal); Mockito.when(leg3.getX()).thenReturn(X3); Mockito.when(leg3.getRatedU()).thenReturn(RATED_U3); Mockito.when(leg3.getTerminal()).thenReturn(leg3Terminal);
break; case TWO: t = twt.getLeg2().getTerminal(); break; case THREE: t = twt.getLeg3().getTerminal(); break; default:
p2 = twt.getLeg2().getTerminal().getP(); q2 = twt.getLeg2().getTerminal().getQ(); p3 = twt.getLeg3().getTerminal().getP(); q3 = twt.getLeg3().getTerminal().getQ(); connected2 = twt.getLeg2().getTerminal().isConnected(); connected3 = twt.getLeg3().getTerminal().isConnected(); mainComponent1 = isMainComponent(twt.getLeg1()); mainComponent2 = isMainComponent(twt.getLeg2());
if (thwt.getLeg1().getTerminal() == terminal) { side = ThreeWindingsTransformer.Side.ONE; } else if (thwt.getLeg2().getTerminal() == terminal) { side = ThreeWindingsTransformer.Side.TWO; } else {
parameters.isApplyReactanceCorrection()); completeTerminalData(twt.getLeg1().getTerminal(), ThreeWindingsTransformer.Side.ONE, twtData); completeTerminalData(twt.getLeg2().getTerminal(), ThreeWindingsTransformer.Side.TWO, twtData); completeTerminalData(twt.getLeg3().getTerminal(), ThreeWindingsTransformer.Side.THREE, twtData); });
twt.getLeg2().getTerminal().setP(Float.NaN).setQ(Float.NaN); twt.getLeg3().getTerminal().setP(Float.NaN).setQ(Float.NaN);
private boolean readThreeWindingsTransformerBranch(String id, double p, double q, int busNum) { if (id.endsWith(AmplConstants.LEG1_SUFFIX)) { ThreeWindingsTransformer tht = network.getThreeWindingsTransformer(id.substring(0, id.indexOf(AmplConstants.LEG1_SUFFIX))); if (tht != null) { tht.getLeg1().getTerminal().setP(p).setQ(q); busConnection(tht.getLeg1().getTerminal(), busNum); } else { throw new AmplException("Invalid branch (leg1) id '" + id + "'"); } } else if (id.endsWith(AmplConstants.LEG2_SUFFIX)) { ThreeWindingsTransformer tht = network.getThreeWindingsTransformer(id.substring(0, id.indexOf(AmplConstants.LEG2_SUFFIX))); if (tht != null) { tht.getLeg2().getTerminal().setP(p).setQ(q); busConnection(tht.getLeg1().getTerminal(), busNum); } else { throw new AmplException("Invalid branch (leg2) id '" + id + "'"); } } else if (id.endsWith(AmplConstants.LEG3_SUFFIX)) { ThreeWindingsTransformer tht = network.getThreeWindingsTransformer(id.substring(0, id.indexOf(AmplConstants.LEG3_SUFFIX))); if (tht != null) { tht.getLeg3().getTerminal().setP(p).setQ(q); busConnection(tht.getLeg1().getTerminal(), busNum); } else { throw new AmplException("Invalid branch (leg3) id '" + id + "'"); } } else { return false; } return true; }
private static void extractTfo3WData(Network network, NetworkData networkData) { for (ThreeWindingsTransformer tfo : network.getThreeWindingsTransformers()) { networkData.addTfo3WData(new Tfo3WData(tfo.getId(), (tfo.getLeg1().getTerminal().getBusBreakerView().getBus() != null) ? tfo.getLeg1().getTerminal().getBusBreakerView().getBus().getId() : tfo.getLeg1().getTerminal().getBusBreakerView().getConnectableBus().getId(), (tfo.getLeg2().getTerminal().getBusBreakerView().getBus() != null) ? tfo.getLeg2().getTerminal().getBusBreakerView().getBus().getId() : tfo.getLeg2().getTerminal().getBusBreakerView().getConnectableBus().getId(), (tfo.getLeg3().getTerminal().getBusBreakerView().getBus() != null) ? tfo.getLeg3().getTerminal().getBusBreakerView().getBus().getId() : tfo.getLeg3().getTerminal().getBusBreakerView().getConnectableBus().getId(), apparentPower(tfo.getLeg1().getTerminal()), apparentPower(tfo.getLeg2().getTerminal()), apparentPower(tfo.getLeg3().getTerminal()), tfo.getLeg1().getTerminal().getVoltageLevel().getNominalV(), tfo.getLeg1().getTerminal().getVoltageLevel().getNominalV(), tfo.getLeg3().getTerminal().getVoltageLevel().getNominalV(), (tfo.getLeg1().getCurrentLimits() != null) ? tfo.getLeg1().getCurrentLimits().getPermanentLimit() : Float.NaN, (tfo.getLeg2().getCurrentLimits() != null) ? tfo.getLeg2().getCurrentLimits().getPermanentLimit() : Float.NaN, (tfo.getLeg3().getCurrentLimits() != null) ? tfo.getLeg3().getCurrentLimits().getPermanentLimit() : Float.NaN) ); } }
@Override protected void writeRootElementAttributes(ThreeWindingsTransformer twt, Substation s, NetworkXmlWriterContext context) throws XMLStreamException { XmlUtil.writeDouble("r1", twt.getLeg1().getR(), context.getWriter()); XmlUtil.writeDouble("x1", twt.getLeg1().getX(), context.getWriter()); XmlUtil.writeDouble("g1", twt.getLeg1().getG(), context.getWriter()); XmlUtil.writeDouble("b1", twt.getLeg1().getB(), context.getWriter()); XmlUtil.writeDouble("ratedU1", twt.getLeg1().getRatedU(), context.getWriter()); XmlUtil.writeDouble("r2", twt.getLeg2().getR(), context.getWriter()); XmlUtil.writeDouble("x2", twt.getLeg2().getX(), context.getWriter()); XmlUtil.writeDouble("ratedU2", twt.getLeg2().getRatedU(), context.getWriter()); XmlUtil.writeDouble("r3", twt.getLeg3().getR(), context.getWriter()); XmlUtil.writeDouble("x3", twt.getLeg3().getX(), context.getWriter()); XmlUtil.writeDouble("ratedU3", twt.getLeg3().getRatedU(), context.getWriter()); writeNodeOrBus(1, twt.getLeg1().getTerminal(), context); writeNodeOrBus(2, twt.getLeg2().getTerminal(), context); writeNodeOrBus(3, twt.getLeg3().getTerminal(), context); if (context.getOptions().isWithBranchSV()) { writePQ(1, twt.getLeg1().getTerminal(), context.getWriter()); writePQ(2, twt.getLeg2().getTerminal(), context.getWriter()); writePQ(3, twt.getLeg3().getTerminal(), context.getWriter()); } }
@Override protected ThreeWindingsTransformer readRootElementAttributes(ThreeWindingsTransformerAdder adder, NetworkXmlReaderContext context) { double r1 = XmlUtil.readDoubleAttribute(context.getReader(), "r1"); double x1 = XmlUtil.readDoubleAttribute(context.getReader(), "x1"); double g1 = XmlUtil.readDoubleAttribute(context.getReader(), "g1"); double b1 = XmlUtil.readDoubleAttribute(context.getReader(), "b1"); double ratedU1 = XmlUtil.readDoubleAttribute(context.getReader(), "ratedU1"); double r2 = XmlUtil.readDoubleAttribute(context.getReader(), "r2"); double x2 = XmlUtil.readDoubleAttribute(context.getReader(), "x2"); double ratedU2 = XmlUtil.readDoubleAttribute(context.getReader(), "ratedU2"); double r3 = XmlUtil.readDoubleAttribute(context.getReader(), "r3"); double x3 = XmlUtil.readDoubleAttribute(context.getReader(), "x3"); double ratedU3 = XmlUtil.readDoubleAttribute(context.getReader(), "ratedU3"); LegAdder legAdder1 = adder.newLeg1().setR(r1).setX(x1).setG(g1).setB(b1).setRatedU(ratedU1); LegAdder legAdder2 = adder.newLeg2().setR(r2).setX(x2).setRatedU(ratedU2); LegAdder legAdder3 = adder.newLeg3().setR(r3).setX(x3).setRatedU(ratedU3); readNodeOrBus(1, legAdder1, context); readNodeOrBus(2, legAdder2, context); readNodeOrBus(3, legAdder3, context); legAdder1.add(); legAdder2.add(); legAdder3.add(); ThreeWindingsTransformer twt = adder.add(); readPQ(1, twt.getLeg1().getTerminal(), context.getReader()); readPQ(2, twt.getLeg2().getTerminal(), context.getReader()); readPQ(3, twt.getLeg3().getTerminal(), context.getReader()); return twt; }
@Override public <T extends Connectable> T getConnectable(String id, Class<T> aClass) { // the fastest way to get the equipment is to look in the object store // and then check if it is connected to this substation T connectable = substation.getNetwork().getObjectStore().get(id, aClass); if (connectable == null) { return null; } else if (connectable instanceof Injection) { return ((Injection) connectable).getTerminal().getVoltageLevel() == this ? connectable : null; } else if (connectable instanceof Branch) { return ((Branch) connectable).getTerminal1().getVoltageLevel() == this || ((Branch) connectable).getTerminal2().getVoltageLevel() == this ? connectable : null; } else if (connectable instanceof ThreeWindingsTransformer) { return ((ThreeWindingsTransformer) connectable).getLeg1().getTerminal().getVoltageLevel() == this || ((ThreeWindingsTransformer) connectable).getLeg2().getTerminal().getVoltageLevel() == this || ((ThreeWindingsTransformer) connectable).getLeg3().getTerminal().getVoltageLevel() == this ? connectable : null; } else { throw new AssertionError(); } }
private static int getThreeWindingsTransformerMiddleBusComponentNum(AmplExportContext context, ThreeWindingsTransformer twt) { Terminal t1 = twt.getLeg1().getTerminal(); Terminal t2 = twt.getLeg2().getTerminal(); Terminal t3 = twt.getLeg3().getTerminal(); Bus b1 = AmplUtil.getBus(t1); Bus b2 = AmplUtil.getBus(t2); Bus b3 = AmplUtil.getBus(t3); int middleCcNum; if (b1 != null) { middleCcNum = ConnectedComponents.getCcNum(b1); } else if (b2 != null) { middleCcNum = ConnectedComponents.getCcNum(b2); } else if (b3 != null) { middleCcNum = ConnectedComponents.getCcNum(b3); } else { middleCcNum = context.otherCcNum--; } return middleCcNum; }
private void writeThreeWindingsTransformerTapChangerTable(TableFormatter formatter) throws IOException { for (ThreeWindingsTransformer twt : network.getThreeWindingsTransformers()) { RatioTapChanger rtc2 = twt.getLeg2().getRatioTapChanger(); if (rtc2 != null) { String id = twt.getId() + "_leg2_ratio_table"; Terminal t2 = twt.getLeg2().getTerminal(); double vb2 = t2.getVoltageLevel().getNominalV(); double zb2 = vb2 * vb2 / AmplConstants.SB; writeRatioTapChanger(formatter, id, zb2, twt.getLeg2().getX(), rtc2); } RatioTapChanger rtc3 = twt.getLeg3().getRatioTapChanger(); if (rtc3 != null) { String id = twt.getId() + "_leg3_ratio_table"; Terminal t3 = twt.getLeg3().getTerminal(); double vb3 = t3.getVoltageLevel().getNominalV(); double zb3 = vb3 * vb3 / AmplConstants.SB; writeRatioTapChanger(formatter, id, zb3, twt.getLeg3().getX(), rtc3); } } }
private Terminal terminal() { int side = context.tapChangerTransformers().whichSide(id); if (tx2 != null) { if (side == 1) { return tx2.getTerminal1(); } else if (side == 2) { return tx2.getTerminal2(); } } else if (tx3 != null) { if (side == 1) { // invalid } else if (side == 2) { return tx3.getLeg2().getTerminal(); } else if (side == 3) { return tx3.getLeg3().getTerminal(); } } return null; }
protected static void readRatioTapChanger(int leg, ThreeWindingsTransformer.Leg2or3 twl, NetworkXmlReaderContext context) throws XMLStreamException { readRatioTapChanger("ratioTapChanger" + leg, twl.newRatioTapChanger(), twl.getTerminal(), context); }
@Override public void visitThreeWindingsTransformer(ThreeWindingsTransformer transformer, ThreeWindingsTransformer.Side side) { switch (side) { case ONE: visitTerminal(transformer.getLeg1().getTerminal()); break; case TWO: visitTerminal(transformer.getLeg2().getTerminal()); break; case THREE: visitTerminal(transformer.getLeg3().getTerminal()); break; default: throw new AssertionError(); } }
/** * Return true if the given {@link ThreeWindingsTransformer} should be kept in the network, false otherwise */ protected boolean test(ThreeWindingsTransformer transformer) { Objects.requireNonNull(transformer); VoltageLevel vl1 = transformer.getLeg1().getTerminal().getVoltageLevel(); VoltageLevel vl2 = transformer.getLeg2().getTerminal().getVoltageLevel(); VoltageLevel vl3 = transformer.getLeg3().getTerminal().getVoltageLevel(); return test(vl1) && test(vl2) && test(vl3); }
@Override protected void reduce(ThreeWindingsTransformer transformer) { VoltageLevel vl1 = transformer.getLeg1().getTerminal().getVoltageLevel(); VoltageLevel vl2 = transformer.getLeg2().getTerminal().getVoltageLevel(); VoltageLevel vl3 = transformer.getLeg3().getTerminal().getVoltageLevel(); if (getPredicate().test(vl1) || getPredicate().test(vl2) || getPredicate().test(vl3)) { throw new UnsupportedOperationException("Reduction of three-windings transformers is not supported"); } else { transformer.remove(); } observers.forEach(o -> o.transformerRemoved(transformer)); }
private static void checkRemovability(Substation substation, ThreeWindingsTransformer twt) { Substation s1 = twt.getLeg1().getTerminal().getVoltageLevel().getSubstation(); Substation s2 = twt.getLeg2().getTerminal().getVoltageLevel().getSubstation(); Substation s3 = twt.getLeg3().getTerminal().getVoltageLevel().getSubstation(); if ((s1 != substation) || (s2 != substation) || (s3 != substation)) { throw createIsolationException(substation); } }