private String getBusId(Bus bus) { return bus == null ? null : bus.getId(); }
List<Double> generatorsReactivePower = new ArrayList<>(); bus.getGenerators().forEach((generator) -> { generators.add(generator.getId()); generatorsActivePower.add(generator.getTerminal().getP()); List<Double> loadsReactivePower = new ArrayList<>(); bus.getLoads().forEach((load) -> { loads.add(load.getId()); loadsActivePower.add(load.getTerminal().getP()); networkData.addBusData(new BusData(bus.getId(), bus.getVoltageLevel().getNominalV(), bus.getV(), bus.getAngle(), bus.getGenerators().iterator().hasNext(), generators, activeInjection, reactiveInjection, bus.getLoads().iterator().hasNext(), loads, activeAbsorption, reactiveAbsorption, bus.getP(), bus.getQ(), false) );
Voltage voltage = voltages.get(bus.getId()); if (voltage == null) { LOGGER.error("IIDM Bus not found in solution file, id = [" + bus.getId() + "]"); continue; continue; bus.setV(v * bus.getVoltageLevel().getNominalV()); bus.setAngle(voltage.adeg); voltage.used = true;
/** * Constructor to buses that come from the IIDM network. * @param bus */ public BusRecord(Bus bus) { this.bus = bus; this.busId = bus.getId(); if (!Double.isNaN(this.bus.getV())) { this.busVoltage = bus.getV() / bus.getVoltageLevel().getNominalV(); this.busAngle = this.bus.getAngle(); addParameter(StaticData.V_0, this.busVoltage); addParameter(StaticData.ANGLE_0, this.busAngle); } else { this.busVoltage = Float.NaN; } }
private static Bus selectSlackbusCriteria1(Network network, EurostagEchExportConfig config, Set<String> busesToAvoid) { return StreamSupport.stream(EchUtil.getBuses(network, config).spliterator(), false) .sorted((b1, b2) -> b1.getId().compareTo(b2.getId())) .filter(b -> !busesToAvoid.contains(b.getId()) && b.getConnectedComponent() != null && b.getConnectedComponent().getNum() == ComponentConstants.MAIN_NUM) .map(b -> decorate(b)) .filter(db -> db.regulatingGenerator > 0 && db.maxP > 100) // only keep bus with a regulating generator and a pmax > 100 MW .sorted((db1, db2) -> Float.compare((db1.maxP - db1.minP) / 2 - db1.targetP, (db2.maxP - db2.minP) / 2 - db2.targetP)) // select first bus with a high margin .limit(1) .map(f -> f.bus) .findFirst() .orElse(null); }
static void addBusOfMainCC(Set<String> buses, Network n, ExportOptions options) { // keep bus of main cc if (options.getTopologyLevel() == TopologyLevel.BUS_BRANCH) { for (Bus b : n.getBusView().getBuses()) { if (b.isInMainConnectedComponent()) { buses.add(b.getId()); } } } else { for (Bus b : n.getBusBreakerView().getBuses()) { if (b.isInMainConnectedComponent()) { buses.add(b.getId()); } } } }
busIndex++; busMapping.put(bus.getId(), busIndex); BusData busData = new BusData(bus.getId()); busData.setBusName(bus.getName()); busData.setBusIndex(busIndex); busData.setBusType(MCSNetworkUtils.getBusType(bus)); busData.setNominalVoltage(bus.getVoltageLevel().getNominalV()); busData.setVoltage(bus.getV()); busData.setAngle(bus.getAngle()); busData.setMinVoltage(bus.getVoltageLevel().getLowVoltageLimit()); busData.setMaxVoltage(bus.getVoltageLevel().getHighVoltageLimit()); busData.setActivePower(bus.getP()); busData.setReactivePower(bus.getQ()); busesData.add(busData); updateSlackBusData(bus, busIndex, slackBusData);
/** * Create a Dummy Bus (corresponding to a dangling line) * @param writerMo * @param modContext * @param modelicaModelsList * @param modelicaSim * @throws IOException */ private void exportDanglingBuses(Writer writerMo, ModExportContext modContext, List<String> modelicaModelsList, SimulatorInst modelicaSim) throws IOException { if ((dangLinesList.size() != 0) && (!dangLinesList.isEmpty())) { for (DanglingLine dl : dangLinesList) { Bus knownBus = dl.getTerminal().getBusBreakerView().getBus(); SV sv = new SV(0, 0, knownBus.getV(), knownBus.getAngle()); SV svDangling = sv.otherSide(dl); double voltage = svDangling.getU() / knownBus.getVoltageLevel().getNominalV(); double angle = svDangling.getA(); String name = "ext_" + dl.getId(); BusRecord busRecord = ModelConverter.getModelicaRecord(name, voltage, angle, modContext, _ddbManager, modelicaSim); this.danglingBuses.add(busRecord); this.addRecord(busRecord, writerMo, modContext, _ddbManager, modelicaSim); } } }
double newTargetV = destTargetSv.u; destBus.setV(destTargetSv.u); destBus.setAngle(destTargetSv.theta); .setId(srcGenId) .setName(srcGenName) .setBus(connected ? destBus.getId() : null) // connect the generator if it was connected at original level .setConnectableBus(destBus.getId()) .setEnergySource(srcGenEnergySource) .setVoltageRegulatorOn(secGenVoltageRegulatorOn)
String str = b.getId(); numberBusIdMap.put(busNumber, str); idBusNumberMap.put(str, busNumber); double zBase = Math.pow(b.getVoltageLevel().getNominalV(), 2) / baseMVA; double baseKV = b.getVoltageLevel().getNominalV(); String nameBus = b.getId(); int numberBus = idBusNumberMap.get(nameBus); int loadFlowAreaNumber = defaultLoadFlowArea; int typeBus = 0; // Default -> PQ bus double minimumVoltage = b.getVoltageLevel().getLowVoltageLimit() / baseKV; double maximumVoltage = b.getVoltageLevel().getHighVoltageLimit() / baseKV; if (Double.isNaN(minimumVoltage)) { minimumVoltage = defaultMinimumVoltage; if (!Double.isNaN(b.getV())) { desiredVoltage = b.getV() / baseKV; if (!Double.isNaN(b.getAngle())) { desiredAngle = b.getAngle(); double minimumFuzzyLoadMVAR = 0.0; double maximumFuzzyLoadMVAR = 0.0; Iterator<Load> itrL = b.getLoads().iterator(); while (itrL.hasNext()) { Load load = itrL.next(); Iterator<Generator> itrG = b.getGenerators().iterator(); while (itrG.hasNext()) {
List<String> lvBusIds = Lists.newArrayList(StreamSupport.stream(lvVl.getBusView().getBuses().spliterator(), false).map(b -> b.getId()).collect(Collectors.toCollection(LinkedList::new)).descendingIterator()); for (String lvBusId : lvBusIds) { Bus lvBus = n.getVoltageLevel(lvVlId).getBusView().getBus(lvBusId); double v = lvBus.getV(); if (Double.isNaN(v)) { v = lvVl.getNominalV(); double a = lvBus.getAngle(); if (Double.isNaN(a)) { a = 0; lvBus.visitConnectedOrConnectableEquipments(new DefaultTopologyVisitor() { @Override public void visitLoad(Load load) { LOGGER.warn("stator voltage level: {}, bus: {}; no connected two-winding-transformer found, no step up transformer removed for generator: {}", lvVlId, lvBus.getId(), g.getId()); LOGGER.warn("stator voltage level: {}, bus: {}; no connected two-winding-transformer found, no step up transformer removed for load: {}", lvVlId, lvBus.getId(), aux.getId()); if (twt.getTerminal2().getBusView().getConnectableBus().getId().equals(lvBus.getId())) { otherSideSv = transformerModel.toSv1(new StateVariable(-sv.p, -sv.q, sv.u, sv.theta)); } else if (twt.getTerminal1().getBusView().getConnectableBus().getId().equals(lvBus.getId())) { otherSideSv = transformerModel.toSv2(new StateVariable(-sv.p, -sv.q, sv.u, sv.theta)); } else { throw new RuntimeException("Unexpected stator substation topology"); if (!Double.isNaN(hvBus.getV())) { otherSideSv.u = hvBus.getV();
rho1 = 1f; rho2 = 1f; u1 = bus1 != null ? bus1.getV() : Double.NaN; u2 = bus2 != null ? bus2.getV() : Double.NaN; theta1 = bus1 != null ? Math.toRadians(bus1.getAngle()) : Double.NaN; theta2 = bus2 != null ? Math.toRadians(bus2.getAngle()) : Double.NaN; alpha1 = 0f; alpha2 = 0f; boolean connectableMainComponent1 = connectableBus1 != null && connectableBus1.isInMainConnectedComponent(); boolean connectableMainComponent2 = connectableBus2 != null && connectableBus2.isInMainConnectedComponent(); mainComponent1 = bus1 != null ? bus1.isInMainConnectedComponent() : connectableMainComponent1; mainComponent2 = bus2 != null ? bus2.isInMainConnectedComponent() : connectableMainComponent2;
@Override protected Bus readRootElementAttributes(BusAdder adder, NetworkXmlReaderContext context) { double v = XmlUtil.readOptionalDoubleAttribute(context.getReader(), "v"); double angle = XmlUtil.readOptionalDoubleAttribute(context.getReader(), "angle"); Bus b = adder.add(); b.setV(v); b.setAngle(angle); return b; }
private Void readBus(String[] tokens) { int num = Integer.parseInt(tokens[1]); double v = readDouble(tokens[2]); double theta = readDouble(tokens[3]); String id = mapper.getId(AmplSubset.BUS, num); Bus bus = buses.get(id); if (bus != null) { bus.setV(v * bus.getVoltageLevel().getNominalV()); bus.setAngle(Math.toDegrees(theta)); } else { throw new AmplException("Invalid bus id '" + id + "'"); } return null; }
continue; VoltageLevel vl = b.getVoltageLevel(); if (!Double.isNaN(vl.getLowVoltageLimit()) && !Double.isNaN(vl.getHighVoltageLimit())) { writer.write(dictionary.getEsgId(b.getId())); writer.write(";"); writer.write(Double.toString(vl.getLowVoltageLimit()));
double busVoltage = bus.getV(); double v0 = busVoltage / bus.getVoltageLevel().getNominalV(); parameter = new IIDMParameter(PsseFixedData.V_0, v0); this.iidmregParameters.add(parameter);