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

Dedicated us inputs scenarios #181

Merged

Conversation

danielelerede-oet
Copy link
Contributor

Changes proposed in this Pull Request

This PR builds on #172, and dedicated US inputs are further improved:

  1. different scenarios are taken into account for electrolyzers and DAC costs, building on the nomenclature by the NREL ATB (Conservative, Moderate, Advanced)
  2. inflation rates (generally applied to all cost values) are taken into account for values in EUR only, as the US-specific data should already consider adjustment for inflation.

Checklist

  • Code changes are sufficiently documented; i.e. new functions contain docstrings and further explanations may be given in doc.
  • Data source for new technologies is clearly stated.
  • Newly introduced dependencies are added to environment.yaml (if applicable).
  • A note for the release notes doc/release_notes.rst of the upcoming release is included.
  • I consent to the release of this PR's code under the GPLv3 license.

@fneum
Copy link
Member

fneum commented Feb 18, 2025

This might now require a rebase.

@danielelerede-oet
Copy link
Contributor Author

Hi @fneum , in response to your comment on inflation rate on #172, here the processing of costs expressed in USD is removed as the NREL ATB and ICCT dataset for electrolysis technologies already consider the adjustment for inflation. We agree anyway about the need for a US-dedicated dataset for inflation to be applied, for instance, on Fischer-Tropsch and DAC, whose values are not adjuster for inflation.

@finozzifa
Copy link
Contributor

hey @lkstrp, the PR is ready to be reviewed.

@lkstrp lkstrp requested a review from euronion March 6, 2025 07:41
Copy link
Collaborator

@euronion euronion left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR! 👍

Comments:

  • Any reason for the reorder in the manual_input_usa.csv? Since the rows were reordered, I couldn't figure out which ones changed or didn't. So I didn't go through all of them again and only picked a few random ones... . (Hint for next time to better not reorder the files :) )

  • It would be helpful to document the new columns and their meaning. I don't think we yet have a doc on the manual_input.csv (in general) -> We should open a issue for documentation on that. Can you add here what your understanding about the two columns is?

  • When running snakemake compile_cost_assumptions_usa I get the following a warning 7 times. Please address or suppress the warning if not relevant:

/home/user/.vscode-micromamba/envs/technology-data/lib/python3.12/site-packages/openpyxl/styles/stylesheet.py:237: UserWarning: Workbook contains no default style, apply openpyxl's default
  warn("Workbook contains no default style, apply openpyxl's default")

Alkaline electrolyzer,FOM,0.04,%/year,ICCT IRA e-fuels assumptions ,,2022.0,,
Alkaline electrolyzer,FOM,0.04,%/year,ICCT IRA e-fuels assumptions ,,2022.0,"R&D; and
Market",Moderate
Alkaline electrolyzer,FOM,0.04,%/year,ICCT IRA e-fuels assumptions ,,2022.0,"R&D; and
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I recommend to stick to a consistent nomenclature for newly added entries:

  • either all lower case or Sentence case for words
  • all CAPITAL CASE for acronyms

Comment on lines 464 to 477
# Correct the cost assumptions to the inflation rate
inflation_adjusted_manual_input_usa_file_df = adjust_for_inflation(
inflation_rate_series,
manual_input_usa_file_df,
manual_input_usa_file_df.technology.unique(),
eur_year,
"value",
usa_costs_flag=True,
mask = manual_input_usa_file_df["unit"].str.startswith("EUR", na=False)

inflation_adjusted_manual_input_usa_file_df = manual_input_usa_file_df.copy()
inflation_adjusted_manual_input_usa_file_df.loc[mask, "value"] = (
adjust_for_inflation(
inflation_rate_series,
manual_input_usa_file_df.loc[mask],
manual_input_usa_file_df.loc[mask, "technology"].unique(),
eur_year,
"value",
usa_costs_flag=True,
)["value"]
)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So the assumption here is that EUR values need to be adjusted for inflation, USD values not?
That seems to be provoking errors for future additions with USD values that are not inflation adjusted and will break when changing the cost reference year.

Why not use the currency_year we used in the original manual_input.csv to have the inflation adjustments done automatically?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We also faced this issue. It would be indeed a good idea to have an input file for US inflation rates. By the way, the sources we used for costs report that their values are already adjusted for inflation, so we removed this further step for US-specific data.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inflation adjustment is not a one time thing.
The sources might have accounted for inflation to get all values into e.g. USD-2023 values.
The purpose of inflation adjustment however is to get from the reported curency year to the requested currency year, e.g. USD-2020 or USD-2025.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @euronion! This is what I read on the data source (https://atb.nrel.gov/electricity/2024/financial_cases_&_methods)

image

Do you think we need to include inflation rate adjustment for USD values, too?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The document you are referring to

[...] focuses on the input variables to the weighted average cost of capital (WACC)

which is not related to your data!

What you are actually interested in is the following definition or the "Dollar Year"

image

So yes, you need to include a currency year and you need to enable inflation adjustments.

@danielelerede-oet
Copy link
Contributor Author

danielelerede-oet commented Mar 12, 2025

Hi @euronion , thank you for reviewing the PR! :)

Concerning your initial questions:

  • The reason for the reordering was due to the addition of scenario and financial case for electrolyzer technologies, which was the main change in manual_input_usa.csv. I performed a new reordering to have all technology groups in a logical order after the addition of the new columns
  • Concerning the documentation @finozzifa already worked on that in Update documentation #186 . Just to clarify, the two columns consider the same nomenclature of cost scenarios as in the NREL ATB. In particular, the scenario column (Conservative, Moderate, Advanced) is required to implement the different technology advancement scenarios as from the figure:
    image
    financial_case is needed to include differences due to the presence of production tax credits (addressed in Add US production tax credits input file #183): R&D only corresponds to a cost scenario without tax credits, while Market to a cost scenario with the application of production tax credits from US Tax Credit Guidances (Work in Progress, we're in contact with ICCT for the final overview on the application of tax credits).
  • @finozzifa is taking care of the warnings

@euronion
Copy link
Collaborator

  • The reason for the reordering was due to the addition of scenario and financial case for electrolyzer technologies, which was the main change in manual_input_usa.csv. I performed a new reordering to have all technology groups in a logical order after the addition of the new columns

Much better for reviewing, thanks!
For future we should fix the sort order once and then not change it anymore, not only for easier viewing, but also for spotting accidental modifications.

  • Concerning the documentation @finozzifa already worked on that in Update documentation #186 . Just to clarify, the two columns consider the same nomenclature of cost scenarios as in the NREL ATB. In particular, the scenario column (Conservative, Moderate, Advanced) is required to implement the different technology advancement scenarios ...

I see. For me it is good enough to just get the NREL ATB description for "scenario" in here, for the financial_case the description you provided is already enough for me. :)

@euronion euronion self-requested a review March 14, 2025 10:14
@euronion
Copy link
Collaborator

@finozzifa and @danielelerede-oet will open a separate PR to address inflation adjustments for US

@euronion euronion merged commit 8dc5787 into PyPSA:master Mar 14, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants