@Override protected boolean hasSubElements(ThreeWindingsTransformer twt) { return twt.getLeg2().getRatioTapChanger() != null || twt.getLeg3().getRatioTapChanger() != null || twt.getLeg1().getCurrentLimits() != null || twt.getLeg2().getCurrentLimits() != null || twt.getLeg3().getCurrentLimits() != null; }
private void writeThreeWindingsTransformerCurrentLimits(TableFormatter formatter) throws IOException { for (ThreeWindingsTransformer twt : network.getThreeWindingsTransformers()) { if (twt.getLeg1().getCurrentLimits() != null) { String branchId = twt.getId() + AmplConstants.LEG1_SUFFIX; writeTemporaryCurrentLimits(twt.getLeg1().getCurrentLimits(), formatter, branchId, false, ""); } if (twt.getLeg2().getCurrentLimits() != null) { String branchId = twt.getId() + AmplConstants.LEG2_SUFFIX; writeTemporaryCurrentLimits(twt.getLeg2().getCurrentLimits(), formatter, branchId, true, ""); } if (twt.getLeg3().getCurrentLimits() != null) { String branchId = twt.getId() + AmplConstants.LEG3_SUFFIX; writeTemporaryCurrentLimits(twt.getLeg3().getCurrentLimits(), formatter, branchId, true, ""); } } }
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); } } }
@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 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; }
ThreeWindingsTransformer thwt = (ThreeWindingsTransformer) connectable; ThreeWindingsTransformer.Side side; if (thwt.getLeg1().getTerminal() == terminal) { side = ThreeWindingsTransformer.Side.ONE; } else if (thwt.getLeg2().getTerminal() == terminal) { side = ThreeWindingsTransformer.Side.TWO; } else {
private RatioTapChangerAdder adder() { if (tx2 != null) { return tx2.newRatioTapChanger(); } else if (tx3 != null) { int side = context.tapChangerTransformers().whichSide(id); if (side == 1) { // No supported in IIDM model return null; } else if (side == 2) { return tx3.getLeg2().newRatioTapChanger(); } else if (side == 3) { return tx3.getLeg2().newRatioTapChanger(); } } return null; }
String reason0 = String.format( "Not supported at end 1 of 3wtx. txId 'name' 'substation': %s '%s' '%s'", tx3.getId(), tx3.getName(), tx3.getSubstation().getName());
String vlId = getThreeWindingsTransformerMiddleVoltageLevelId(twt); int num = mapper.getInt(AmplSubset.VOLTAGE_LEVEL, vlId); Terminal t1 = twt.getLeg1().getTerminal(); VoltageLevel vl1 = t1.getVoltageLevel(); formatter.writeCell(variantIndex)
private static String getThreeWindingsTransformerMiddleBusId(ThreeWindingsTransformer twt) { return twt.getId(); // same id as the transformer }
if (network.getThreeWindingsTransformer(equipment).getSubstation().getTso() != null) { tsos.add(network.getThreeWindingsTransformer(equipment).getSubstation().getTso());
RatioTapChanger rtc2 = twt.getLeg2().getRatioTapChanger(); if (rtc2 != null) { String rtc2Id = twt.getId() + AmplConstants.LEG2_SUFFIX; String tcs2Id = twt.getId() + "_leg2_ratio_table"; writeRatioTapChanger(formatter, rtc2Id, rtc2, tcs2Id); RatioTapChanger rtc3 = twt.getLeg3().getRatioTapChanger(); if (rtc3 != null) { String rtc3Id = twt.getId() + AmplConstants.LEG3_SUFFIX; String tcs3Id = twt.getId() + "_leg3_ratio_table"; writeRatioTapChanger(formatter, rtc3Id, rtc3, tcs3Id);
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; }
String reason0 = String.format( "Not supported for 3wtx. txId 'name' 'substation': %s '%s' '%s'", tx3.getId(), tx3.getName(), tx3.getSubstation().getName());
private static String getThreeWindingsTransformerMiddleVoltageLevelId(ThreeWindingsTransformer twt) { return twt.getId(); // same id as the transformer }
@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(); } }
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, ""); } } }
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());
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(); } } }