Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

move storage parameters to dedicated table #451

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
7 changes: 7 additions & 0 deletions app/layout_elements.py
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,7 @@ def display_and_edit_input_data(
"specific_costs",
"conversion_coefficients",
"dac_and_desalination",
"storage",
],
scope: Literal["world", "Argentina", "Morocco", "South Africa"],
key: str,
Expand Down Expand Up @@ -320,6 +321,7 @@ def display_and_edit_input_data(
"transportation_processes",
"reconversion_processes",
"dac_and_desalination",
"storage",
]:
index = "process_code"
columns = "parameter_code"
Expand Down Expand Up @@ -416,6 +418,11 @@ def display_and_edit_input_data(
missing_index_value = "conversion factors"
column_config = get_column_config()

if data_type == "storage":
column_config["OPEX (fix)"] = st.column_config.NumberColumn(
format="%.2f USD/kW", min_value=0
)

df = change_index_names(df)

# if editing is enabled, store modifications in session_state:
Expand Down
15 changes: 15 additions & 0 deletions app/ptxboa_functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,7 @@ def get_data_type_from_input_data(
"specific_costs",
"conversion_coefficients",
"dac_and_desalination",
"storage",
],
scope: Literal[None, "world", "Argentina", "Morocco", "South Africa"],
) -> pd.DataFrame:
Expand Down Expand Up @@ -329,6 +330,7 @@ def get_data_type_from_input_data(
"transportation_processes",
"reconversion_processes",
"dac_and_desalination",
"storage",
]:
scope = None
source_region_code = [""]
Expand Down Expand Up @@ -398,6 +400,8 @@ def get_data_type_from_input_data(
process_code = processes.loc[
processes["is_transport"] & ~processes["is_transformation"], "process_name"
].to_list()
# remove storage processes
process_code = [c for c in process_code if "storage" not in c]

if data_type == "reconversion_processes":
parameter_code = [
Expand Down Expand Up @@ -427,6 +431,17 @@ def get_data_type_from_input_data(
"PV tilted",
]

if data_type == "storage":
parameter_code = [
"CAPEX",
"OPEX (fix)",
"lifetime / amortization period",
"efficiency",
]
process_code = processes.loc[
processes["process_name"].str.contains("storage"), "process_name"
].to_list()

df = subset_and_pivot_input_data(
input_data,
source_region_code=source_region_code,
Expand Down
21 changes: 21 additions & 0 deletions app/tab_input_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,27 @@ def content_input_data(api: PtxboaAPI) -> None:
scope=None,
key="input_data_conversion_processes",
)
with st.expander("**Storage**"):
st.caption(
(
"- Storage CAPEX are defined per charging power.\n"
"- Efficiencies are round-trip.\n"
"- Time-dependent losses are neglected.\n"
"- For electricity storage (batteries) we assume a fixed ratio of 4"
" MWh storage capacity per MW charging power\n"
" and equal charging/discharging power.\n"
"- For hydrogen storage (tanks) we assume storage capacity and"
" discharge power to be non-binding because the comporessor is by"
" far the most expensive component."
)
)
display_and_edit_input_data(
api,
data_type="storage",
scope=None,
key="input_data_storage",
)

with st.expander("**Transportation (ships and pipelines)**"):
st.caption(
(
Expand Down
Loading