ActivePowerControl.java

/**
 * Copyright (c) 2019, RTE (http://www.rte-france.com)
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 * SPDX-License-Identifier: MPL-2.0
 */
package com.powsybl.iidm.network.extensions;

import com.powsybl.commons.extensions.Extension;
import com.powsybl.iidm.network.Injection;

import java.util.OptionalDouble;

/**
 * @author Ghiles Abdellah {@literal <ghiles.abdellah at rte-france.com>}
 */
public interface ActivePowerControl<I extends Injection<I>> extends Extension<I> {

    String NAME = "activePowerControl";

    @Override
    default String getName() {
        return NAME;
    }

    boolean isParticipate();

    void setParticipate(boolean participate);

    /**
     * This is the change in generator power output divided by the change in frequency
     * normalized by the nominal power of the generator and the nominal frequency and
     * expressed in percent and negated. A positive value of speed change droop provides
     * additional generator output upon a drop in frequency.
     * @return Governor Speed Changer Droop.
     */
    double getDroop();

    /**
     * @param droop new Governor Speed Changer Droop value
     */
    void setDroop(double droop);

    /**
     * Generating unit participation factor.
     * The sum of the participation factors across generating units does not have to sum to one.
     * It is used for representing distributed slack participation factor.
     * The attribute shall be a positive value or zero.
     * @return Generating unit participation factor.
     */
    double getParticipationFactor();

    /**
     * @param participationFactor new Generating unit participation factor value
     */
    void setParticipationFactor(double participationFactor);

    /**
     * @return if present, provides the overridden value of minP to be used for active power control operations.
     */
    OptionalDouble getMinTargetP();

    /**
     * Sets the minimum value for targetP. The value must be in the [pmin,pmax] interval of the extended
     * generator or battery.
     * @param minTargetP  The overridden value of minP. A Nan value removes the override.
     */
    void setMinTargetP(double minTargetP);

    /**
     * @return if present, provides the overridden value of maxP to be used for active power control operations.
     */
    OptionalDouble getMaxTargetP();

    /**
     * Sets the maximum value for targetP. The value must be in the [pmin,pmax] interval of the extended
     * generator or battery.
     * @param maxTargetP The overridden value of maxP. A Nan value removes the override.
     */
    void setMaxTargetP(double maxTargetP);
}