Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Offset dt in crac creation parameters #1085

Closed
wants to merge 3 commits into from
Closed
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 @@ -32,17 +32,19 @@ class CimCracCreator {
private Network network;
CimCracCreationContext creationContext;

CimCracCreationContext createCrac(CRACMarketDocument cimCrac, Network network, OffsetDateTime offsetDateTime, CracCreationParameters parameters) {
CimCracCreationContext createCrac(CRACMarketDocument cimCrac, Network network, CracCreationParameters parameters) {
// Set attributes
this.crac = parameters.getCracFactory().create(cimCrac.getMRID());
addCimInstants();
RaUsageLimitsAdder.addRaUsageLimits(crac, parameters);
this.network = network;
this.cimTimeSeries = new ArrayList<>(cimCrac.getTimeSeries());
this.creationContext = new CimCracCreationContext(crac, offsetDateTime, network.getNameOrId());

// Get warning messages from parameters parsing
CimCracCreationParameters cimCracCreationParameters = parameters.getExtension(CimCracCreationParameters.class);

this.creationContext = new CimCracCreationContext(crac, cimCracCreationParameters == null ? null : cimCracCreationParameters.getOffsetDateTime(), network.getNameOrId());

// Get warning messages from parameters parsing
if (cimCracCreationParameters != null) {
cimCracCreationParameters.getFailedParseWarnings().forEach(message -> creationContext.getCreationReport().warn(message));
if (!cimCracCreationParameters.getTimeseriesMrids().isEmpty()) {
Expand All @@ -53,15 +55,15 @@ CimCracCreationContext createCrac(CRACMarketDocument cimCrac, Network network, O
}
}

if (offsetDateTime == null) {
if (cimCracCreationParameters.getOffsetDateTime() == null) {
creationContext.getCreationReport().error("Timestamp is null for cim crac creator.");
creationContext.setCreationFailure();
return creationContext;
} else {
String cracTimePeriodStart = cimCrac.getTimePeriodTimeInterval().getStart();
String cracTimePeriodEnd = cimCrac.getTimePeriodTimeInterval().getEnd();
if (!isInTimeInterval(offsetDateTime, cracTimePeriodStart, cracTimePeriodEnd)) {
creationContext.getCreationReport().error(String.format("Timestamp %s is not in time interval [%s %s].", offsetDateTime, cracTimePeriodStart, cracTimePeriodEnd));
if (!isInTimeInterval(cimCracCreationParameters.getOffsetDateTime(), cracTimePeriodStart, cracTimePeriodEnd)) {
creationContext.getCreationReport().error(String.format("Timestamp %s is not in time interval [%s %s].", cimCracCreationParameters.getOffsetDateTime(), cracTimePeriodStart, cracTimePeriodEnd));
creationContext.setCreationFailure();
return creationContext;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import java.io.InputStream;
import java.io.UncheckedIOException;
import java.net.MalformedURLException;
import java.time.OffsetDateTime;
import java.util.Objects;

import static com.powsybl.openrao.commons.logs.OpenRaoLoggerProvider.BUSINESS_LOGS;
Expand Down Expand Up @@ -89,8 +88,8 @@ public boolean exists(String s, InputStream inputStream) {
}

@Override
public CracCreationContext importData(InputStream inputStream, CracCreationParameters cracCreationParameters, Network network, OffsetDateTime offsetDateTime) {
return new CimCracCreator().createCrac(importNativeCrac(inputStream), network, offsetDateTime, cracCreationParameters);
public CracCreationContext importData(InputStream inputStream, CracCreationParameters cracCreationParameters, Network network) {
return new CimCracCreator().createCrac(importNativeCrac(inputStream), network, cracCreationParameters);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@
import com.powsybl.openrao.commons.OpenRaoException;
import com.powsybl.openrao.data.cracapi.parameters.AbstractAlignedRaCracCreationParameters;

import java.time.OffsetDateTime;
import java.util.*;

/**
* @author Baptiste Seguinot {@literal <baptiste.seguinot at rte-france.com>}
*/
public class CimCracCreationParameters extends AbstractAlignedRaCracCreationParameters {
private OffsetDateTime offsetDateTime = null;
private Set<String> timeseriesMrids = new HashSet<>();
private Set<RangeActionSpeed> speedSet = new HashSet<>();
private VoltageCnecsCreationParameters voltageCnecsCreationParameters = null;
Expand All @@ -24,10 +26,18 @@ public String getName() {
return "CimCracCreatorParameters";
}

public OffsetDateTime getOffsetDateTime() {
return offsetDateTime;
}

public Set<String> getTimeseriesMrids() {
return timeseriesMrids;
}

public void setOffsetDateTime(OffsetDateTime offsetDateTime) {
this.offsetDateTime = offsetDateTime;
}

public void setTimeseriesMrids(Set<String> timeseriesMrids) {
this.timeseriesMrids = new HashSet<>(timeseriesMrids);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import com.google.auto.service.AutoService;

import java.io.IOException;
import java.time.OffsetDateTime;
import java.util.*;

/**
Expand All @@ -24,6 +25,7 @@
@AutoService(JsonCracCreationParameters.ExtensionSerializer.class)
public class JsonCimCracCreationParameters implements JsonCracCreationParameters.ExtensionSerializer<CimCracCreationParameters> {

private static final String OFFSET_DATE_TIME = "offset-date-time";
private static final String RANGE_ACTION_GROUPS = "range-action-groups";
private static final String RANGE_ACTION_SPEEDS = "range-action-speeds";
private static final String RANGE_ACTION_ID = "range-action-id";
Expand All @@ -34,6 +36,7 @@ public class JsonCimCracCreationParameters implements JsonCracCreationParameters
@Override
public void serialize(CimCracCreationParameters cimParameters, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeStartObject();
serializeOffsetDateTime(cimParameters.getOffsetDateTime(), jsonGenerator);
serializeTimeseriesMrids(cimParameters.getTimeseriesMrids(), jsonGenerator);
serializeRangeActionGroups(cimParameters.getRangeActionGroupsAsString(), jsonGenerator);
serializeRangeActionSpeedSet(cimParameters.getRangeActionSpeedSet(), jsonGenerator);
Expand All @@ -50,6 +53,10 @@ public CimCracCreationParameters deserialize(JsonParser jsonParser, Deserializat
public CimCracCreationParameters deserializeAndUpdate(JsonParser jsonParser, DeserializationContext deserializationContext, CimCracCreationParameters parameters) throws IOException {
while (!jsonParser.nextToken().isStructEnd()) {
switch (jsonParser.getCurrentName()) {
case OFFSET_DATE_TIME:
jsonParser.nextToken();
parameters.setOffsetDateTime(OffsetDateTime.parse(jsonParser.readValueAs(String.class)));
break;
case TIMESERIES_MRIDS:
jsonParser.nextToken();
parameters.setTimeseriesMrids(jsonParser.readValueAs(Set.class));
Expand Down Expand Up @@ -89,6 +96,12 @@ public Class<? super CimCracCreationParameters> getExtensionClass() {
return CimCracCreationParameters.class;
}

private void serializeOffsetDateTime(OffsetDateTime offsetDateTime, JsonGenerator jsonGenerator) throws IOException {
if (offsetDateTime != null) {
jsonGenerator.writeStringField(OFFSET_DATE_TIME, offsetDateTime.toString());
}
}

private void serializeTimeseriesMrids(Set<String> timeseriesMrids, JsonGenerator jsonGenerator) throws IOException {
if (!timeseriesMrids.isEmpty()) {
serializeStringArray(TIMESERIES_MRIDS, timeseriesMrids.stream().sorted(String::compareTo).toList(), jsonGenerator);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,8 @@ public static void loadHvdcNetwork() {

private void setUp(String fileName, Network network, OffsetDateTime parametrableOffsetDateTime, CracCreationParameters cracCreationParameters) throws IOException {
InputStream is = getClass().getResourceAsStream(fileName);
cracCreationContext = (CimCracCreationContext) Crac.readWithContext(fileName, is, network, parametrableOffsetDateTime, cracCreationParameters);
addOffsetDateTimeToCracCreationParameters(parametrableOffsetDateTime, cracCreationParameters);
cracCreationContext = (CimCracCreationContext) Crac.readWithContext(fileName, is, network, cracCreationParameters);
importedCrac = cracCreationContext.getCrac();
if (!Objects.isNull(importedCrac)) {
preventiveInstant = importedCrac.getInstant(PREVENTIVE_INSTANT_ID);
Expand All @@ -89,6 +90,16 @@ private void setUp(String fileName, Network network, OffsetDateTime parametrable
}
}

private void addOffsetDateTimeToCracCreationParameters(OffsetDateTime parametrableOffsetDateTime, CracCreationParameters cracCreationParameters) {
if (cracCreationParameters.getExtension(CimCracCreationParameters.class) != null) {
cracCreationParameters.getExtension(CimCracCreationParameters.class).setOffsetDateTime(parametrableOffsetDateTime);
} else {
CimCracCreationParameters cimCracCreationParameters = new CimCracCreationParameters();
cimCracCreationParameters.setOffsetDateTime(parametrableOffsetDateTime);
cracCreationParameters.addExtension(CimCracCreationParameters.class, cimCracCreationParameters);
}
}

private void setUpWithGroupId(String fileName, Network network, OffsetDateTime parametrableOffsetDateTime, List<List<String>> alignedRangeActions) throws IOException {
CracCreationParameters cracCreationParameters = new CracCreationParameters();
cracCreationParameters.setDefaultMonitoredLineSide(CracCreationParameters.MonitoredLineSide.MONITOR_LINES_ON_SIDE_ONE);
Expand All @@ -97,11 +108,12 @@ private void setUpWithGroupId(String fileName, Network network, OffsetDateTime p
Mockito.when(cracCreationParameters.getExtension(CimCracCreationParameters.class)).thenReturn(cimCracCreationParameters);
List<RangeActionGroup> rangeActionGroups = new ArrayList<>();
alignedRangeActions.forEach(listAlignedRangeActions -> rangeActionGroups.add(new RangeActionGroup(listAlignedRangeActions)));
Mockito.when(cimCracCreationParameters.getOffsetDateTime()).thenReturn(parametrableOffsetDateTime);
Mockito.when(cimCracCreationParameters.getRangeActionGroups()).thenReturn(rangeActionGroups);
Mockito.when(cimCracCreationParameters.getTimeseriesMrids()).thenReturn(Collections.emptySet());

InputStream is = getClass().getResourceAsStream(fileName);
cracCreationContext = (CimCracCreationContext) Crac.readWithContext(fileName, is, network, parametrableOffsetDateTime, cracCreationParameters);
cracCreationContext = (CimCracCreationContext) Crac.readWithContext(fileName, is, network, cracCreationParameters);
importedCrac = cracCreationContext.getCrac();
preventiveInstant = importedCrac.getInstant(PREVENTIVE_INSTANT_ID);
autoInstant = importedCrac.getInstant(AUTO_INSTANT_ID);
Expand All @@ -114,10 +126,11 @@ private void setUpWithSpeed(String fileName, Network network, OffsetDateTime par
cracCreationParameters = Mockito.spy(cracCreationParameters);
CimCracCreationParameters cimCracCreationParameters = Mockito.mock(CimCracCreationParameters.class);
Mockito.when(cracCreationParameters.getExtension(CimCracCreationParameters.class)).thenReturn(cimCracCreationParameters);
Mockito.when(cimCracCreationParameters.getOffsetDateTime()).thenReturn(parametrableOffsetDateTime);
Mockito.when(cimCracCreationParameters.getRangeActionSpeedSet()).thenReturn(rangeActionSpeeds);
Mockito.when(cimCracCreationParameters.getTimeseriesMrids()).thenReturn(Collections.emptySet());
InputStream is = getClass().getResourceAsStream(fileName);
cracCreationContext = (CimCracCreationContext) Crac.readWithContext(fileName, is, network, parametrableOffsetDateTime, cracCreationParameters);
cracCreationContext = (CimCracCreationContext) Crac.readWithContext(fileName, is, network, cracCreationParameters);
importedCrac = cracCreationContext.getCrac();
preventiveInstant = importedCrac.getInstant(PREVENTIVE_INSTANT_ID);
autoInstant = importedCrac.getInstant(AUTO_INSTANT_ID);
Expand All @@ -130,9 +143,10 @@ private void setUpWithTimeseriesMrids(String fileName, Network network, OffsetDa
cracCreationParameters = Mockito.spy(cracCreationParameters);
CimCracCreationParameters cimCracCreationParameters = Mockito.mock(CimCracCreationParameters.class);
Mockito.when(cracCreationParameters.getExtension(CimCracCreationParameters.class)).thenReturn(cimCracCreationParameters);
Mockito.when(cimCracCreationParameters.getOffsetDateTime()).thenReturn(parametrableOffsetDateTime);
Mockito.when(cimCracCreationParameters.getTimeseriesMrids()).thenReturn(timeseriesMrids);
InputStream is = getClass().getResourceAsStream(fileName);
cracCreationContext = (CimCracCreationContext) Crac.readWithContext(fileName, is, network, parametrableOffsetDateTime, cracCreationParameters);
cracCreationContext = (CimCracCreationContext) Crac.readWithContext(fileName, is, network, cracCreationParameters);
importedCrac = cracCreationContext.getCrac();
preventiveInstant = importedCrac.getInstant(PREVENTIVE_INSTANT_ID);
autoInstant = importedCrac.getInstant(AUTO_INSTANT_ID);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import com.powsybl.openrao.data.cracapi.cnec.VoltageCnec;
import com.powsybl.openrao.data.cracapi.parameters.CracCreationParameters;
import com.powsybl.openrao.data.craccreation.creator.api.ImportStatus;
import com.powsybl.openrao.data.craccreation.creator.cim.parameters.CimCracCreationParameters;
import com.powsybl.openrao.data.craccreation.creator.cim.parameters.VoltageCnecsCreationParameters;
import com.powsybl.openrao.data.craccreation.creator.cim.parameters.VoltageMonitoredContingenciesAndThresholds;
import com.powsybl.openrao.data.craccreation.creator.cim.parameters.VoltageThreshold;
Expand Down Expand Up @@ -57,7 +58,13 @@ public void setUp() throws IOException {
network = Network.read(Paths.get(new File(CimCracCreatorTest.class.getResource("/networks/MicroGrid.zip").getFile()).toString()), LocalComputationManager.getDefault(), Suppliers.memoize(ImportConfig::load).get(), importParams);

InputStream is = getClass().getResourceAsStream("/cracs/CIM_21_1_1.xml");
cracCreationContext = (CimCracCreationContext) Crac.readWithContext("CIM_21_1_1.xml", is, network, OffsetDateTime.parse("2021-04-01T23:00Z"), new CracCreationParameters());

CracCreationParameters parameters = new CracCreationParameters();
CimCracCreationParameters cimCracCreationParameters = new CimCracCreationParameters();
cimCracCreationParameters.setOffsetDateTime(OffsetDateTime.parse("2021-04-01T23:00Z"));
parameters.addExtension(CimCracCreationParameters.class, cimCracCreationParameters);

cracCreationContext = (CimCracCreationContext) Crac.readWithContext("CIM_21_1_1.xml", is, network, parameters);
crac = cracCreationContext.getCrac();

// Imported contingencies (name -> id):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@
import com.powsybl.openrao.data.craccreation.creator.csaprofile.parameters.CsaCracCreationParameters;
import com.powsybl.openrao.data.craccreation.util.RaUsageLimitsAdder;

import java.time.OffsetDateTime;

import static com.powsybl.openrao.data.craccreation.creator.csaprofile.craccreator.constants.CsaProfileConstants.*;

/**
Expand All @@ -32,16 +30,16 @@ class CsaProfileCracCreator {
CsaProfileCracCreationContext creationContext;
private CsaProfileCrac nativeCrac;

CsaProfileCracCreationContext createCrac(CsaProfileCrac nativeCrac, Network network, OffsetDateTime offsetDateTime, CracCreationParameters cracCreationParameters) {
CsaProfileCracCreationContext createCrac(CsaProfileCrac nativeCrac, Network network, CracCreationParameters cracCreationParameters) {
CsaCracCreationParameters csaParameters = cracCreationParameters.getExtension(CsaCracCreationParameters.class);
this.crac = cracCreationParameters.getCracFactory().create(nativeCrac.toString());
this.network = network;
this.creationContext = new CsaProfileCracCreationContext(crac, offsetDateTime, network.getNameOrId());
this.creationContext = new CsaProfileCracCreationContext(crac, csaParameters.getOffsetDateTime(), network.getNameOrId());
this.nativeCrac = nativeCrac;
addCsaInstants();
RaUsageLimitsAdder.addRaUsageLimits(crac, cracCreationParameters);

this.nativeCrac.setForTimestamp(offsetDateTime);
this.nativeCrac.setForTimestamp(csaParameters.getOffsetDateTime());

createContingencies();
createCnecs(cracCreationParameters);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
import java.nio.file.attribute.FileAttribute;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.time.OffsetDateTime;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
Expand Down Expand Up @@ -143,7 +142,7 @@ public boolean exists(String filename, InputStream inputStream) {
}

@Override
public CracCreationContext importData(InputStream inputStream, CracCreationParameters cracCreationParameters, Network network, OffsetDateTime offsetDateTime) {
return new CsaProfileCracCreator().createCrac(importNativeCrac(inputStream), network, offsetDateTime, cracCreationParameters);
public CracCreationContext importData(InputStream inputStream, CracCreationParameters cracCreationParameters, Network network) {
return new CsaProfileCracCreator().createCrac(importNativeCrac(inputStream), network, cracCreationParameters);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@
import com.powsybl.commons.extensions.AbstractExtension;
import com.powsybl.openrao.data.cracapi.parameters.CracCreationParameters;

import java.time.OffsetDateTime;
import java.util.Map;

/**
* @author Mohamed Ben-rejeb {@literal <mohamed.ben-rejeb at rte-france.com>}
*/
public class CsaCracCreationParameters extends AbstractExtension<CracCreationParameters> {
private OffsetDateTime offsetDateTime = null;
private String capacityCalculationRegionEicCode = "10Y1001C--00095L"; // swe as default
private int spsMaxTimeToImplementThresholdInSeconds = 0;
private Map<String, Boolean> usePatlInFinalState = Map.of("REE", false, "REN", true, "RTE", true);
Expand All @@ -25,6 +27,10 @@ public String getName() {
return "CsaCracCreatorParameters";
}

public OffsetDateTime getOffsetDateTime() {
return offsetDateTime;
}

public String getCapacityCalculationRegionEicCode() {
return capacityCalculationRegionEicCode;
}
Expand All @@ -37,6 +43,10 @@ public Map<String, Integer> getCraApplicationWindow() {
return craApplicationWindow;
}

public void setOffsetDateTime(OffsetDateTime offsetDateTime) {
this.offsetDateTime = offsetDateTime;
}

public void setCapacityCalculationRegionEicCode(String capacityCalculationRegionEicCode) {
this.capacityCalculationRegionEicCode = capacityCalculationRegionEicCode;
}
Expand Down
Loading
Loading