From fb77a3110fc7c92228d735ee987cecab999cdf4c Mon Sep 17 00:00:00 2001 From: Thang PHAM <117309322+thangqp@users.noreply.github.com> Date: Thu, 17 Oct 2024 16:23:23 +0200 Subject: [PATCH] Proposed renamming regulating phase tap changer (#551) * Revert mistake in previous commit * fix regulating when modifying phase tap changer (renamming proposition ) --- .../TwoWindingsTransformerField.java | 4 +- .../TwoWindingsTransformerModification.java | 120 ++++++++++-------- 2 files changed, 65 insertions(+), 59 deletions(-) diff --git a/src/main/java/org/gridsuite/modification/server/dto/byfilter/equipmentfield/TwoWindingsTransformerField.java b/src/main/java/org/gridsuite/modification/server/dto/byfilter/equipmentfield/TwoWindingsTransformerField.java index 0f47b3eca..3294d4540 100644 --- a/src/main/java/org/gridsuite/modification/server/dto/byfilter/equipmentfield/TwoWindingsTransformerField.java +++ b/src/main/java/org/gridsuite/modification/server/dto/byfilter/equipmentfield/TwoWindingsTransformerField.java @@ -63,8 +63,6 @@ public static void setNewValue(TwoWindingsTransformer transformer, String twoWin TwoWindingsTransformerField field = TwoWindingsTransformerField.valueOf(twoWindingsTransformerField); final PhaseTapChanger phaseTapChanger = transformer.getPhaseTapChanger(); final RatioTapChanger ratioTapChanger = transformer.getRatioTapChanger(); - final AttributeModification regulationMode = phaseTapChanger != null ? - AttributeModification.toAttributeModification(phaseTapChanger.getRegulationMode(), OperationType.SET) : null; final AttributeModification attributeModification = new AttributeModification<>(Double.parseDouble(newValue), OperationType.SET); switch (field) { @@ -82,7 +80,7 @@ public static void setNewValue(TwoWindingsTransformer transformer, String twoWin null, new AttributeModification<>((int) Double.parseDouble(newValue), OperationType.SET), null, null); case RATIO_TARGET_DEADBAND -> modifyTargets(ratioTapChanger, null, true, null, attributeModification, null); case REGULATION_VALUE -> processPhaseTapRegulation( - phaseTapChanger, null, true, regulationMode, attributeModification, null, null); + phaseTapChanger, null, true, null, attributeModification, null, null); case PHASE_LOW_TAP_POSITION -> processTapChangerPositionsAndSteps(phaseTapChanger, null, true, new AttributeModification<>((int) Double.parseDouble(newValue), OperationType.SET), null, null, null); case PHASE_TAP_POSITION -> processTapChangerPositionsAndSteps(phaseTapChanger, null, true, diff --git a/src/main/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModification.java b/src/main/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModification.java index d2d1edad8..75b437072 100644 --- a/src/main/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModification.java +++ b/src/main/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerModification.java @@ -231,116 +231,124 @@ private void processPhaseTapChanger(Network network, public static void processPhaseTapRegulation(PhaseTapChanger phaseTapChanger, PhaseTapChangerAdder phaseTapChangerAdder, boolean isModification, - AttributeModification regulationModeValue, - AttributeModification modifyRegulationValue, - AttributeModification modifyTargetDeadband, + AttributeModification regulationModeModification, + AttributeModification regulationValueModification, + AttributeModification targetDeadbandModification, List regulationReports) throws NetworkModificationException { - AttributeModification finalRegulationMode = regulationModeValue; - AttributeModification finalTargetDeadband = modifyTargetDeadband; - AttributeModification finalRegulating = null; - - // Regulation Mode is linked to regulating - if (isModification) { - // modification - if (regulationModeValue != null) { - Double regulationValue = modifyRegulationValue == null ? null : modifyRegulationValue.getValue(); + AttributeModification finalRegulationModeModification = regulationModeModification; + AttributeModification finalTargetDeadbandModification = targetDeadbandModification; + AttributeModification finalRegulatingModification = null; + + // --- Regulation Mode impacts on regulating => pre-processing regulating --- // + if (isModification) { // modifying an existing extension + // modification check + if (regulationModeModification != null) { PhaseTapChanger.RegulationMode oldRegulationMode = phaseTapChanger.getRegulationMode(); - PhaseTapChanger.RegulationMode newRegulationMode = regulationModeValue.getValue(); - double targetDeadBand = phaseTapChanger.getTargetDeadband(); - // if previous regulation mode was FIXED_TAP there is a check that there are all the attributes needed to regulate + PhaseTapChanger.RegulationMode newRegulationMode = regulationModeModification.getValue(); + double oldTargetDeadBand = phaseTapChanger.getTargetDeadband(); + if (oldRegulationMode == PhaseTapChanger.RegulationMode.FIXED_TAP) { - if (regulationValue == null) { - throw new NetworkModificationException(MODIFY_TWO_WINDINGS_TRANSFORMER_ERROR, "Regulation value can not be null if phase tap changer is now regulating"); - } - finalRegulating = AttributeModification.toAttributeModification(true, OperationType.SET); - finalRegulationMode = AttributeModification.toAttributeModification(newRegulationMode, OperationType.SET); - if (Double.isNaN(targetDeadBand) && modifyTargetDeadband == null) { - finalTargetDeadband = AttributeModification.toAttributeModification(0.0, OperationType.SET); + // if new regulation mode is FIXED_TAP set regulating to false + if (newRegulationMode == PhaseTapChanger.RegulationMode.FIXED_TAP) { + finalRegulatingModification = AttributeModification.toAttributeModification(false, OperationType.SET); + } else { // new regulation mode is CURRENT_LIMITER or ACTIVE_POWER_CONTROL + // check required field + if (regulationValueModification == null) { + throw new NetworkModificationException(MODIFY_TWO_WINDINGS_TRANSFORMER_ERROR, "Regulation value is missing while phase tap changer is now regulating"); + } + + // set regulating to true + finalRegulatingModification = AttributeModification.toAttributeModification(true, OperationType.SET); + + // set default value for deadband + if (Double.isNaN(oldTargetDeadBand) && targetDeadbandModification == null) { + finalTargetDeadbandModification = AttributeModification.toAttributeModification(0.0, OperationType.SET); + } } - } else { + } else { // previous regulation mode is CURRENT_LIMITER or ACTIVE_POWER_CONTROL // if new regulation mode is FIXED_TAP we keep the old regulation mode and set regulating to false if (newRegulationMode == PhaseTapChanger.RegulationMode.FIXED_TAP) { - finalRegulating = AttributeModification.toAttributeModification(false, OperationType.SET); - finalRegulationMode = AttributeModification.toAttributeModification(oldRegulationMode, OperationType.SET); - } else { - if (Double.isNaN(targetDeadBand) && modifyTargetDeadband == null) { - finalTargetDeadband = AttributeModification.toAttributeModification(0.0, OperationType.SET); + finalRegulatingModification = AttributeModification.toAttributeModification(false, OperationType.SET); + finalRegulationModeModification = AttributeModification.toAttributeModification(oldRegulationMode, OperationType.SET); + } else { // new regulation mode is CURRENT_LIMITER or ACTIVE_POWER_CONTROL + // set regulating to true + finalRegulatingModification = AttributeModification.toAttributeModification(true, OperationType.SET); + // set default value for deadband + if (Double.isNaN(oldTargetDeadBand) && targetDeadbandModification == null) { + finalTargetDeadbandModification = AttributeModification.toAttributeModification(0.0, OperationType.SET); } - finalRegulating = AttributeModification.toAttributeModification(true, OperationType.SET); - finalRegulationMode = AttributeModification.toAttributeModification(newRegulationMode, OperationType.SET); } } } } else { // creation check - if (regulationModeValue == null) { - throw new NetworkModificationException(CREATE_TWO_WINDINGS_TRANSFORMER_ERROR, "Regulation mode can not be null when creating tap phase changer"); + if (regulationModeModification == null) { + throw new NetworkModificationException(CREATE_TWO_WINDINGS_TRANSFORMER_ERROR, "Regulation mode is missing when creating tap phase changer"); } - PhaseTapChanger.RegulationMode regulationMode = regulationModeValue.getValue(); + + PhaseTapChanger.RegulationMode regulationMode = regulationModeModification.getValue(); if (regulationMode != PhaseTapChanger.RegulationMode.FIXED_TAP) { - finalRegulating = AttributeModification.toAttributeModification(true, OperationType.SET); - if (modifyRegulationValue == null) { + finalRegulatingModification = AttributeModification.toAttributeModification(true, OperationType.SET); + if (regulationValueModification == null) { throw new NetworkModificationException(CREATE_TWO_WINDINGS_TRANSFORMER_ERROR, - "Regulation value can not be null when creating tap phase changer with regulation enabled (different from FIXED_TAP)"); + "Regulation value is missing when creating tap phase changer with regulation enabled (different from FIXED_TAP)"); } - if (finalTargetDeadband == null) { - finalTargetDeadband = AttributeModification.toAttributeModification(0.0, OperationType.SET); + if (finalTargetDeadbandModification == null) { + finalTargetDeadbandModification = AttributeModification.toAttributeModification(0.0, OperationType.SET); } } else { - finalRegulating = AttributeModification.toAttributeModification(false, OperationType.SET); + finalRegulatingModification = AttributeModification.toAttributeModification(false, OperationType.SET); } } + + //c--- apply changes after pre-processing of regulating --- // setPhaseTapChangerRegulationAttributes(phaseTapChanger, phaseTapChangerAdder, isModification, - finalRegulationMode, modifyRegulationValue, finalTargetDeadband, finalRegulating, regulationReports); + finalRegulationModeModification, regulationValueModification, finalTargetDeadbandModification, finalRegulatingModification, regulationReports); } private static void setPhaseTapChangerRegulationAttributes(PhaseTapChanger phaseTapChanger, PhaseTapChangerAdder phaseTapChangerAdder, boolean isModification, - AttributeModification regulationModeValue, - AttributeModification modifyRegulationValue, - AttributeModification modifyTargetDeadband, - AttributeModification regulating, + AttributeModification regulationModeModification, + AttributeModification regulationValueModification, + AttributeModification targetDeadbandModification, + AttributeModification regulatingModification, List regulationReports) { // the order is important if regulation mode is set and regulation value or target dead band is null it will crash - PhaseTapChanger.RegulationMode regulationMode = regulationModeValue == null ? null : regulationModeValue.getValue(); + PhaseTapChanger.RegulationMode regulationMode = regulationModeModification == null ? null : regulationModeModification.getValue(); String fieldName = (regulationMode == PhaseTapChanger.RegulationMode.CURRENT_LIMITER) ? "Value" : "Flow set point"; // Regulation value ReportNode regulationValueReportNode = ModificationUtils.getInstance().applyElementaryModificationsAndReturnReport( isModification ? phaseTapChanger::setRegulationValue : phaseTapChangerAdder::setRegulationValue, isModification ? phaseTapChanger::getRegulationValue : () -> null, - modifyRegulationValue, fieldName, 1); + regulationValueModification, fieldName, 1); if (regulationReports != null && regulationValueReportNode != null) { regulationReports.add(regulationValueReportNode); } // targetDeadBand ReportNode targetDeadbandReportNode = ModificationUtils.getInstance().applyElementaryModificationsAndReturnReport( - isModification ? phaseTapChanger::setTargetDeadband - : phaseTapChangerAdder::setTargetDeadband, + isModification ? phaseTapChanger::setTargetDeadband : phaseTapChangerAdder::setTargetDeadband, isModification ? phaseTapChanger::getTargetDeadband : () -> null, - modifyTargetDeadband, "Target deadband", 1); + targetDeadbandModification, "Target deadband", 1); if (regulationReports != null && targetDeadbandReportNode != null) { regulationReports.add(targetDeadbandReportNode); } // RegulationMode ReportNode regulationReportNode = ModificationUtils.getInstance().applyElementaryModificationsAndReturnReport( - isModification ? phaseTapChanger::setRegulationMode - : phaseTapChangerAdder::setRegulationMode, + isModification ? phaseTapChanger::setRegulationMode : phaseTapChangerAdder::setRegulationMode, isModification ? phaseTapChanger::getRegulationMode : () -> null, - AttributeModification.toAttributeModification(regulationMode, OperationType.SET), - "Regulation mode", 1); + regulationModeModification, "Regulation mode", 1); if (regulationReports != null && regulationReportNode != null) { regulationReports.add(regulationReportNode); } // Regulating ReportNode regulatingReportNode = ModificationUtils.getInstance().applyElementaryModificationsAndReturnReport( - isModification ? phaseTapChanger::setRegulating - : phaseTapChangerAdder::setRegulating, + isModification ? phaseTapChanger::setRegulating : phaseTapChangerAdder::setRegulating, isModification ? phaseTapChanger::isRegulating : () -> null, - regulating, "Phase tap regulating", 1); + regulatingModification, "Phase tap regulating", 1); if (regulationReports != null && regulatingReportNode != null) { regulationReports.add(regulatingReportNode); }