All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.powsybl.action.GeneratorAction Maven / Gradle / Ivy

The newest version!
/**
 * Copyright (c) 2022, 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.action;

import com.powsybl.iidm.modification.GeneratorModification;
import com.powsybl.iidm.modification.NetworkModification;

import java.util.Objects;
import java.util.Optional;
import java.util.OptionalDouble;

/**
 * An action to:
 * 
    *
  • change the targetP of a generator, either by specifying a new absolute value (MW) or a relative change (MW).
  • *
  • enable or disable the generator voltage control.
  • *
  • change targetQ of a generator (MVar).
  • *
  • change targetV of a generator (kV).
  • *
* * @author Hadrien Godard {@literal } * @author Anne Tilloy {@literal } */ public class GeneratorAction extends AbstractAction { public static final String NAME = "GENERATOR"; private final String generatorId; private final Boolean activePowerRelativeValue; private final Double activePowerValue; private final Boolean voltageRegulatorOn; private final Double targetV; private final Double targetQ; /** * @param id the id of the action. * @param generatorId the id of the generator on which the action would be applied. * @param activePowerRelativeValue True if the generator targetP variation is relative, False if absolute. * @param activePowerValue The new generator targetP (MW) if activePowerRelativeValue equals False, otherwise the relative variation of generator targetP (MW). * @param voltageRegulatorOn The new generator voltage regulator status. * @param targetV The new generator targetV (kV), absolute value only. * @param targetQ The new generator targetQ (MVar), absolute value only. */ GeneratorAction(String id, String generatorId, Boolean activePowerRelativeValue, Double activePowerValue, Boolean voltageRegulatorOn, Double targetV, Double targetQ) { super(id); this.generatorId = Objects.requireNonNull(generatorId); this.activePowerRelativeValue = activePowerRelativeValue; this.activePowerValue = activePowerValue; this.voltageRegulatorOn = voltageRegulatorOn; this.targetV = targetV; this.targetQ = targetQ; } @Override public String getType() { return NAME; } public String getGeneratorId() { return generatorId; } public Optional isActivePowerRelativeValue() { return Optional.ofNullable(activePowerRelativeValue); } public OptionalDouble getActivePowerValue() { return activePowerValue == null ? OptionalDouble.empty() : OptionalDouble.of(activePowerValue); } public Optional isVoltageRegulatorOn() { return Optional.ofNullable(voltageRegulatorOn); } public OptionalDouble getTargetV() { return targetV == null ? OptionalDouble.empty() : OptionalDouble.of(targetV); } public OptionalDouble getTargetQ() { return targetQ == null ? OptionalDouble.empty() : OptionalDouble.of(targetQ); } @Override public NetworkModification toModification() { GeneratorModification.Modifs modifs = new GeneratorModification.Modifs(); modifs.setIgnoreCorrectiveOperations(true); getActivePowerValue().ifPresent(value -> { boolean isRelative = isActivePowerRelativeValue().orElse(false); if (isRelative) { modifs.setDeltaTargetP(value); } else { modifs.setTargetP(value); } }); isVoltageRegulatorOn().ifPresent(modifs::setVoltageRegulatorOn); getTargetQ().ifPresent(modifs::setTargetQ); getTargetV().ifPresent(modifs::setTargetV); return new GeneratorModification(getGeneratorId(), modifs); } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } if (!super.equals(o)) { return false; } GeneratorAction that = (GeneratorAction) o; return Objects.equals(generatorId, that.generatorId) && Objects.equals(activePowerRelativeValue, that.activePowerRelativeValue) && Objects.equals(activePowerValue, that.activePowerValue) && Objects.equals(voltageRegulatorOn, that.voltageRegulatorOn) && Objects.equals(targetV, that.targetV) && Objects.equals(targetQ, that.targetQ); } @Override public int hashCode() { return Objects.hash(super.hashCode(), generatorId, activePowerRelativeValue, activePowerValue, voltageRegulatorOn, targetV, targetQ); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy