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; }
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;
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());
ratingB = ratingA; ratingC = ratingA; transformerTurnsRatio = 1.0 / t.getLeg2().getRatioTapChanger().getCurrentStep().getRho(); transformerAngle = 0.0; branch = new CFPFBranch(numberBranch, nameBranch, tapBusNumber, zBusNumber, ratingB = ratingA; ratingC = ratingA; transformerTurnsRatio = 1.0 / t.getLeg3().getRatioTapChanger().getCurrentStep().getRho(); transformerAngle = 0.0; branch = new CFPFBranch(numberBranch, nameBranch, tapBusNumber, zBusNumber,
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;
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 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 writeSubElements(ThreeWindingsTransformer twt, Substation s, NetworkXmlWriterContext context) throws XMLStreamException { RatioTapChanger rtc2 = twt.getLeg2().getRatioTapChanger(); if (rtc2 != null) { writeRatioTapChanger("ratioTapChanger2", rtc2, context); } RatioTapChanger rtc3 = twt.getLeg3().getRatioTapChanger(); if (rtc3 != null) { writeRatioTapChanger("ratioTapChanger3", rtc3, context); } if (twt.getLeg1().getCurrentLimits() != null) { writeCurrentLimits(1, twt.getLeg1().getCurrentLimits(), context.getWriter()); } if (twt.getLeg2().getCurrentLimits() != null) { writeCurrentLimits(2, twt.getLeg2().getCurrentLimits(), context.getWriter()); } if (twt.getLeg3().getCurrentLimits() != null) { writeCurrentLimits(3, twt.getLeg3().getCurrentLimits(), context.getWriter()); } }
private static double adjustedX(Leg2or3 leg) { double x = leg.getX(); if (leg.getRatioTapChanger() != null) { RatioTapChangerStep step = leg.getRatioTapChanger().getCurrentStep(); if (step != null) { x *= 1 + step.getX() / 100; } } return x; }
private static double adjustedR(Leg2or3 leg) { double r = leg.getR(); if (leg.getRatioTapChanger() != null) { RatioTapChangerStep step = leg.getRatioTapChanger().getCurrentStep(); if (step != null) { r *= 1 + step.getR() / 100; } } return r; }
@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 static double rho(Leg2or3 leg, double ratedU0) { double rho = ratedU0 / leg.getRatedU(); if (leg.getRatioTapChanger() != null) { RatioTapChangerStep step = leg.getRatioTapChanger().getCurrentStep(); if (step != null) { rho *= step.getRho(); } } return rho; }