private Void readShunt(String[] tokens) { int num = Integer.parseInt(tokens[1]); int busNum = Integer.parseInt(tokens[2]); double q = readDouble(tokens[4]); int sections = Integer.parseInt(tokens[5]); String id = mapper.getId(AmplSubset.SHUNT, num); ShuntCompensator sc = network.getShuntCompensator(id); if (sc == null) { throw new AmplException("Invalid shunt compensator id '" + id + "'"); } sc.setCurrentSectionCount(Math.max(0, Math.min(sc.getMaximumSectionCount(), sections))); Terminal t = sc.getTerminal(); t.setQ(q); busConnection(t, busNum); return null; }
private static void updateInjection(XMLStreamReader reader, Network network) { String id = reader.getAttributeValue(null, "id"); double p = XmlUtil.readOptionalDoubleAttribute(reader, "p"); double q = XmlUtil.readOptionalDoubleAttribute(reader, "q"); Injection inj = (Injection) network.getIdentifiable(id); inj.getTerminal().setP(p).setQ(q); }
private static void updateBranch(XMLStreamReader reader, Network network) { String id = reader.getAttributeValue(null, "id"); double p1 = XmlUtil.readOptionalDoubleAttribute(reader, "p1"); double q1 = XmlUtil.readOptionalDoubleAttribute(reader, "q1"); double p2 = XmlUtil.readOptionalDoubleAttribute(reader, "p2"); double q2 = XmlUtil.readOptionalDoubleAttribute(reader, "q2"); Branch branch = (Branch) network.getIdentifiable(id); branch.getTerminal1().setP(p1).setQ(q1); branch.getTerminal2().setP(p2).setQ(q2); }
private Void readLcc(String[] tokens) { int num = Integer.parseInt(tokens[1]); int busNum = Integer.parseInt(tokens[2]); double p = readDouble(tokens[3]); double q = readDouble(tokens[4]); String id = mapper.getId(AmplSubset.LCC_CONVERTER_STATION, num); LccConverterStation lcc = network.getLccConverterStation(id); lcc.getTerminal().setP(p).setQ(q); busConnection(lcc.getTerminal(), busNum); return null; }
private void completeTerminalData(Terminal terminal, ThreeWindingsTransformer.Side side, TwtData twtData) { if (terminal.isConnected() && terminal.getBusView().getBus().isInMainConnectedComponent()) { if (Double.isNaN(terminal.getP())) { LOGGER.debug("Twt {}, Side {}: setting p = {}", twtData.getId(), side, twtData.getComputedP(side)); terminal.setP(twtData.getComputedP(side)); } if (Double.isNaN(terminal.getQ())) { LOGGER.debug("Twt {}, Side {}: setting q = {}", twtData.getId(), side, twtData.getComputedQ(side)); terminal.setQ(twtData.getComputedQ(side)); } } }
protected static void readPQ(Integer index, Terminal t, XMLStreamReader reader) { double p = XmlUtil.readOptionalDoubleAttribute(reader, "p" + indexToString(index)); double q = XmlUtil.readOptionalDoubleAttribute(reader, "q" + indexToString(index)); t.setP(p) .setQ(q); }
private void completeTerminalData(Terminal terminal, Side side, BranchData branchData) { if (terminal.isConnected() && terminal.getBusView().getBus().isInMainConnectedComponent()) { if (Double.isNaN(terminal.getP())) { LOGGER.debug("Branch {}, Side {}: setting p = {}", branchData.getId(), side, branchData.getComputedP(side)); terminal.setP(branchData.getComputedP(side)); } if (Double.isNaN(terminal.getQ())) { LOGGER.debug("Branch {}, Side {}: setting q = {}", branchData.getId(), side, branchData.getComputedQ(side)); terminal.setQ(branchData.getComputedQ(side)); } } }
public static void clearSv(Network network) { g.getTerminal().setP(Float.NaN).setQ(Float.NaN); l.getTerminal().setP(Float.NaN).setQ(Float.NaN); sc.getTerminal().setP(Float.NaN).setQ(Float.NaN); dl.getTerminal().setP(Float.NaN).setQ(Float.NaN); l.getTerminal1().setP(Float.NaN).setQ(Float.NaN); l.getTerminal2().setP(Float.NaN).setQ(Float.NaN); twt.getTerminal1().setP(Float.NaN).setQ(Float.NaN); twt.getTerminal2().setP(Float.NaN).setQ(Float.NaN); 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);
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; }
void convertedTerminal(String terminalId, Terminal t, int n, PowerFlow f) { // Record the mapping between CGMES and IIDM terminals context.terminalMapping().add(terminalId, t, n); // Update the power flow at terminal if (f.defined()) { t.setP(f.p()); t.setQ(f.q()); } }
private Void readBranch(String[] tokens) { int num = Integer.parseInt(tokens[1]); int busNum = Integer.parseInt(tokens[2]); int busNum2 = Integer.parseInt(tokens[3]); double p1 = readDouble(tokens[4]); double p2 = readDouble(tokens[5]); double q1 = readDouble(tokens[6]); double q2 = readDouble(tokens[7]); String id = mapper.getId(AmplSubset.BRANCH, num); Branch br = network.getBranch(id); if (br != null) { br.getTerminal1().setP(p1).setQ(q1); br.getTerminal2().setP(p2).setQ(q2); busConnection(br.getTerminal1(), busNum); busConnection(br.getTerminal2(), busNum2); return null; } if (readThreeWindingsTransformerBranch(id, p1, q1, busNum)) { return null; } DanglingLine dl = network.getDanglingLine(id); if (dl != null) { dl.getTerminal().setP(p1).setQ(q1); busConnection(dl.getTerminal(), busNum); } else { throw new AmplException("Invalid branch id '" + id + "'"); } return null; }
private Void readVsc(String[] tokens) { int num = Integer.parseInt(tokens[1]); int busNum = Integer.parseInt(tokens[2]); boolean vregul = Boolean.parseBoolean(tokens[3]); double targetV = readDouble(tokens[4]); double targetQ = readDouble(tokens[5]); double p = readDouble(tokens[6]); double q = readDouble(tokens[7]); String id = mapper.getId(AmplSubset.VSC_CONVERTER_STATION, num); VscConverterStation vsc = network.getVscConverterStation(id); Terminal t = vsc.getTerminal(); t.setP(p).setQ(q); vsc.setReactivePowerSetpoint(targetQ); vsc.setVoltageRegulatorOn(vregul); double vb = t.getVoltageLevel().getNominalV(); vsc.setVoltageSetpoint(targetV * vb); busConnection(t, busNum); return null; }
private Void readSvc(String[] tokens) { int num = Integer.parseInt(tokens[1]); int busNum = Integer.parseInt(tokens[2]); boolean vregul = Boolean.parseBoolean(tokens[3]); double targetV = readDouble(tokens[4]); double q = readDouble(tokens[5]); String id = mapper.getId(AmplSubset.STATIC_VAR_COMPENSATOR, num); StaticVarCompensator svc = network.getStaticVarCompensator(id); if (svc == null) { throw new AmplException("Invalid StaticVarCompensator id '" + id + "'"); } if (vregul) { svc.setRegulationMode(RegulationMode.VOLTAGE); } else { if (q == 0) { svc.setRegulationMode(RegulationMode.OFF); } else { svc.setReactivePowerSetPoint(-q); svc.setRegulationMode(RegulationMode.REACTIVE_POWER); } } Terminal t = svc.getTerminal(); t.setQ(q); double nominalV = t.getVoltageLevel().getNominalV(); svc.setVoltageSetPoint(targetV * nominalV); busConnection(t, busNum); return null; }
private Void readLoad(String[] tokens) { int num = Integer.parseInt(tokens[1]); int busNum = Integer.parseInt(tokens[2]); double p = readDouble(tokens[3]); double q = readDouble(tokens[4]); double p0 = readDouble(tokens[5]); double q0 = readDouble(tokens[6]); String id = mapper.getId(AmplSubset.LOAD, num); Load l = network.getLoad(id); if (l != null) { l.setP0(p0).setQ0(q0); l.getTerminal().setP(p).setQ(q); busConnection(l.getTerminal(), busNum); } else { DanglingLine dl = network.getDanglingLine(id); if (dl != null) { dl.setP0(p0).setQ0(q0); dl.getTerminal().setP(p).setQ(q); busConnection(dl.getTerminal(), busNum); } else { throw new AmplException("Invalid load id '" + id + "'"); } } return null; }
private Void readGenerator(String[] tokens) { int num = Integer.parseInt(tokens[1]); int busNum = Integer.parseInt(tokens[2]); boolean vregul = Boolean.parseBoolean(tokens[3]); double targetV = readDouble(tokens[4]); double targetP = readDouble(tokens[5]); double targetQ = readDouble(tokens[6]); double p = readDouble(tokens[7]); double q = readDouble(tokens[8]); String id = mapper.getId(AmplSubset.GENERATOR, num); Generator g = network.getGenerator(id); if (g == null) { throw new AmplException("Invalid generator id '" + id + "'"); } g.setVoltageRegulatorOn(vregul); g.setTargetP(targetP); g.setTargetQ(targetQ); Terminal t = g.getTerminal(); t.setP(p).setQ(q); double vb = t.getVoltageLevel().getNominalV(); g.setTargetV(targetV * vb); busConnection(t, busNum); return null; }
private void createShunt(VoltageLevel voltageLevel, cim1.model.ShuntCompensator sc) { LOGGER.trace("Create shunt compensator {}", namingStrategy.getId(sc)); cim1.model.Terminal t = sc.getTerminals().get(0); cim1.model.TopologicalNode tn = t.getTopologicalNode(); int sectionCount = (int) sc.getSvShuntCompensatorSections().getContinuousSections(); sectionCount = Math.abs(sectionCount); // RTE Convergence CIM export bug (SVC) float bPerSection = sc.getBPerSection(); if (bPerSection == 0) { bPerSection = Float.MIN_VALUE; LOGGER.warn("Fix {} susceptance per section: 0 -> {}", sc.getId(), bPerSection); } ShuntCompensator shunt = voltageLevel.newShuntCompensator() .setId(namingStrategy.getId(sc)) .setName(namingStrategy.getName(sc)) .setEnsureIdUnicity(false) .setBus(t.isConnected() ? namingStrategy.getId(tn) : null) .setConnectableBus(namingStrategy.getId(tn)) .setCurrentSectionCount(sectionCount) .setbPerSection(bPerSection) .setMaximumSectionCount(Math.max(sc.getMaximumSections(), sectionCount)) .add(); addTerminalMapping(tn, shunt.getTerminal()); cim1.model.SvPowerFlow svfp = t.getSvPowerFlow(); if (svfp != null) { shunt.getTerminal().setQ(svfp.getQ()); } }
double q = -sh.getCurrentB() * v * v; LOGGER.debug("Shunt {}, setting q = {}", sh, q); terminal.setQ(q);
addTerminalMapping(tn, load.getTerminal()); if (svpf != null) { load.getTerminal().setP(p).setQ(q);
private Load replaceBranchByLoad(Branch<?> branch, VoltageLevel vl, Terminal terminal) { LoadAdder loadAdder = vl.newLoad() .setId(branch.getId()) .setName(branch.getName()) .setLoadType(LoadType.FICTITIOUS) .setP0(checkP(terminal)) .setQ0(checkQ(terminal)); fillNodeOrBus(loadAdder, terminal); branch.remove(); Load load = loadAdder.add(); load.getTerminal() .setP(terminal.getP()) .setQ(terminal.getQ()); return load; }
private void replaceLineByDanglingLine(Line line, VoltageLevel vl, Terminal terminal) { Branch.Side side = line.getSide(terminal); DanglingLineAdder dlAdder = vl.newDanglingLine() .setId(line.getId()) .setName(line.getName()) .setR(line.getR() / 2) .setX(line.getX() / 2) .setB(side == Branch.Side.ONE ? line.getB1() : line.getB2()) .setG(side == Branch.Side.ONE ? line.getG1() : line.getG2()) .setP0(checkP(terminal)) .setQ0(checkQ(terminal)); fillNodeOrBus(dlAdder, terminal); line.remove(); DanglingLine dl = dlAdder.add(); dl.getTerminal() .setP(terminal.getP()) .setQ(terminal.getQ()); observers.forEach(o -> o.lineReplaced(line, dl)); }