t.getLeg2().getTerminal().getBusView().getBus() != null && t.getLeg3().getTerminal().getBusView().getBus() != null) { String str = idT3W + t.getId(); numberBusIdMap.put(busNumber, str); t.getLeg2().getTerminal().getBusView().getBus() != null && t.getLeg3().getTerminal().getBusView().getBus() != null) { String str = idT3W + t.getId() + "_1"; numberBranchIdMap.put(branchNumber, str); t.getLeg2().getTerminal().getBusView().getBus() != null && t.getLeg3().getTerminal().getBusView().getBus() != null) { numberBranch = idBranchNumberMap.get(nameBranch); tapBusNumber = idBusNumberMap.get(nameBus); zBusNumber = idBusNumberMap.get(t.getLeg2().getTerminal().getBusView().getBus().getId()); loadFlowArea = defaultLoadFlowArea; typeBranch = 1; // transformer resistanceR = t.getLeg2().getR() / zBase; reactanceX = t.getLeg2().getX() / zBase; if (Math.abs(reactanceX) < defaultReactance) { if (reactanceX > 0.0) { ratingA = t.getLeg2().getCurrentLimits().getPermanentLimit() * t.getLeg2().getRatedU() / 1e3; ratingB = ratingA; ratingC = ratingA; transformerTurnsRatio = 1.0 / t.getLeg2().getRatioTapChanger().getCurrentStep().getRho(); transformerAngle = 0.0; branch = new CFPFBranch(numberBranch, nameBranch, tapBusNumber, zBusNumber,
wt3.getLeg1().getTerminal().getVoltageLevel().getSubstation().getGeographicalTags()) && Collections.disjoint(regions, wt3.getLeg2().getTerminal().getVoltageLevel().getSubstation().getGeographicalTags()) && Collections.disjoint(regions, wt3.getLeg3().getTerminal().getVoltageLevel().getSubstation().getGeographicalTags())) { continue; wt3.getLeg1().getTerminal().getVoltageLevel().getSubstation().getCountry().toString()) && !countries.contains( wt3.getLeg2().getTerminal().getVoltageLevel().getSubstation().getCountry().toString()) && !countries.contains( wt3.getLeg3().getTerminal().getVoltageLevel().getSubstation().getCountry().toString())) { continue; String leg2Id = wt3.getId() + "__TO__" + wt3.getLeg2().getTerminal().getVoltageLevel().getId(); String leg3Id = wt3.getId() + "__TO__" + wt3.getLeg3().getTerminal().getVoltageLevel().getId();
valueMap.put(new HistoDbNetworkAttributeId(twt.getId(), twt.getLeg2().getTerminal().getVoltageLevel().getId(), HistoDbAttr.RTC), twt.getLeg2().getRatioTapChanger().getTapPosition()); valueMap.put(new HistoDbNetworkAttributeId(twt.getId(), twt.getLeg3().getTerminal().getVoltageLevel().getId(), HistoDbAttr.RTC), twt.getLeg3().getRatioTapChanger().getTapPosition());
.add(); twt.getLeg2().newRatioTapChanger() .beginStep() .setRho(0.9) .add(); twt.getLeg3().newRatioTapChanger() .beginStep() .setRho(0.9)
private void writeThreeWindingsTransformers(AmplExportContext context, TableFormatter formatter) throws IOException { for (ThreeWindingsTransformer twt : network.getThreeWindingsTransformers()) { Terminal t1 = twt.getLeg1().getTerminal(); Terminal t2 = twt.getLeg2().getTerminal(); Terminal t3 = twt.getLeg3().getTerminal(); Bus bus1 = AmplUtil.getBus(t1); Bus bus2 = AmplUtil.getBus(t2); double g1 = twt.getLeg1().getG() * zb1; double b1 = twt.getLeg1().getB() * zb1; double r2 = twt.getLeg2().getR() / zb2; double x2 = twt.getLeg2().getX() / zb2; double r3 = twt.getLeg3().getR() / zb3; double x3 = twt.getLeg3().getX() / zb3; double ratedU1 = twt.getLeg1().getRatedU(); double ratedU2 = twt.getLeg2().getRatedU(); double ratedU3 = twt.getLeg3().getRatedU(); double ratio2 = ratedU1 / ratedU2; double ratio3 = ratedU1 / ratedU3; RatioTapChanger rtc2 = twt.getLeg2().getRatioTapChanger(); RatioTapChanger rtc3 = twt.getLeg2().getRatioTapChanger(); int rtc2Num = rtc2 != null ? mapper.getInt(AmplSubset.RATIO_TAP_CHANGER, id2) : -1; int rtc3Num = rtc3 != null ? mapper.getInt(AmplSubset.RATIO_TAP_CHANGER, id3) : -1; .writeCell(t2.getQ()) .writeCell(Double.NaN) .writeCell(getPermanentLimit(twt.getLeg2().getCurrentLimits())) .writeCell(Double.NaN) .writeCell(false)
.add(); addTerminalMapping(tn1, transfo.getLeg1().getTerminal()); addTerminalMapping(tn2, transfo.getLeg2().getTerminal()); addTerminalMapping(tn3, transfo.getLeg3().getTerminal()); ImmutableMap.of(t2, transfo.getLeg2().getTerminal()))); // TODO true/false? ImmutableMap.of(t3, transfo.getLeg3().getTerminal()))); // TODO true/false? transfo.getLeg2().getTerminal().setP(svpf2.getP()).setQ(svpf2.getQ()); transfo.getLeg3().getTerminal().setP(svpf3.getP()).setQ(svpf3.getQ());
tx.getLeg2().getTerminal(), tx.getLeg3().getTerminal());
if (thwt.getLeg1().getTerminal() == terminal) { side = ThreeWindingsTransformer.Side.ONE; } else if (thwt.getLeg2().getTerminal() == terminal) { side = ThreeWindingsTransformer.Side.TWO; } else {
p2 = twt.getLeg2().getTerminal().getP(); q2 = twt.getLeg2().getTerminal().getQ(); p3 = twt.getLeg3().getTerminal().getP(); q3 = twt.getLeg3().getTerminal().getQ(); r2 = adjustedR(twt.getLeg2()); x2 = adjustedX(twt.getLeg2()); ratedU2 = twt.getLeg2().getRatedU(); r3 = adjustedR(twt.getLeg3()); x3 = adjustedX(twt.getLeg3()); ratedU3 = twt.getLeg3().getRatedU(); connected2 = twt.getLeg2().getTerminal().isConnected(); connected3 = twt.getLeg3().getTerminal().isConnected(); mainComponent1 = isMainComponent(twt.getLeg1()); mainComponent2 = isMainComponent(twt.getLeg2());
Mockito.when(leg2.getR()).thenReturn(R2); Mockito.when(leg2.getX()).thenReturn(X2); Mockito.when(leg2.getRatedU()).thenReturn(RATED_U2); Mockito.when(leg2.getTerminal()).thenReturn(leg2Terminal); Mockito.when(leg3.getR()).thenReturn(R3); Mockito.when(leg3.getX()).thenReturn(X3); Mockito.when(leg3.getRatedU()).thenReturn(RATED_U3); Mockito.when(leg3.getTerminal()).thenReturn(leg3Terminal);
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); });
RatioTapChanger rtc2 = twt.getLeg2().getRatioTapChanger(); if (rtc2 != null) { String rtc2Id = twt.getId() + AmplConstants.LEG2_SUFFIX; writeRatioTapChanger(formatter, rtc2Id, rtc2, tcs2Id); RatioTapChanger rtc3 = twt.getLeg3().getRatioTapChanger(); if (rtc3 != null) { String rtc3Id = twt.getId() + AmplConstants.LEG3_SUFFIX;
break; case TWO: t = twt.getLeg2().getTerminal(); break; case THREE: t = twt.getLeg3().getTerminal(); break; default:
twt.getLeg2().getTerminal().setP(Float.NaN).setQ(Float.NaN); twt.getLeg3().getTerminal().setP(Float.NaN).setQ(Float.NaN);
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(); } } }
private Void readRatioTapChanger(String[] tokens) { int num = Integer.parseInt(tokens[1]); int tap = Integer.parseInt(tokens[2]); String id = mapper.getId(AmplSubset.RATIO_TAP_CHANGER, num); if (id.endsWith(AmplConstants.LEG2_SUFFIX) || id.endsWith(AmplConstants.LEG3_SUFFIX)) { ThreeWindingsTransformer twt = network.getThreeWindingsTransformer(id.substring(0, id.indexOf(AmplConstants.LEG2_SUFFIX))); if (twt == null) { throw new AmplException("Invalid three windings transformer id '" + id + "'"); } if (id.endsWith(AmplConstants.LEG2_SUFFIX)) { RatioTapChanger rtc2 = twt.getLeg2().getRatioTapChanger(); rtc2.setTapPosition(rtc2.getLowTapPosition() + tap - 1); } else if (id.endsWith(AmplConstants.LEG3_SUFFIX)) { RatioTapChanger rtc3 = twt.getLeg3().getRatioTapChanger(); rtc3.setTapPosition(rtc3.getLowTapPosition() + tap - 1); } else { throw new AssertionError(); } } else { TwoWindingsTransformer twt = network.getTwoWindingsTransformer(id); if (twt == null) { throw new AmplException("Invalid two windings transformer id '" + id + "'"); } RatioTapChanger rtc = twt.getRatioTapChanger(); rtc.setTapPosition(rtc.getLowTapPosition() + tap - 1); } return null; }
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 fillThreeWindingsTransformers(StringToIntMapper<AmplSubset> mapper, Network network) { for (ThreeWindingsTransformer twt : network.getThreeWindingsTransformers()) { mapper.newInt(AmplSubset.VOLTAGE_LEVEL, twt.getId()); mapper.newInt(AmplSubset.BUS, twt.getId()); mapper.newInt(AmplSubset.THREE_WINDINGS_TRANSFO, twt.getId()); mapper.newInt(AmplSubset.BRANCH, twt.getId() + AmplConstants.LEG1_SUFFIX); mapper.newInt(AmplSubset.BRANCH, twt.getId() + AmplConstants.LEG2_SUFFIX); mapper.newInt(AmplSubset.BRANCH, twt.getId() + AmplConstants.LEG3_SUFFIX); if (twt.getLeg2().getRatioTapChanger() != null) { mapper.newInt(AmplSubset.TAP_CHANGER_TABLE, twt.getId() + "_leg2_ratio_table"); mapper.newInt(AmplSubset.RATIO_TAP_CHANGER, twt.getId() + AmplConstants.LEG2_SUFFIX); } if (twt.getLeg3().getRatioTapChanger() != null) { mapper.newInt(AmplSubset.TAP_CHANGER_TABLE, twt.getId() + "_leg3_ratio_table"); mapper.newInt(AmplSubset.RATIO_TAP_CHANGER, twt.getId() + AmplConstants.LEG3_SUFFIX); } // limits if (twt.getLeg1().getCurrentLimits() != null) { createLimitsIds(mapper, twt.getLeg1().getCurrentLimits(), twt.getId() + AmplConstants.LEG1_SUFFIX, ""); } if (twt.getLeg2().getCurrentLimits() != null) { createLimitsIds(mapper, twt.getLeg2().getCurrentLimits(), twt.getId() + AmplConstants.LEG2_SUFFIX, ""); } if (twt.getLeg3().getCurrentLimits() != null) { createLimitsIds(mapper, twt.getLeg3().getCurrentLimits(), twt.getId() + AmplConstants.LEG3_SUFFIX, ""); } } }
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 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; }