Skip to content
Merged
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
15 changes: 14 additions & 1 deletion CaseStudy.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ def __init__(self,

self.power_scaling_factor = self.dGlobal_Parameters["pPowerScalingFactor"]
self.cost_scaling_factor = self.dGlobal_Parameters["pCostScalingFactor"]
self.reactive_power_scaling_factor = 1e-3 # MVar to kVar conversion factor
self.angle_to_rad_scaling_factor = np.pi / 180

if not do_not_scale_units:
Expand Down Expand Up @@ -239,10 +240,16 @@ def scale_dPower_ThermalGen(self):
self.dPower_ThermalGen['MinUpTime'] = self.dPower_ThermalGen['MinUpTime'].astype('int64')
self.dPower_ThermalGen['MinDownTime'] = self.dPower_ThermalGen['MinDownTime'].astype('int64')

self.dPower_ThermalGen['Qmin'] = self.dPower_ThermalGen['Qmin'].fillna(0) * self.reactive_power_scaling_factor
self.dPower_ThermalGen['Qmax'] = self.dPower_ThermalGen['Qmax'].fillna(0) * self.reactive_power_scaling_factor

def scale_dPower_RoR(self):
self.dPower_RoR['InvestCostEUR'] = self.dPower_RoR['MaxProd'] * self.power_scaling_factor * (self.dPower_RoR['InvestCostPerMW'] + self.dPower_RoR['InvestCostPerMWh'] * self.dPower_RoR['Ene2PowRatio']) * (self.cost_scaling_factor / self.power_scaling_factor)
self.dPower_RoR['MaxProd'] *= self.power_scaling_factor

self.dPower_RoR['Qmin'] = self.dPower_RoR['Qmin'].fillna(0) * self.reactive_power_scaling_factor
self.dPower_RoR['Qmax'] = self.dPower_RoR['Qmax'].fillna(0) * self.reactive_power_scaling_factor

def scale_dPower_Inflows(self):
self.dPower_Inflows["Inflow"] *= self.power_scaling_factor

Expand All @@ -254,6 +261,9 @@ def scale_dPower_VRES(self):
self.dPower_VRES['MaxProd'] *= self.power_scaling_factor
self.dPower_VRES['OMVarCost'] *= (self.cost_scaling_factor / self.power_scaling_factor)

self.dPower_VRES['Qmin'] = self.dPower_VRES['Qmin'].fillna(0) * self.reactive_power_scaling_factor
self.dPower_VRES['Qmax'] = self.dPower_VRES['Qmax'].fillna(0) * self.reactive_power_scaling_factor

def scale_dPower_Storage(self):
self.dPower_Storage['IniReserve'] = self.dPower_Storage['IniReserve'].fillna(0)
self.dPower_Storage['MinReserve'] = self.dPower_Storage['MinReserve'].fillna(0)
Expand All @@ -263,6 +273,9 @@ def scale_dPower_Storage(self):
self.dPower_Storage['MaxProd'] *= self.power_scaling_factor
self.dPower_Storage['MaxCons'] *= self.power_scaling_factor

self.dPower_Storage['Qmin'] = self.dPower_Storage['Qmin'].fillna(0) * self.reactive_power_scaling_factor
self.dPower_Storage['Qmax'] = self.dPower_Storage['Qmax'].fillna(0) * self.reactive_power_scaling_factor

def scale_dPower_ImpExpHubs(self):
self.dPower_ImpExpHubs["Pmax Import"] *= self.power_scaling_factor
self.dPower_ImpExpHubs["Pmax Export"] *= self.power_scaling_factor
Expand All @@ -289,7 +302,7 @@ def get_dPower_Parameters(self):
dPower_Parameters = dPower_Parameters.dropna(how="all")
dPower_Parameters = dPower_Parameters.set_index('General')

self.yesNo_to_bool(dPower_Parameters, ['pEnableChDisPower', 'pFixStInterResToIniReserve', 'pEnableSoftLineLoadLimits', 'pEnableThermalGen', 'pEnableRoR', 'pEnableVRES', 'pEnableStorage', 'pEnablePowerImportExport'])
self.yesNo_to_bool(dPower_Parameters, ['pEnableChDisPower', 'pFixStInterResToIniReserve', 'pEnableSoftLineLoadLimits', 'pEnableThermalGen', 'pEnableRoR', 'pEnableVRES', 'pEnableStorage', 'pEnablePowerImportExport', 'pEnableSOCP'])

# Transform to make it easier to access values
dPower_Parameters = dPower_Parameters.drop(dPower_Parameters.columns[1:], axis=1) # Drop all columns but "Value" (rest is just for information in the Excel)
Expand Down
2 changes: 1 addition & 1 deletion ExcelWriter.py
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@ def model_to_excel(model: pyomo.core.Model, target_path: str) -> None:
from rich_argparse import RichHelpFormatter

parser = argparse.ArgumentParser(description="Re-write all files in given folder and compare against source", formatter_class=RichHelpFormatter)
parser.add_argument("caseStudyFolder", type=str, default="examples/", help="Path to folder containing data for LEGO model.", nargs="?")
parser.add_argument("caseStudyFolder", type=str, default="data/example/", help="Path to folder containing data for LEGO model.", nargs="?")
parser.add_argument("excelDefinitionsPath", type=str, help="Path to the Excel definitions XML file. Uses default if none is supplied.", nargs="?")
parser.add_argument("--dontCheckFormatting", action="store_true", help="Do not check formatting of the Excel files. Only check if they are equal.")
args = parser.parse_args()
Expand Down
1 change: 1 addition & 0 deletions environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ channels:
dependencies:
- openpyxl=3.1.5
- pandas=2.2.3
- pandas-stubs=2.3.0.250703
- pip=24.0
- pyomo=6.9.2
- pytest=8.4.0
Expand Down
Loading