diff --git a/ExcelReader.py b/ExcelReader.py
index a44af0d..2a79bbf 100644
--- a/ExcelReader.py
+++ b/ExcelReader.py
@@ -161,6 +161,22 @@ def get_Power_Demand(excel_file_path: str, keep_excluded_entries: bool = False,
return dPower_Demand
+def get_Power_Demand_KInRows(excel_file_path: str, keep_excluded_entries: bool = False, fail_on_wrong_version: bool = False) -> pd.DataFrame:
+ """
+ Read the dPower_Demand_KInRows data from the Excel file.
+ :param excel_file_path: Path to the Excel file
+ :param keep_excluded_entries: Unused but kept for compatibility with other functions
+ :param fail_on_wrong_version: If True, raise an error if the version of the Excel file does not match the expected version
+ :return: dPower_Demand_KInRows
+ """
+ dPower_Demand_KInRows = __read_pivoted_file(excel_file_path, "v0.1.2", ['rp', 'k', 'i'], 'i', ['rp', 'k', 'dataPackage', 'dataSource', 'id'], False, False, fail_on_wrong_version)
+
+ if keep_excluded_entries:
+ printer.warning("'keep_excluded_entries' is set for 'get_dPower_Demand_KInRows', although nothing is excluded anyway - please check if this is intended.")
+
+ return dPower_Demand_KInRows
+
+
def get_Power_Hindex(excel_file_path: str, keep_excluded_entries: bool = False, fail_on_wrong_version: bool = False) -> pd.DataFrame:
"""
Read the dPower_Hindex data from the Excel file.
@@ -251,7 +267,7 @@ def get_Power_VRESProfiles(excel_file_path: str, keep_excluded_entries: bool = F
:param excel_file_path: Path to the Excel file
:param keep_excluded_entries: Unused but kept for compatibility with other functions
:param fail_on_wrong_version: If True, raise an error if the version of the Excel file does not match the expected version
- :return: dPower_VRES
+ :return: dPower_VRESProfiles
"""
dPower_VRESProfiles = __read_pivoted_file(excel_file_path, "v0.1.0", ['rp', 'k', 'g'], 'k', ['rp', 'g', 'dataPackage', 'dataSource', 'id'], False, False, fail_on_wrong_version)
@@ -261,6 +277,22 @@ def get_Power_VRESProfiles(excel_file_path: str, keep_excluded_entries: bool = F
return dPower_VRESProfiles
+def get_Power_VRESProfiles_KInRows(excel_file_path: str, keep_excluded_entries: bool = False, fail_on_wrong_version: bool = False) -> pd.DataFrame:
+ """
+ Read the dPower_VRESProfiles_KInRows data from the Excel file.
+ :param excel_file_path: Path to the Excel file
+ :param keep_excluded_entries: Unused but kept for compatibility with other functions
+ :param fail_on_wrong_version: If True, raise an error if the version of the Excel file does not match the expected version
+ :return: dPower_VRESProfiles_KInRows
+ """
+ dPower_VRESProfiles_KInRows = __read_pivoted_file(excel_file_path, "v0.1.0", ['rp', 'k', 'g'], 'g', ['rp', 'k', 'dataPackage', 'dataSource', 'id'], False, False, fail_on_wrong_version)
+
+ if keep_excluded_entries:
+ printer.warning("'keep_excluded_entries' is set for 'get_dPower_VRESProfiles_KInRows', although nothing is excluded anyway - please check if this is intended.")
+
+ return dPower_VRESProfiles_KInRows
+
+
def get_Power_WeightsK(excel_file_path: str, keep_excluded_entries: bool = False, fail_on_wrong_version: bool = False) -> pd.DataFrame:
"""
Read the dPower_WeightsK data from the Excel file.
diff --git a/ExcelWriter.py b/ExcelWriter.py
index 9b82a21..86c7890 100644
--- a/ExcelWriter.py
+++ b/ExcelWriter.py
@@ -246,6 +246,16 @@ def write_Power_Demand(self, dPower_Demand: pd.DataFrame, folder_path: str) -> N
self._write_Excel_from_definition(dPower_Demand, folder_path, "Power_Demand")
+ def write_Power_Demand_KInRows(self, dPower_Demand_KInRows: pd.DataFrame, folder_path: str) -> None:
+ """
+ Write the dPower_Demand_KInRows DataFrame to an Excel file in LEGO format.
+ :param dPower_Demand_KInRows: DataFrame containing the dPower_Demand_KInRows data.
+ :param folder_path: Path to the folder where the Excel file will be saved.
+ :return: None
+ """
+
+ self._write_Excel_from_definition(dPower_Demand_KInRows, folder_path, "Power_Demand_KInRows")
+
def write_Power_Hindex(self, dPower_Hindex: pd.DataFrame, folder_path: str) -> None:
"""
Write the dPower_Hindex DataFrame to an Excel file in LEGO format.
@@ -309,6 +319,15 @@ def write_VRESProfiles(self, dPower_VRESProfiles: pd.DataFrame, folder_path: str
"""
self._write_Excel_from_definition(dPower_VRESProfiles, folder_path, "Power_VRESProfiles")
+ def write_VRESProfiles_KInRows(self, dPower_VRESProfiles_KInRows: pd.DataFrame, folder_path: str) -> None:
+ """
+ Write the dPower_VRESProfiles_KInRows DataFrame to an Excel file in LEGO format.
+ :param dPower_VRESProfiles_KInRows: DataFrame containing the dPower_VRESProfiles_KInRows data.
+ :param folder_path: Path to the folder where the Excel file will be saved.
+ :return: None
+ """
+ self._write_Excel_from_definition(dPower_VRESProfiles_KInRows, folder_path, "Power_VRESProfiles_KInRows")
+
def write_Power_WeightsK(self, dPower_WeightsK: pd.DataFrame, folder_path: str) -> None:
"""
Write the dPower_WeightsK DataFrame to an Excel file in LEGO format.
@@ -394,6 +413,7 @@ def model_to_excel(model: pyomo.core.Model, target_path: str) -> None:
("Global_Scenarios", f"{args.caseStudyFolder}Global_Scenarios.xlsx", ExcelReader.get_Global_Scenarios, ew.write_Global_Scenarios),
("Power_BusInfo", f"{args.caseStudyFolder}Power_BusInfo.xlsx", ExcelReader.get_Power_BusInfo, ew.write_Power_BusInfo),
("Power_Demand", f"{args.caseStudyFolder}Power_Demand.xlsx", ExcelReader.get_Power_Demand, ew.write_Power_Demand),
+ ("Power_Demand_KInRows", f"{args.caseStudyFolder}Power_Demand_KInRows.xlsx", ExcelReader.get_Power_Demand_KInRows, ew.write_Power_Demand_KInRows),
("Power_Hindex", f"{args.caseStudyFolder}Power_Hindex.xlsx", ExcelReader.get_Power_Hindex, ew.write_Power_Hindex),
("Power_Inflows", f"{args.caseStudyFolder}Power_Inflows.xlsx", ExcelReader.get_Power_Inflows, ew.write_Power_Inflows),
("Power_Network", f"{args.caseStudyFolder}Power_Network.xlsx", ExcelReader.get_Power_Network, ew.write_Power_Network),
@@ -401,6 +421,7 @@ def model_to_excel(model: pyomo.core.Model, target_path: str) -> None:
("Power_ThermalGen", f"{args.caseStudyFolder}Power_ThermalGen.xlsx", ExcelReader.get_Power_ThermalGen, ew.write_Power_ThermalGen),
("Power_VRES", f"{args.caseStudyFolder}Power_VRES.xlsx", ExcelReader.get_Power_VRES, ew.write_VRES),
("Power_VRESProfiles", f"{args.caseStudyFolder}Power_VRESProfiles.xlsx", ExcelReader.get_Power_VRESProfiles, ew.write_VRESProfiles),
+ ("Power_VRESProfiles_KInRows", f"{args.caseStudyFolder}Power_VRESProfiles_KInRows.xlsx", ExcelReader.get_Power_VRESProfiles_KInRows, ew.write_VRESProfiles_KInRows),
("Power_WeightsK", f"{args.caseStudyFolder}Power_WeightsK.xlsx", ExcelReader.get_Power_WeightsK, ew.write_Power_WeightsK),
("Power_WeightsRP", f"{args.caseStudyFolder}Power_WeightsRP.xlsx", ExcelReader.get_Power_WeightsRP, ew.write_Power_WeightsRP),
("Power_Wind_TechnicalDetails", f"{args.caseStudyFolder}Power_Wind_TechnicalDetails.xlsx", ExcelReader.get_Power_Wind_TechnicalDetails, ew.write_Power_Wind_TechnicalDetails)
diff --git a/TableDefinitions.xml b/TableDefinitions.xml
index 81ee5ed..62a43e5 100644
--- a/TableDefinitions.xml
+++ b/TableDefinitions.xml
@@ -76,6 +76,20 @@
+
+ v0.1.2
+ Power - Demand
+ 30.0
+
+
+
+
+
+
+
+
+
+
v0.1.2
Power - Relation among periods and representative periods
@@ -247,6 +261,20 @@
+
+ v0.1.0
+ Power - Variable Renewable Energy Sources Profiles
+ 60.0
+
+
+
+
+
+
+
+
+
+
v0.1.0
Power - Wind Technical Details
@@ -896,6 +924,14 @@
10.57
rightFloat2
+
+
+ g
+ Capacity factor for each VRES unit at this generator g
+ [%, 0-1]
+ 10.57
+ rightFloat2
+
k
@@ -904,6 +940,14 @@
10.57
rightInt
+
+
+ i
+ Demand at node at node i
+ [MWh]
+ 10.57
+ rightInt
+
k
diff --git a/data/example/Power_Demand.xlsx b/data/example/Power_Demand.xlsx
index fb7345b..3209069 100644
Binary files a/data/example/Power_Demand.xlsx and b/data/example/Power_Demand.xlsx differ
diff --git a/data/example/Power_Demand_KInRows.xlsx b/data/example/Power_Demand_KInRows.xlsx
new file mode 100644
index 0000000..d25063d
Binary files /dev/null and b/data/example/Power_Demand_KInRows.xlsx differ
diff --git a/data/example/Power_VRESProfiles_KInRows.xlsx b/data/example/Power_VRESProfiles_KInRows.xlsx
new file mode 100644
index 0000000..618bb2c
Binary files /dev/null and b/data/example/Power_VRESProfiles_KInRows.xlsx differ
diff --git a/tests/test_ExcelReaderWriter.py b/tests/test_ExcelReaderWriter.py
index 396c084..151e0d6 100644
--- a/tests/test_ExcelReaderWriter.py
+++ b/tests/test_ExcelReaderWriter.py
@@ -14,6 +14,7 @@
("Global_Scenarios", f"{case_study_folder}Global_Scenarios.xlsx", ExcelReader.get_Global_Scenarios, ew.write_Global_Scenarios),
("Power_BusInfo", f"{case_study_folder}Power_BusInfo.xlsx", ExcelReader.get_Power_BusInfo, ew.write_Power_BusInfo),
("Power_Demand", f"{case_study_folder}Power_Demand.xlsx", ExcelReader.get_Power_Demand, ew.write_Power_Demand),
+ ("Power_Demand_KInRows", f"{case_study_folder}Power_Demand_KInRows.xlsx", ExcelReader.get_Power_Demand_KInRows, ew.write_Power_Demand_KInRows),
("Power_Hindex", f"{case_study_folder}Power_Hindex.xlsx", ExcelReader.get_Power_Hindex, ew.write_Power_Hindex),
("Power_Inflows", f"{case_study_folder}Power_Inflows.xlsx", ExcelReader.get_Power_Inflows, ew.write_Power_Inflows),
("Power_Network", f"{case_study_folder}Power_Network.xlsx", ExcelReader.get_Power_Network, ew.write_Power_Network),
@@ -21,6 +22,7 @@
("Power_ThermalGen", f"{case_study_folder}Power_ThermalGen.xlsx", ExcelReader.get_Power_ThermalGen, ew.write_Power_ThermalGen),
("Power_VRES", f"{case_study_folder}Power_VRES.xlsx", ExcelReader.get_Power_VRES, ew.write_VRES),
("Power_VRESProfiles", f"{case_study_folder}Power_VRESProfiles.xlsx", ExcelReader.get_Power_VRESProfiles, ew.write_VRESProfiles),
+ ("Power_VRESProfiles_KInRows", f"{case_study_folder}Power_VRESProfiles_KInRows.xlsx", ExcelReader.get_Power_VRESProfiles_KInRows, ew.write_VRESProfiles_KInRows),
("Power_WeightsK", f"{case_study_folder}Power_WeightsK.xlsx", ExcelReader.get_Power_WeightsK, ew.write_Power_WeightsK),
("Power_WeightsRP", f"{case_study_folder}Power_WeightsRP.xlsx", ExcelReader.get_Power_WeightsRP, ew.write_Power_WeightsRP),
("Power_Wind_TechnicalDetails", f"{case_study_folder}Power_Wind_TechnicalDetails.xlsx", ExcelReader.get_Power_Wind_TechnicalDetails, ew.write_Power_Wind_TechnicalDetails)