if (t.getLeg1().getTerminal().getBusView().getBus() != null && t.getLeg2().getTerminal().getBusView().getBus() != null && t.getLeg3().getTerminal().getBusView().getBus() != null) { if (t.getLeg1().getTerminal().getBusView().getBus() != null && t.getLeg2().getTerminal().getBusView().getBus() != null && t.getLeg3().getTerminal().getBusView().getBus() != null) { if (t.getLeg1().getTerminal().getBusView().getBus() != null && t.getLeg2().getTerminal().getBusView().getBus() != null && t.getLeg3().getTerminal().getBusView().getBus() != null) { double zBase = Math.pow(t.getLeg1().getTerminal().getBusView().getBus().getVoltageLevel().getNominalV(), 2) / baseMVA; double baseKV = t.getLeg1().getTerminal().getBusView().getBus().getVoltageLevel().getNominalV(); String nameBus = idT3W + t.getId(); int numberBus = idBusNumberMap.get(nameBus); int loadFlowAreaNumber = defaultLoadFlowArea; int typeBus = 0; // Default -> PQ bus double minimumVoltage = t.getLeg1().getTerminal().getBusView().getBus().getVoltageLevel().getLowVoltageLimit() / baseKV; double maximumVoltage = t.getLeg1().getTerminal().getBusView().getBus().getVoltageLevel().getHighVoltageLimit() / baseKV; if (Double.isNaN(minimumVoltage)) { minimumVoltage = defaultMinimumVoltage; double desiredVoltage = t.getLeg1().getTerminal().getBusView().getBus().getV() / baseKV; double desiredAngle = t.getLeg1().getTerminal().getBusView().getBus().getAngle(); double generationMW = 0.0; double generationMVAR = 0.0; double minimumGenerationMVAR = 0.0;
wt3.getLeg1().getTerminal().getVoltageLevel().getSubstation().getGeographicalTags()) && Collections.disjoint(regions, wt3.getLeg2().getTerminal().getVoltageLevel().getSubstation().getGeographicalTags()) wt3.getLeg1().getTerminal().getVoltageLevel().getSubstation().getCountry().toString()) && !countries.contains( wt3.getLeg2().getTerminal().getVoltageLevel().getSubstation().getCountry().toString()) String leg1Id = wt3.getId() + "__TO__" + wt3.getLeg1().getTerminal().getVoltageLevel().getId(); String leg2Id = wt3.getId() + "__TO__" + wt3.getLeg2().getTerminal().getVoltageLevel().getId(); String leg3Id = wt3.getId() + "__TO__" + wt3.getLeg3().getTerminal().getVoltageLevel().getId();
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 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(); double zb2 = vb2 * vb2 / AmplConstants.SB; double zb3 = vb3 * vb3 / AmplConstants.SB; double r1 = twt.getLeg1().getR() / zb1; double x1 = twt.getLeg1().getX() / zb1; 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(); .writeCell(t1.getQ()) .writeCell(Double.NaN) .writeCell(getPermanentLimit(twt.getLeg1().getCurrentLimits())) .writeCell(false) .writeCell(faultNum)
.add() .add(); addTerminalMapping(tn1, transfo.getLeg1().getTerminal()); addTerminalMapping(tn2, transfo.getLeg2().getTerminal()); addTerminalMapping(tn3, transfo.getLeg3().getTerminal()); transfo.getLeg1().getTerminal().setP(svpf1.getP()).setQ(svpf1.getQ());
tx.getLeg1().getTerminal(), tx.getLeg2().getTerminal(), tx.getLeg3().getTerminal());
ThreeWindingsTransformer thwt = (ThreeWindingsTransformer) connectable; ThreeWindingsTransformer.Side side; if (thwt.getLeg1().getTerminal() == terminal) { side = ThreeWindingsTransformer.Side.ONE; } else if (thwt.getLeg2().getTerminal() == terminal) {
id = twt.getId(); p1 = twt.getLeg1().getTerminal().getP(); q1 = twt.getLeg1().getTerminal().getQ(); p2 = twt.getLeg2().getTerminal().getP(); q2 = twt.getLeg2().getTerminal().getQ(); theta3 = getTheta(twt.getLeg3()); g = twt.getLeg1().getG(); b = twt.getLeg1().getB(); r1 = twt.getLeg1().getR(); x1 = twt.getLeg1().getX(); ratedU1 = twt.getLeg1().getRatedU(); r2 = adjustedR(twt.getLeg2()); x2 = adjustedX(twt.getLeg2()); ratedU3 = twt.getLeg3().getRatedU(); connected1 = twt.getLeg1().getTerminal().isConnected(); connected2 = twt.getLeg2().getTerminal().isConnected(); connected3 = twt.getLeg3().getTerminal().isConnected(); double ratedU0 = twt.getLeg1().getRatedU();
parameters.getEpsilonX(), 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);
switch (side) { case ONE: t = twt.getLeg1().getTerminal(); break; case TWO:
twt.getLeg1().getTerminal().setP(Float.NaN).setQ(Float.NaN); 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 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, ""); } } }
@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; }
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) ); } }
public static Complex calcStarVoltage(ThreeWindingsTransformer twt, double ratedU0) { Objects.requireNonNull(twt); Complex v1 = ComplexUtils.polar2Complex(getV(twt.getLeg1()), getTheta(twt.getLeg1())); Complex v2 = ComplexUtils.polar2Complex(getV(twt.getLeg2()), getTheta(twt.getLeg2())); Complex v3 = ComplexUtils.polar2Complex(getV(twt.getLeg3()), getTheta(twt.getLeg3())); Complex ytr1 = new Complex(twt.getLeg1().getR(), twt.getLeg1().getX()).reciprocal(); Complex ytr2 = new Complex(adjustedR(twt.getLeg2()), adjustedX(twt.getLeg2())).reciprocal(); Complex ytr3 = new Complex(adjustedR(twt.getLeg3()), adjustedX(twt.getLeg3())).reciprocal(); Complex a01 = new Complex(1, 0); Complex a1 = new Complex(twt.getLeg1().getRatedU() / ratedU0, 0); Complex a02 = new Complex(1, 0); Complex a2 = new Complex(1 / rho(twt.getLeg2(), ratedU0), 0); Complex a03 = new Complex(1, 0); Complex a3 = new Complex(1 / rho(twt.getLeg3(), ratedU0), 0); // IIDM model includes admittance to ground at star bus side in Leg1 Complex ysh01 = new Complex(twt.getLeg1().getG(), twt.getLeg1().getB()); Complex ysh02 = new Complex(0, 0); Complex ysh03 = new Complex(0, 0); Complex y01 = ytr1.negate().divide(a01.conjugate().multiply(a1)); Complex y02 = ytr2.negate().divide(a02.conjugate().multiply(a2)); Complex y03 = ytr3.negate().divide(a03.conjugate().multiply(a3)); Complex y0101 = ytr1.add(ysh01).divide(a01.conjugate().multiply(a01)); Complex y0202 = ytr2.add(ysh02).divide(a02.conjugate().multiply(a02)); Complex y0303 = ytr3.add(ysh03).divide(a03.conjugate().multiply(a03)); return y01.multiply(v1).add(y02.multiply(v2)).add(y03.multiply(v3)).negate() .divide(y0101.add(y0202).add(y0303)); }
@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(); } }
@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()); } }