diff --git a/peakshaving_analyzer/PSA.py b/peakshaving_analyzer/PSA.py index fb7367a..225181f 100644 --- a/peakshaving_analyzer/PSA.py +++ b/peakshaving_analyzer/PSA.py @@ -141,6 +141,10 @@ def add_additional_pv(self): ) def add_storage(self): + if self.config.max_inverter_charge: + max_cap = pd.Series([self.config.max_inverter_charge, 0], index=["consumption_site", "grid"]) + else: + max_cap = None self.esm.add( fn.Conversion( esM=self.esm, @@ -151,7 +155,7 @@ def add_storage(self): "stored_energy": self.config.inverter_efficiency, }, hasCapacityVariable=True, - capacityMax=pd.Series([self.config.max_inverter_charge, 0], index=["consumption_site", "grid"]), + capacityMax=max_cap, investPerCapacity=0, linkedConversionCapacityID="storage", interestRate=self.config.interest_rate / 100, @@ -183,6 +187,10 @@ def add_storage(self): ) ) + if self.config.max_inverter_discharge: + max_cap = pd.Series([self.config.max_inverter_discharge, 0], index=["consumption_site", "grid"]) + else: + max_cap = None self.esm.add( fn.Conversion( esM=self.esm, @@ -190,7 +198,7 @@ def add_storage(self): physicalUnit="kWh", commodityConversionFactors={"stored_energy": -1, "energy": 1}, hasCapacityVariable=True, - capacityMax=pd.Series([self.config.max_inverter_discharge, 0], index=["consumption_site", "grid"]), + capacityMax=max_cap, investPerCapacity=self.config.inverter_cost_per_kw, economicLifetime=self.config.inverter_lifetime, technicalLifetime=self.config.inverter_lifetime, diff --git a/peakshaving_analyzer/__init__.py b/peakshaving_analyzer/__init__.py index bca8fdc..ce87245 100644 --- a/peakshaving_analyzer/__init__.py +++ b/peakshaving_analyzer/__init__.py @@ -9,4 +9,4 @@ """ __all__ = ["PeakShavingAnalyzer", "Config", "Results", "load_yaml_config", "load_oeds_config", "create_default_yaml"] -__version__ = "0.1.9" +__version__ = "0.1.10" diff --git a/peakshaving_analyzer/input.py b/peakshaving_analyzer/input.py index dcc1610..eb47184 100644 --- a/peakshaving_analyzer/input.py +++ b/peakshaving_analyzer/input.py @@ -46,6 +46,8 @@ class Config(IOHandler): inverter_efficiency: float = 0.95 inverter_cost_per_kw: float = 180 inverter_lifetime: int = 15 + max_inverter_charge: float | None = None + max_inverter_discharge: float | None = None # Existing PV system parameters pv_system_already_exists: bool = False diff --git a/pyproject.toml b/pyproject.toml index 3827b6e..155a062 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "peakshaving-analyzer" -version = "0.1.9" +version = "0.1.10" description = "Peak shaving analysis for industrial load profiles" authors = [ { name = "Christoph Komanns", email = "c.komanns@gmail.com" },