Skip to content

Commit

Permalink
Merge branch 'main' into psse_discard_badly_connected_equipment
Browse files Browse the repository at this point in the history
  • Loading branch information
marqueslanauja authored Mar 5, 2025
2 parents 0780f71 + 081f94b commit 9b60b47
Show file tree
Hide file tree
Showing 7 changed files with 129 additions and 217 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -674,11 +674,7 @@ public BaseVoltageMapping.BaseVoltageSource getBaseVoltageByNominalVoltage(doubl
}

public boolean writeConnectivityNodes() {
boolean writeConnectivityNodes = cim.writeConnectivityNodes();
if (!writeConnectivityNodes) {
return topologyKind == CgmesTopologyKind.NODE_BREAKER;
}
return true;
return getCimVersion() == 100 || topologyKind == CgmesTopologyKind.NODE_BREAKER;
}

public Collection<String> getRegionsIds() {
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public final class GeneratingUnitEq {
private static final String EQ_GENERATINGUNIT_MAXP = "GeneratingUnit.maxOperatingP";
private static final String EQ_GENERATINGUNIT_INITIALP = "GeneratingUnit.initialP";

public static void write(String id, String generatingUnitName, EnergySource energySource, double minP, double maxP, double initialP, String cimNamespace, boolean writeInitialP,
public static void write(String id, String generatingUnitName, EnergySource energySource, double minP, double maxP, double initialP, String cimNamespace,
String equipmentContainer, String hydroPowerPlantId, String windGenUnitType, XMLStreamWriter writer, CgmesExportContext context) throws XMLStreamException {
CgmesExportUtil.writeStartIdName(generatingUnitClassName(energySource), id, generatingUnitName, cimNamespace, writer, context);
writer.writeStartElement(cimNamespace, EQ_GENERATINGUNIT_MINP);
Expand All @@ -35,7 +35,7 @@ public static void write(String id, String generatingUnitName, EnergySource ener
writer.writeStartElement(cimNamespace, EQ_GENERATINGUNIT_MAXP);
writer.writeCharacters(CgmesExportUtil.format(maxP));
writer.writeEndElement();
if (writeInitialP) {
if (context.getCimVersion() == 16) {
writer.writeStartElement(cimNamespace, EQ_GENERATINGUNIT_INITIALP);
writer.writeCharacters(CgmesExportUtil.format(initialP));
writer.writeEndElement();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@
public final class LoadingLimitEq {

public static void write(String id, LoadingLimits loadingLimits, String name, double value,
String operationalLimitTypeId, String operationalLimitSetId, String cimNamespace, String valueAttributeName, XMLStreamWriter writer, CgmesExportContext context) throws XMLStreamException {
String operationalLimitTypeId, String operationalLimitSetId, String cimNamespace, XMLStreamWriter writer, CgmesExportContext context) throws XMLStreamException {
String cgmesClass = loadingLimitClassName(loadingLimits);
CgmesExportUtil.writeStartIdName(cgmesClass, id, name, cimNamespace, writer, context);
writer.writeStartElement(cimNamespace, cgmesClass + "." + valueAttributeName);
writer.writeStartElement(cimNamespace, cgmesClass + "." + getLimitValueAttributeName(context));
writer.writeCharacters(CgmesExportUtil.format(value));
writer.writeEndElement();
CgmesExportUtil.writeReference("OperationalLimit.OperationalLimitSet", operationalLimitSetId, cimNamespace, writer, context);
Expand All @@ -46,6 +46,16 @@ public static String loadingLimitClassName(LoadingLimits loadingLimits) {
throw new PowsyblException("Unsupported loading limits " + loadingLimits.getClass().getSimpleName());
}

public static String getLimitValueAttributeName(CgmesExportContext context) {
if (context.getCimVersion() == 14) {
throw new PowsyblException("Undefined limit value attribute name for version 14");
} else if (context.getCimVersion() == 16) {
return "value";
} else {
return "normalValue";
}
}

private LoadingLimitEq() {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.powsybl.cgmes.conversion.export.CgmesExportContext;
import com.powsybl.cgmes.conversion.export.CgmesExportUtil;
import com.powsybl.cgmes.model.CgmesNames;
import com.powsybl.commons.PowsyblException;

import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
Expand All @@ -25,22 +26,22 @@ public final class OperationalLimitTypeEq {
private static final String PATL = "patl";
private static final String TATL = "tatl";

public static void writePatl(String id, String cimNamespace, String euNamespace, String limitTypeAttributeName, String limitKindClassName, boolean writeInfiniteDuration, XMLStreamWriter writer, CgmesExportContext context) throws XMLStreamException {
public static void writePatl(String id, String cimNamespace, String euNamespace, XMLStreamWriter writer, CgmesExportContext context) throws XMLStreamException {
CgmesExportUtil.writeStartIdName("OperationalLimitType", id, "PATL", cimNamespace, writer, context);
writeDirection(cimNamespace, writer);
writeKind(PATL, euNamespace, limitTypeAttributeName, limitKindClassName, writer);
if (writeInfiniteDuration) {
writeKind(PATL, euNamespace, writer, context);
if (context.getCimVersion() == 100) {
writeInfiniteDuration(true, cimNamespace, writer);
}
writer.writeEndElement();
}

public static void writeTatl(String id, int acceptableDuration, String cimNamespace, String euNamespace,
String limitTypeAttributeName, String limitKindClassName, boolean writeInfiniteDuration, XMLStreamWriter writer, CgmesExportContext context) throws XMLStreamException {
XMLStreamWriter writer, CgmesExportContext context) throws XMLStreamException {
CgmesExportUtil.writeStartIdName("OperationalLimitType", id, "TATL " + acceptableDuration, cimNamespace, writer, context);
writeDirection(cimNamespace, writer);
writeKind(TATL, euNamespace, limitTypeAttributeName, limitKindClassName, writer);
if (writeInfiniteDuration) {
writeKind(TATL, euNamespace, writer, context);
if (context.getCimVersion() == 100) {
writeInfiniteDuration(false, cimNamespace, writer);
}
writer.writeStartElement(cimNamespace, "OperationalLimitType.acceptableDuration");
Expand All @@ -54,9 +55,9 @@ private static void writeDirection(String cimNamespace, XMLStreamWriter writer)
writer.writeAttribute(RDF_NAMESPACE, CgmesNames.RESOURCE, cimNamespace + ABSOLUTEVALUE_LIMITDIRECTION);
}

private static void writeKind(String kind, String euNamespace, String limitTypeAttributeName, String limitKindClassName, XMLStreamWriter writer) throws XMLStreamException {
writer.writeEmptyElement(euNamespace, limitTypeAttributeName);
writer.writeAttribute(RDF_NAMESPACE, CgmesNames.RESOURCE, String.format("%s%s.%s", euNamespace, limitKindClassName, kind));
private static void writeKind(String kind, String euNamespace, XMLStreamWriter writer, CgmesExportContext context) throws XMLStreamException {
writer.writeEmptyElement(euNamespace, getLimitTypeAttributeName(context));
writer.writeAttribute(RDF_NAMESPACE, CgmesNames.RESOURCE, String.format("%s%s.%s", euNamespace, getLimitKindClassName(context), kind));
}

private static void writeInfiniteDuration(boolean infiniteDuration, String cimNamespace, XMLStreamWriter writer) throws XMLStreamException {
Expand All @@ -65,6 +66,26 @@ private static void writeInfiniteDuration(boolean infiniteDuration, String cimNa
writer.writeEndElement();
}

public static String getLimitTypeAttributeName(CgmesExportContext context) {
if (context.getCimVersion() == 14) {
throw new PowsyblException("Undefined limit type attribute name for version 14");
} else if (context.getCimVersion() == 16) {
return "OperationalLimitType.limitType";
} else {
return "OperationalLimitType.kind";
}
}

public static String getLimitKindClassName(CgmesExportContext context) {
if (context.getCimVersion() == 14) {
throw new PowsyblException("Undefined limit kind class name for version 14");
} else if (context.getCimVersion() == 16) {
return "LimitTypeKind";
} else {
return "LimitKind";
}
}

private OperationalLimitTypeEq() {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ public static void writeRatio(String id, String tapChangerName, String transform
writer.writeCharacters(CgmesExportUtil.format(stepVoltageIncrement));
writer.writeEndElement();
writeSteps(lowStep, highStep, neutralStep, normalStep, neutralU, ltcFlag, cimNamespace, writer);
if (context.getCim().writeTculControlMode()) {
if (context.getCimVersion() <= 16) {
writer.writeEmptyElement(cimNamespace, "RatioTapChanger.tculControlMode");
writer.writeAttribute(RDF_NAMESPACE, CgmesNames.RESOURCE, String.format("%s%s.%s", cimNamespace, "TransformerControlMode", controlMode));
}
Expand Down
Loading

0 comments on commit 9b60b47

Please sign in to comment.