Skip to content

Commit

Permalink
fix the calculation of splitting factors for idcc process (#210)
Browse files Browse the repository at this point in the history
  • Loading branch information
kahyami authored Dec 17, 2024
1 parent de50771 commit 5a76ebb
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,9 @@ public CseData(CseRequest cseRequest, FileImporter fileImporter) {
this.fileImporter = fileImporter;
}

public Map<String, Double> getReducedSplittingFactors(Map<String, Double> ntcsByEic) {
public Map<String, Double> getReducedSplittingFactors() {
if (reducedSplittingFactors == null) {
reducedSplittingFactors = getNtc().computeReducedSplittingFactors(ntcsByEic);
reducedSplittingFactors = getNtc().computeReducedSplittingFactors();
}
return reducedSplittingFactors;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public NetworkShifter get(CseRequest request,
}

private ShiftDispatcher getShiftDispatcher(ProcessType processType, CseData cseData, Map<String, Double> referenceExchanges, Map<String, Double> ntcsByEic) {
Map<String, Double> splittingFactors = NetworkShifterUtil.convertMapByCountryToMapByEic(cseData.getReducedSplittingFactors(ntcsByEic));
Map<String, Double> splittingFactors = NetworkShifterUtil.convertMapByCountryToMapByEic(cseData.getReducedSplittingFactors());

if (processType.equals(ProcessType.D2CC)) {
return new CseD2ccShiftDispatcher(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,9 @@
import com.farao_community.farao.cse.data.ttc_res.TtcResult;
import com.farao_community.farao.cse.data.xsd.ttc_res.Timestamp;
import com.farao_community.farao.cse.import_runner.app.dichotomy.DichotomyRaoResponse;
import com.farao_community.farao.cse.import_runner.app.dichotomy.NetworkShifterUtil;
import com.farao_community.farao.cse.import_runner.app.util.FileUtil;
import com.farao_community.farao.cse.runner.api.resource.CseRequest;
import com.farao_community.farao.cse.import_runner.app.CseData;
import com.farao_community.farao.cse.runner.api.resource.ProcessType;
import com.powsybl.openrao.data.raoresultapi.RaoResult;
import com.farao_community.farao.dichotomy.api.results.LimitingCause;
import com.powsybl.iidm.network.Network;
Expand Down Expand Up @@ -58,14 +56,10 @@ public String saveTtcResult(CseRequest cseRequest, CseData cseData, CseCracCreat
Network networkWithPra = fileImporter.importNetwork(networkWithPraUrl);
double finalItalianImport = BorderExchanges.computeItalianImport(networkWithPra);

Map<String, Double> ntcsByEic = cseRequest.getProcessType().equals(ProcessType.IDCC) ?
cseData.getNtc2().getExchanges() :
NetworkShifterUtil.convertMapByCountryToMapByEic(cseData.getNtcPerCountry());

TtcResult.ProcessData processData = new TtcResult.ProcessData(
highestSecureStepRaoResponse.getForcedPrasIds(),
BorderExchanges.computeCseBordersExchanges(networkWithPra),
cseData.getReducedSplittingFactors(ntcsByEic),
cseData.getReducedSplittingFactors(),
BorderExchanges.computeCseCountriesBalances(networkWithPra),
limitingCause,
finalItalianImport,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
package com.farao_community.farao.cse.data.ntc;

import com.farao_community.farao.cse.data.xsd.TLine;
import com.powsybl.glsk.commons.CountryEICode;

import java.util.HashMap;
import java.util.Map;
Expand Down Expand Up @@ -52,19 +51,14 @@ public Map<String, Double> getFlowPerCountryOnMerchantLines() {
getFlowPerCountry(TLine::isMerchantLine);
}

public Map<String, Double> computeReducedSplittingFactors(Map<String, Double> ntcsByEic) {
Map<String, Double> ntcsByCountry = new HashMap<>();
ntcsByEic.forEach((k, v) -> ntcsByCountry.put(toCountry(k), v));
public Map<String, Double> computeReducedSplittingFactors() {
Map<String, Double> ntcsByCountry = getNtcPerCountry();
Map<String, Double> flowOnMerchantLinesPerCountry = getFlowPerCountryOnMerchantLines();
Double totalNtc = ntcsByCountry.values().stream().reduce(0., Double::sum);
Double totalFlowOnMerchantLines = flowOnMerchantLinesPerCountry.values().stream().reduce(0., Double::sum);
return getReducedSplittingFactors(ntcsByCountry, flowOnMerchantLinesPerCountry, totalNtc, totalFlowOnMerchantLines);
}

private String toCountry(String eic) {
return new CountryEICode(eic).getCountry().toString();
}

public Map<String, Double> getFlowOnFixedFlowLines() {
if (isImportEcProcess) {
Predicate<com.farao_community.farao.cse.data.xsd.ntc_adapted.TLine> fixedFlowLines = tLine -> tLine.isFixedFlow() && tLine.isModelized();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@
*/
package com.farao_community.farao.cse.data.ntc;

import com.powsybl.glsk.commons.CountryEICode;
import com.powsybl.iidm.network.Country;
import com.farao_community.farao.cse.data.DataUtil;
import com.farao_community.farao.cse.data.xsd.NTCAnnualDocument;
import com.farao_community.farao.cse.data.xsd.NTCReductionsDocument;
Expand All @@ -19,7 +17,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.time.OffsetDateTime;
import java.util.HashMap;
import java.util.Map;

import static org.junit.jupiter.api.Assertions.*;
Expand All @@ -31,7 +28,7 @@ class NtcFilesTest {
private Ntc ntc;

@BeforeEach
void setUp() throws JAXBException {
void setUp() {
OffsetDateTime targetDateTime = OffsetDateTime.parse("2021-06-24T16:30Z");
try (InputStream yearlyData = getClass().getResourceAsStream("2021_2Dp_NTC_annual_CSE1.xml");
InputStream dailyData = getClass().getResourceAsStream("20210624_2D4_NTC_reductions_CSE1.xml")
Expand All @@ -58,22 +55,16 @@ void computeMniiOffset() {

@Test
void computeReducedSplittingFactors() {
Map<String, Double> ntcsByEic = new HashMap<>();
ntcsByEic.put(new CountryEICode(Country.FR).getCode(), 2000.);
ntcsByEic.put(new CountryEICode(Country.CH).getCode(), 1000.);
ntcsByEic.put(new CountryEICode(Country.SI).getCode(), 200.);
ntcsByEic.put(new CountryEICode(Country.AT).getCode(), 100.);

Map<String, Double> splittingFactors = ntc.computeReducedSplittingFactors(ntcsByEic);
Map<String, Double> splittingFactors = ntc.computeReducedSplittingFactors();
assertEquals(4, splittingFactors.size());
assertEquals(0.648, splittingFactors.get("FR"), DOUBLE_PRECISION);
assertEquals(0.275, splittingFactors.get("CH"), DOUBLE_PRECISION);
assertEquals(0.011, splittingFactors.get("AT"), DOUBLE_PRECISION);
assertEquals(0.064, splittingFactors.get("SI"), DOUBLE_PRECISION);
assertEquals(0.466, splittingFactors.get("FR"), DOUBLE_PRECISION);
assertEquals(0.409, splittingFactors.get("CH"), DOUBLE_PRECISION);
assertEquals(0.035, splittingFactors.get("AT"), DOUBLE_PRECISION);
assertEquals(0.089, splittingFactors.get("SI"), DOUBLE_PRECISION);
}

@Test
void checkDefaultFlowForMendrisioCagno() throws JAXBException {
void checkDefaultFlowForMendrisioCagno() {

OffsetDateTime targetDateTime = OffsetDateTime.parse("2021-09-13T12:30Z");
try (InputStream yearlyData = getClass().getResourceAsStream("2021_2Dp_NTC_annual_CSE1.xml");
Expand Down

0 comments on commit 5a76ebb

Please sign in to comment.