/** * Keep this voltage level if the IDs list contains the ID of this voltage level. * @param voltageLevel The voltage level to test * @return true if the IDs list contains the ID of this voltage level, false otherwise */ @Override public boolean test(VoltageLevel voltageLevel) { Objects.requireNonNull(voltageLevel); return ids.contains(voltageLevel.getId()) || ids.contains(voltageLevel.getSubstation().getId()); } }
public static int getForecastDistance(VoltageLevel vl) { String forecastDistanceStr = vl.getProperties().getProperty(FORECAST_DISTANCE); if (forecastDistanceStr != null) { return Integer.parseInt(forecastDistanceStr); } else { return vl.getSubstation().getNetwork().getForecastDistance(); } }
public static Country getCountry(LimitViolation limitViolation, Network network) { VoltageLevel voltageLevel = getVoltageLevel(limitViolation, network); return voltageLevel.getSubstation().getCountry(); }
public static int getDateDistanceToReference(VoltageLevel vl) { DateTime caseDate; String caseDateStr = vl.getProperties().getProperty(CASE_DATE); if (caseDateStr == null) { caseDate = vl.getSubstation().getNetwork().getCaseDate(); } else { caseDate = DateTime.parse(caseDateStr); } return (int) new Duration(caseDate, vl.getSubstation().getNetwork().getCaseDate()).getStandardMinutes(); }
private static void checkRemovability(Substation substation, Branch branch) { Substation s1 = branch.getTerminal1().getVoltageLevel().getSubstation(); Substation s2 = branch.getTerminal2().getVoltageLevel().getSubstation(); if ((s1 != substation) || (s2 != substation)) { throw createIsolationException(substation); } }
private static void checkRemovability(Substation substation, ThreeWindingsTransformer twt) { Substation s1 = twt.getLeg1().getTerminal().getVoltageLevel().getSubstation(); Substation s2 = twt.getLeg2().getTerminal().getVoltageLevel().getSubstation(); Substation s3 = twt.getLeg3().getTerminal().getVoltageLevel().getSubstation(); if ((s1 != substation) || (s2 != substation) || (s3 != substation)) { throw createIsolationException(substation); } }
/** * Throw a {@link com.powsybl.commons.PowsyblException} if this voltage level contains at least one {@link Branch} or * one {@link ThreeWindingsTransformer} or one {@link HvdcConverterStation}. */ static void checkRemovability(VoltageLevel voltageLevel) { Network network = voltageLevel.getSubstation().getNetwork(); for (Connectable connectable : voltageLevel.getConnectables()) { ConnectableType type = connectable.getType(); if (MULTIPLE_TERMINALS_CONNECTABLE_TYPES.contains(type)) { // Reject lines, 2WT and 3WT throw new AssertionError("The voltage level '" + voltageLevel.getId() + "' cannot be removed because of a remaining " + type); } else if ((type == ConnectableType.HVDC_CONVERTER_STATION) && (network.getHvdcLine((HvdcConverterStation) connectable) != null)) { // Reject all converter stations connected to a HVDC line throw new AssertionError("The voltage level '" + voltageLevel.getId() + "' cannot be removed because of a remaining HVDC line"); } } } }
@Override public boolean valid() { if (!super.valid()) { return false; } if (context.boundary().containsNode(nodeId(1)) || context.boundary().containsNode(nodeId(2)) || context.boundary().containsNode(nodeId(3))) { invalid("3 windings transformer end point at boundary is not supported"); return false; } // This should not happen, // The substationIdMapping should ensure all three ends // are in the same IIDM substation if (voltageLevel(1).getSubstation() != voltageLevel(2).getSubstation() || voltageLevel(1).getSubstation() != voltageLevel(3).getSubstation()) { String name1 = voltageLevel(1).getSubstation().getName(); String name2 = voltageLevel(2).getSubstation().getName(); String name3 = voltageLevel(3).getSubstation().getName(); invalid(String.format("different substations at ends %s %s %s", name1, name2, name3)); return false; } return true; }
private EsgNode createNode(String busId, VoltageLevel vl, double v, double angle, boolean slackBus) { return createNode(busId, vl.getSubstation().getCountry().name(), vl.getNominalV(), v, angle, slackBus); }
private static void checkRemovability(Substation substation, HvdcConverterStation station) { HvdcLine hvdcLine = substation.getNetwork().getHvdcLine(station); if (hvdcLine != null) { Substation s1 = hvdcLine.getConverterStation1().getTerminal().getVoltageLevel().getSubstation(); Substation s2 = hvdcLine.getConverterStation2().getTerminal().getVoltageLevel().getSubstation(); if ((s1 != substation) || (s2 != substation)) { throw createIsolationException(substation); } } }
break; Country country = generator.getTerminal().getVoltageLevel().getSubstation().getCountry(); StochasticVariable stochasticVariable = new StochasticVariable(generatorId, stochasticVariablesType, country); stochasticVariables.add(stochasticVariable); Load load = network.getLoad(loadId); if (load != null) { Country country = load.getTerminal().getVoltageLevel().getSubstation().getCountry(); StochasticVariable stochasticVariable = new StochasticVariable(loadId, StochasticVariable.TYPE_LOAD, country); stochasticVariables.add(stochasticVariable);
private void addSubjectInfo(RunningContext context, LimitViolationsResult result) { for (LimitViolation violation : result.getLimitViolations()) { Identifiable identifiable = context.getNetwork().getIdentifiable(violation.getSubjectId()); if (identifiable instanceof Branch) { Branch branch = (Branch) identifiable; Set<Country> countries = new TreeSet<>(); countries.add(branch.getTerminal1().getVoltageLevel().getSubstation().getCountry()); countries.add(branch.getTerminal2().getVoltageLevel().getSubstation().getCountry()); Set<Double> nominalVoltages = new TreeSet<>(); nominalVoltages.add(branch.getTerminal1().getVoltageLevel().getNominalV()); nominalVoltages.add(branch.getTerminal2().getVoltageLevel().getNominalV()); violation.addExtension(SubjectInfoExtension.class, new SubjectInfoExtension(countries, nominalVoltages)); } else if (identifiable instanceof VoltageLevel) { VoltageLevel vl = (VoltageLevel) identifiable; violation.addExtension(SubjectInfoExtension.class, new SubjectInfoExtension(vl.getSubstation().getCountry(), vl.getNominalV())); } } }
static void checkRatioTapChangerRegulation(Validable validable, boolean loadTapChangingCapabilities, boolean regulating, Terminal regulationTerminal, double targetV, Network network) { if (loadTapChangingCapabilities && regulating) { if (Double.isNaN(targetV)) { throw new ValidationException(validable, "a target voltage has to be set for a regulating ratio tap changer"); } if (targetV <= 0) { throw new ValidationException(validable, "bad target voltage " + targetV); } if (regulationTerminal == null) { throw new ValidationException(validable, "a regulation terminal has to be set for a regulating ratio tap changer"); } if (regulationTerminal.getVoltageLevel().getSubstation().getNetwork() != network) { throw new ValidationException(validable, "regulation terminal is not part of the network"); } } }
static void checkPhaseTapChangerRegulation(Validable validable, PhaseTapChanger.RegulationMode regulationMode, double regulationValue, boolean regulating, Terminal regulationTerminal, Network network) { if (regulationMode == null) { throw new ValidationException(validable, "phase regulation mode is not set"); } if (regulationMode != PhaseTapChanger.RegulationMode.FIXED_TAP && Double.isNaN(regulationValue)) { throw new ValidationException(validable, "phase regulation is on and threshold/setpoint value is not set"); } if (regulationMode != PhaseTapChanger.RegulationMode.FIXED_TAP && regulationTerminal == null) { throw new ValidationException(validable, "phase regulation is on and regulated terminal is not set"); } if (regulationTerminal != null && regulationTerminal.getVoltageLevel().getSubstation().getNetwork() != network) { throw new ValidationException(validable, "phase regulation terminal is not part of the network"); } if (regulationMode == PhaseTapChanger.RegulationMode.FIXED_TAP && regulating) { throw new ValidationException(validable, "phase regulation cannot be on if mode is FIXED"); } }
@Override protected void readSubElements(Generator g, NetworkXmlReaderContext context) throws XMLStreamException { readUntilEndRootElement(context.getReader(), () -> { switch (context.getReader().getLocalName()) { case "regulatingTerminal": String id = context.getAnonymizer().deanonymizeString(context.getReader().getAttributeValue(null, "id")); String side = context.getReader().getAttributeValue(null, "side"); context.getEndTasks().add(() -> g.setRegulatingTerminal(readTerminalRef(g.getTerminal().getVoltageLevel().getSubstation().getNetwork(), id, side))); break; case "reactiveCapabilityCurve": case "minMaxReactiveLimits": ReactiveLimitsXml.INSTANCE.read(g, context); break; default: super.readSubElements(g, context); } }); } }
private void createBus(VoltageLevel voltageLevel) { Bus bus = voltageLevel.getBusBreakerView().newBus() .setId(context.namingStrategy().getId("Bus", id)) .setName(context.namingStrategy().getName("Bus", name)) .add(); double v = p.asDouble("v"); double angle = p.asDouble("angle"); if (valid(v, angle)) { bus.setV(v); bus.setAngle(angle); } else { String reason = String.format( "v = %f, angle = %f. Substation, Voltage level = %s %s", v, angle, voltageLevel.getSubstation().getName(), voltageLevel.getName()); context.invalid("SvVoltage", reason); } }
loadData.setVoltage(load.getTerminal().getBusView().getBus().getV()); loadData.setCountry(load.getTerminal().getVoltageLevel().getSubstation().getCountry()); loadsData.add(loadData); LOGGER.debug(loadData.toString());
generatorData.setFuelType(MCSNetworkUtils.getFuelType(generator)); generatorData.setDispatchable(MCSNetworkUtils.isDispatchable(generator)); generatorData.setCountry(generator.getTerminal().getVoltageLevel().getSubstation().getCountry()); generatorsData.add(generatorData); LOGGER.debug(generatorData.toString());
String side = context.getReader().getAttributeValue(null, "side"); context.getEndTasks().add(() -> { adder.setRegulationTerminal(readTerminalRef(terminal.getVoltageLevel().getSubstation().getNetwork(), id, side)); adder.add(); });
String side = context.getReader().getAttributeValue(null, "side"); context.getEndTasks().add(() -> { adder.setRegulationTerminal(readTerminalRef(twt.getTerminal1().getVoltageLevel().getSubstation().getNetwork(), id, side)); adder.add(); });