Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import com.powsybl.cgmes.model.CgmesNames;
import com.powsybl.iidm.network.StaticVarCompensator;
import com.powsybl.iidm.network.StaticVarCompensatorAdder;
import com.powsybl.iidm.network.extensions.VoltagePerReactivePowerControlAdder;
import com.powsybl.iidm.network.regulation.RegulationMode;
import com.powsybl.iidm.network.regulation.VoltageRegulation;
import com.powsybl.triplestore.api.PropertyBag;
Expand Down Expand Up @@ -46,8 +45,8 @@ public void convert() {
StaticVarCompensator svc = adder.add();
addAliasesAndProperties(svc);
convertedTerminalsWithOnlyEq(svc.getTerminal());
if (slope >= 0) {
svc.newExtension(VoltagePerReactivePowerControlAdder.class).withSlope(slope).add();
if (svc.getVoltageRegulation() != null && slope >= 0) {
svc.getVoltageRegulation().setSlope(slope);
}

context.regulatingControlMapping().forStaticVarCompensators().add(svc.getId(), p);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import com.powsybl.commons.exceptions.UncheckedXmlStreamException;
import com.powsybl.iidm.network.*;
import com.powsybl.iidm.network.Identifiable;
import com.powsybl.iidm.network.extensions.VoltagePerReactivePowerControl;

import com.powsybl.math.graph.TraverseResult;
import org.apache.commons.lang3.tuple.Pair;
Expand Down Expand Up @@ -625,7 +624,10 @@ private static void writeStaticVarCompensators(Network network, Map<Terminal, St
String regulatingControlId = RegulatingControlEq.writeRegulatingControlEq(svc, exportedTerminalId(mapTerminal2Id, svc.getRegulatingTerminal()), regulatingControlsWritten, mode, cimNamespace, writer, context);
double inductiveRating = svc.getBmin() != 0 ? 1 / svc.getBmin() : 0;
double capacitiveRating = svc.getBmax() != 0 ? 1 / svc.getBmax() : 0;
StaticVarCompensatorEq.write(context.getNamingStrategy().getCgmesId(svc), svc.getNameOrId(), context.getNamingStrategy().getCgmesId(svc.getTerminal().getVoltageLevel()), regulatingControlId, inductiveRating, capacitiveRating, svc.getExtension(VoltagePerReactivePowerControl.class), svc.getVoltageRegulation().getMode(), svc.getRegulatingTargetV(), cimNamespace, writer, context);
StaticVarCompensatorEq.write(context.getNamingStrategy().getCgmesId(svc), svc.getNameOrId(),
context.getNamingStrategy().getCgmesId(svc.getTerminal().getVoltageLevel()),
regulatingControlId, inductiveRating, capacitiveRating, svc.getVoltageRegulation().getSlope(),
svc.getVoltageRegulation().getMode(), svc.getRegulatingTargetV(), cimNamespace, writer, context);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import com.powsybl.cgmes.conversion.export.CgmesExportUtil;
import com.powsybl.cgmes.model.CgmesNames;
import com.powsybl.commons.PowsyblException;
import com.powsybl.iidm.network.extensions.VoltagePerReactivePowerControl;
import com.powsybl.iidm.network.regulation.RegulationMode;

import javax.xml.stream.XMLStreamException;
Expand All @@ -30,7 +29,7 @@ public final class StaticVarCompensatorEq {
private static final String EQ_STATICVARCOMPENSATOR_SVCCONTROLMODE = "StaticVarCompensator.sVCControlMode";
private static final String EQ_STATICVARCOMPENSATOR_VOLTAGESETPOINT = "StaticVarCompensator.voltageSetPoint";

public static void write(String id, String svcName, String equipmentContainer, String regulatingControlId, double inductiveRating, double capacitiveRating, VoltagePerReactivePowerControl voltagePerReactivePowerControl,
public static void write(String id, String svcName, String equipmentContainer, String regulatingControlId, double inductiveRating, double capacitiveRating, double slope,
RegulationMode svcControlMode, double voltageSetPoint, String cimNamespace, XMLStreamWriter writer, CgmesExportContext context) throws XMLStreamException {
CgmesExportUtil.writeStartIdName("StaticVarCompensator", id, svcName, cimNamespace, writer, context);
CgmesExportUtil.writeReference("Equipment.EquipmentContainer", equipmentContainer, cimNamespace, writer, context);
Expand All @@ -44,11 +43,7 @@ public static void write(String id, String svcName, String equipmentContainer, S
writer.writeCharacters(CgmesExportUtil.format(capacitiveRating));
writer.writeEndElement();
writer.writeStartElement(cimNamespace, EQ_STATICVARCOMPENSATOR_SLOPE);
if (voltagePerReactivePowerControl != null) {
writer.writeCharacters(CgmesExportUtil.format(voltagePerReactivePowerControl.getSlope()));
} else {
writer.writeCharacters(CgmesExportUtil.format(0.0));
}
writer.writeCharacters(CgmesExportUtil.format(Double.isNaN(slope) ? 0. : slope));
writer.writeEndElement();
writer.writeEmptyElement(cimNamespace, EQ_STATICVARCOMPENSATOR_SVCCONTROLMODE);
writer.writeAttribute(RDF_NAMESPACE, CgmesNames.RESOURCE, cimNamespace + regulationMode(svcControlMode));
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,29 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* SPDX-License-Identifier: MPL-2.0
*/
package com.powsybl.iidm.network.impl.extensions;
package com.powsybl.iidm.network.extensions.removed;

import com.powsybl.commons.PowsyblException;
import com.powsybl.commons.extensions.AbstractExtension;
import com.powsybl.commons.extensions.Extension;
import com.powsybl.iidm.network.StaticVarCompensator;
import com.powsybl.iidm.network.extensions.VoltagePerReactivePowerControl;

/**
* @author Geoffroy Jamgotchian {@literal <geoffroy.jamgotchian at rte-france.com>}
* @author Anne Tilloy {@literal <anne.tilloy at rte-france.com>}
* @author Olivier Perrin {@literal <olivier.perrin at rte-france.com>}
*/
public class VoltagePerReactivePowerControlImpl extends AbstractExtension<StaticVarCompensator> implements VoltagePerReactivePowerControl {
public class VoltagePerReactivePowerControl implements Extension<StaticVarCompensator> {

public static final String NAME = "voltagePerReactivePowerControl";

private StaticVarCompensator svc;
private double slope;

public VoltagePerReactivePowerControlImpl(StaticVarCompensator svc, double slope) {
super(svc);
public VoltagePerReactivePowerControl(StaticVarCompensator svc, double slope) {
this.svc = svc;
this.slope = checkSlope(slope);
}

@Override
public double getSlope() {
return slope;
}
Expand All @@ -40,8 +42,23 @@ private double checkSlope(double slope) {
throw new PowsyblException("Undefined value for slope");
}
if (slope < 0) {
throw new PowsyblException("Slope value of SVC " + getExtendable().getId() + " must be positive: " + slope);
throw new PowsyblException("Slope value of SVC " + svc.getId() + " must be positive: " + slope);
}
return slope;
}

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

@Override
public StaticVarCompensator getExtendable() {
return svc;
}

@Override
public void setExtendable(StaticVarCompensator extendable) {
svc = extendable;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,8 @@ public boolean isRegulating() {
*/
@Override
public boolean setRegulating(boolean regulating) {
// TODO OPE changing "regulating" or the "regulationMode" should trigger the check of all the attributes
// See for instance the check for the slope. It depends on "regulating" and "regulationMode".
ValidationUtil.checkVoltageRegulation(validable, this, regulating, network.get(), classHolder, network.get().getMinValidationLevel(), network.get().getReportNodeContext().getReportNode());
return this.regulating.set(getCurrentIndex(), regulating);
}
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ protected boolean isValid(T identifiable, P parent) {

protected abstract void writeRootElementAttributes(T identifiable, P parent, NetworkSerializerContext context);

protected void addExtinctExtensions(T identifiable, NetworkSerializerContext context) {
}

protected void writeSubElements(T identifiable, P parent, NetworkSerializerContext context) {
}

Expand All @@ -38,6 +41,7 @@ public final void write(T identifiable, P parent, NetworkSerializerContext conte
IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_2, context, () -> context.getWriter().writeBooleanAttribute("fictitious", identifiable.isFictitious(), false));

writeRootElementAttributes(identifiable, parent, context);
addExtinctExtensions(identifiable, context);

IidmSerDeUtil.runFromMinimumVersion(IidmVersion.V_1_3, context, () -> AliasesSerDe.write(identifiable, getRootElementName(), context));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
import com.powsybl.iidm.network.Battery;
import com.powsybl.iidm.network.BatteryAdder;
import com.powsybl.iidm.network.VoltageLevel;
import com.powsybl.iidm.network.extensions.removed.VoltageRegulationExtension;
import com.powsybl.iidm.network.regulation.RegulationMode;
import com.powsybl.iidm.serde.util.IidmSerDeUtil;

import static com.powsybl.iidm.serde.ConnectableSerDeUtil.*;
Expand Down Expand Up @@ -43,6 +45,17 @@ protected void writeRootElementAttributes(Battery b, VoltageLevel vl, NetworkSer
writePQ(null, b.getTerminal(), context.getWriter());
}

@Override
protected void addExtinctExtensions(Battery b, NetworkSerializerContext context) {
if (com.powsybl.iidm.serde.extensions.VoltageRegulationSerDe.isExtensionNeededAndExportable(b, context)) {
VoltageRegulationExtension extension = new VoltageRegulationExtension(b,
b.getVoltageRegulation().getTerminal(),
b.getVoltageRegulation().getMode() == RegulationMode.VOLTAGE,
b.getVoltageRegulation().getTargetValue());
context.addExtinctExtensionsToSerialize(b.getId(), extension);
}
}

@Override
protected void writeSubElements(Battery b, VoltageLevel vl, NetworkSerializerContext context) {
ReactiveLimitsSerDe.INSTANCE.write(b, context);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
package com.powsybl.iidm.serde;

import com.powsybl.iidm.network.*;
import com.powsybl.iidm.network.extensions.removed.RemoteReactivePowerControl;
import com.powsybl.iidm.network.regulation.RegulationMode;
import com.powsybl.iidm.serde.extensions.RemoteReactivePowerControlSerDe;
import com.powsybl.iidm.serde.util.IidmSerDeUtil;

import java.util.concurrent.atomic.AtomicReference;
Expand Down Expand Up @@ -90,6 +92,17 @@ private static void writeTargetQByVersion(Generator g, NetworkSerializerContext
context.getWriter().writeDoubleAttribute("targetQ", g.getTargetQ()));
}

@Override
protected void addExtinctExtensions(Generator g, NetworkSerializerContext context) {
if (RemoteReactivePowerControlSerDe.isExtensionNeededAndExportable(g, context)) {
RemoteReactivePowerControl extension = new RemoteReactivePowerControl(g,
g.getVoltageRegulation().getTargetValue(),
g.getVoltageRegulation().getTerminal(),
g.getVoltageRegulation().isRegulating());
context.addExtinctExtensionsToSerialize(g.getId(), extension);
}
}

@Override
protected void writeSubElements(Generator g, VoltageLevel vl, NetworkSerializerContext context) {
IidmSerDeUtil.runUntilMaximumVersion(IidmVersion.V_1_15, context, () -> {
Expand Down
Loading