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)