diff --git a/src/main/java/com/powsybl/openloadflow/network/impl/AbstractLfGenerator.java b/src/main/java/com/powsybl/openloadflow/network/impl/AbstractLfGenerator.java index e2ccfc7766..b7f6bfeb8e 100644 --- a/src/main/java/com/powsybl/openloadflow/network/impl/AbstractLfGenerator.java +++ b/src/main/java/com/powsybl/openloadflow/network/impl/AbstractLfGenerator.java @@ -361,15 +361,17 @@ public void setParticipating(boolean participating) { public static boolean checkActivePowerControl(String generatorId, double targetP, double maxP, double minTargetP, double maxTargetP, double plausibleActivePowerLimit, boolean useActiveLimits, LfNetworkLoadingReport report) { - boolean participating = true; if (Math.abs(targetP) < POWER_EPSILON_SI) { + // if generator is not started, it is not participating, and we can skip the rest of the checks LOGGER.trace("Discard generator '{}' from active power control because targetP ({} MW) equals 0", generatorId, targetP); if (report != null) { report.generatorsDiscardedFromActivePowerControlBecauseTargetEqualsToZero++; } - participating = false; + return false; } + + boolean participating = true; if (maxP > plausibleActivePowerLimit) { // note that we still want this check applied even if active power limits are not to be enforced, // e.g. in case of distribution modes proportional to maxP or remaining margin, we don't want to introduce crazy high participation diff --git a/src/main/java/com/powsybl/openloadflow/network/impl/LfNetworkLoaderImpl.java b/src/main/java/com/powsybl/openloadflow/network/impl/LfNetworkLoaderImpl.java index 16e25a3434..f74d150464 100644 --- a/src/main/java/com/powsybl/openloadflow/network/impl/LfNetworkLoaderImpl.java +++ b/src/main/java/com/powsybl/openloadflow/network/impl/LfNetworkLoaderImpl.java @@ -1018,6 +1018,10 @@ private LfNetwork create(int numCC, int numSC, Network network, List buses, LOGGER.warn("Network {}: {} generators have been discarded from active power control because of a targetP > maxP", lfNetwork, report.generatorsDiscardedFromActivePowerControlBecauseTargetPGreaterThanMaxP); } + if (report.generatorsDiscardedFromActivePowerControlBecauseTargetPLowerThanMinP > 0) { + LOGGER.warn("Network {}: {} generators have been discarded from active power control because of a targetP < minP", + lfNetwork, report.generatorsDiscardedFromActivePowerControlBecauseTargetPLowerThanMinP); + } if (report.generatorsDiscardedFromActivePowerControlBecauseMaxPNotPlausible > 0) { LOGGER.warn("Network {}: {} generators have been discarded from active power control because of maxP not plausible", lfNetwork, report.generatorsDiscardedFromActivePowerControlBecauseMaxPNotPlausible);