prepare_sector: automatically interpolate in config get() function
This commit is contained in:
parent
4e0b69b3fa
commit
26b202f463
@ -7,9 +7,11 @@
|
|||||||
Release Notes
|
Release Notes
|
||||||
##########################################
|
##########################################
|
||||||
|
|
||||||
.. Upcoming Release
|
Upcoming Release
|
||||||
.. ================
|
================
|
||||||
..
|
|
||||||
|
* Linearly interpolate missing investment periods in year-dependent
|
||||||
|
configuration options.
|
||||||
|
|
||||||
PyPSA-Eur 0.10.0 (19th February 2024)
|
PyPSA-Eur 0.10.0 (19th February 2024)
|
||||||
=====================================
|
=====================================
|
||||||
|
@ -215,7 +215,32 @@ def get(item, investment_year=None):
|
|||||||
"""
|
"""
|
||||||
Check whether item depends on investment year.
|
Check whether item depends on investment year.
|
||||||
"""
|
"""
|
||||||
return item[investment_year] if isinstance(item, dict) else item
|
if not isinstance(item, dict):
|
||||||
|
return item
|
||||||
|
elif investment_year in item.keys():
|
||||||
|
return item[investment_year]
|
||||||
|
else:
|
||||||
|
logger.warning(
|
||||||
|
f"Investment key {investment_year} not found in dictionary {item}."
|
||||||
|
)
|
||||||
|
keys = sorted(item.keys())
|
||||||
|
if investment_year < keys[0]:
|
||||||
|
logger.warning(f"Lower than minimum key. Taking minimum key {keys[0]}")
|
||||||
|
return item[keys[0]]
|
||||||
|
elif investment_year > keys[-1]:
|
||||||
|
logger.warning(f"Higher than maximum key. Taking maximum key {keys[0]}")
|
||||||
|
return item[keys[-1]]
|
||||||
|
else:
|
||||||
|
logger.warning(
|
||||||
|
"Interpolate linearly between the next lower and next higher year."
|
||||||
|
)
|
||||||
|
lower_key = max(k for k in keys if k < investment_year)
|
||||||
|
higher_key = min(k for k in keys if k > investment_year)
|
||||||
|
lower = item[lower_key]
|
||||||
|
higher = item[higher_key]
|
||||||
|
return lower + (higher - lower) * (investment_year - lower_key) / (
|
||||||
|
higher_key - lower_key
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def co2_emissions_year(
|
def co2_emissions_year(
|
||||||
|
Loading…
Reference in New Issue
Block a user