public static double getNominalPower(Generator generator) { Objects.requireNonNull(generator, "generator is null"); double nominalPower = Double.NaN; double pMax = generator.getMaxP(); double qMax = generator.getReactiveLimits().getMaxQ(generator.getTargetP()); nominalPower = Math.sqrt(Math.pow(pMax, 2) + Math.pow(qMax, 2)); return nominalPower; }
@Override public void visitGenerator(Generator g) { TerminalContext context = new TerminalContext(); visitInjection(g, context); // reactive limit double qmax = g.getReactiveLimits().getMaxQ(context.p); valueMap.put(new HistoDbNetworkAttributeId(g.getId(), HistoDbAttr.QR), Math.abs(qmax - context.q)); }
double pgmin = g.getMinP(); double pgmax = g.getMaxP(); boolean isQminQmaxInverted = g.getReactiveLimits().getMinQ(pgen) > g.getReactiveLimits().getMaxQ(pgen); if (isQminQmaxInverted) { LOGGER.warn("inverted qmin {} and qmax {} values for generator {}", g.getReactiveLimits().getMinQ(pgen), g.getReactiveLimits().getMaxQ(pgen), g.getId()); qgen = -g.getTerminal().getQ(); double qgmin = (config.isNoGeneratorMinMaxQ() || isQminQmaxInverted) ? -9999 : g.getReactiveLimits().getMinQ(pgen); double qgmax = (config.isNoGeneratorMinMaxQ() || isQminQmaxInverted) ? 9999 : g.getReactiveLimits().getMaxQ(pgen); EsgRegulatingMode mode = (isQminQmaxInverted && !Double.isNaN(qgen)) ? EsgRegulatingMode.NOT_REGULATING : (isVoltageRegulatorOn && g.getTargetV() >= 0.1 ? EsgRegulatingMode.REGULATING : EsgRegulatingMode.NOT_REGULATING);
.add(); if (srcGen.getReactiveLimits() != null) { switch (srcGen.getReactiveLimits().getKind()) { case MIN_MAX: { MinMaxReactiveLimits limits = srcGen.getReactiveLimits(MinMaxReactiveLimits.class); double newMinQ = config.isNoReactiveLimits() ? -INFINITE_REACTIVE_LIMIT : -fct.apply(new StateVariable(srcSv.p, -limits.getMinQ(), srcSv.u, srcSv.theta)).q; double newMaxQ = config.isNoReactiveLimits() ? INFINITE_REACTIVE_LIMIT : -fct.apply(new StateVariable(srcSv.p, -limits.getMaxQ(), srcSv.u, srcSv.theta)).q; ReactiveCapabilityCurve curve = srcGen.getReactiveLimits(ReactiveCapabilityCurve.class); ReactiveCapabilityCurveAdder rcca = lvGen.newReactiveCapabilityCurve(); for (Point point : curve.getPoints()) {
generatorData.setMinActivePower(generator.getMinP()); generatorData.setMaxActivePower(generator.getMaxP()); generatorData.setMinReactivePower(generator.getReactiveLimits().getMinQ(generator.getTargetP())); generatorData.setMaxReactivePower(generator.getReactiveLimits().getMaxQ(generator.getTargetP())); generatorData.setNominalPower(MCSNetworkUtils.getNominalPower(generator)); generatorData.setRenewableEnergySource(MCSNetworkUtils.getRenewableEnergySource(generator));
private static void extractGeneratorsData(Network network, NetworkData networkData) { for (Generator generator : network.getGenerators()) { networkData.addGeneratorData(new GeneratorData(generator.getId(), (generator.getTerminal().getBusBreakerView().getBus() != null) ? generator.getTerminal().getBusBreakerView().getBus().getId() : generator.getTerminal().getBusBreakerView().getConnectableBus().getId(), generator.getTerminal().getBusBreakerView().getBus() != null, apparentPower(generator.getTerminal()), generator.getTerminal().getP(), generator.getTerminal().getQ(), generator.getRatedS(), generator.getReactiveLimits().getMaxQ(generator.getTargetP()), generator.getReactiveLimits().getMinQ(generator.getTargetP())) // generator.getReactiveLimits().getMaxQ(generator.getTerminal().getP()), // generator.getReactiveLimits().getMinQ(generator.getTerminal().getP())) ); } }
maximumGenerationMW += gen.getMaxP(); minimumGenerationMVAR += gen.getReactiveLimits().getMinQ((float) 0); maximumGenerationMVAR += gen.getReactiveLimits().getMaxQ((float) 0); if (gen.isVoltageRegulatorOn()) { desiredVoltage = gen.getTargetV() / baseKV;
.writeCell(minP) .writeCell(maxP) .writeCell(g.getReactiveLimits().getMinQ(maxP)) .writeCell(g.getReactiveLimits().getMinQ(0)) .writeCell(g.getReactiveLimits().getMinQ(minP)) .writeCell(g.getReactiveLimits().getMaxQ(maxP)) .writeCell(g.getReactiveLimits().getMaxQ(0)) .writeCell(g.getReactiveLimits().getMaxQ(minP)) .writeCell(g.isVoltageRegulatorOn()) .writeCell(g.getTargetV() / vb)