Skip to content

Add more industry data #211

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

Merged
merged 32 commits into from
May 19, 2025

Conversation

danielelerede-oet
Copy link
Contributor

@danielelerede-oet danielelerede-oet commented Apr 15, 2025

Changes proposed in this Pull Request

  • Added BF-BOF steelmaking technology
  • Separated "direct iron reduction furnace" and "hydrogen direct iron reduction furnace" steelmaking technologies (the previous "direct iron reduction furnace" used hydrogen as input commodity but that's not the standard). This shouldn't imply changes to PyPSA-Eur / PyPSA-Earth as steelmaking is currently not modelled in an explicit way
  • Add cement production route (cement dry clinker + cement finishing)
  • Add 2 ethanol production routes (ethanol from starch crop for US- and EUR-based production, ethanol from sugar crop for Brazilian-based production)

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.

@danielelerede-oet danielelerede-oet marked this pull request as ready for review April 16, 2025 13:16
@danielelerede-oet
Copy link
Contributor Author

danielelerede-oet commented May 7, 2025

Latest updates envisage:

  • Fixed unit of measurement for VOM (from %/year to EUR/MWh)
  • Fixed steel data (iron ore/scrap input for BF-BOF)
  • Changed all investment cost units to EUR/capacity/h for steel, clinker, cement and ethanol
  • Added bioethanol crops CO2 intensity
  • Removed electricity input for traditional DRI as electricity-input for DRI-EAF - electricity-input for EAF = (almost) 0 in the source

cc @yerbol-akhmetov

@euronion euronion self-requested a review May 12, 2025 15:30
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.

I tried to cross-check a few numbers with limited success. Could you help me and future us locate them?

We also need to avoid breaking changes from changing value e.g. for DRI HBI demand.

Could you also please merge with master and rerun snakemake, since there have been a few changes since the branch was created?

Thanks!

@@ -371,6 +377,7 @@ bioethanol crops,fuel,2020,54.6434100368518,EUR/MWhth,2010,"JRC ENSPRESO ca avg
bioethanol crops,fuel,2030,72.477665790641,EUR/MWhth,2010,"JRC ENSPRESO ca avg for MINBIOCRP11 (Bioethanol barley, wheat, grain maize, oats, other cereals and rye), ENS_BaU_GFTM",
bioethanol crops,fuel,2040,75.7178710725453,EUR/MWhth,2010,"JRC ENSPRESO ca avg for MINBIOCRP11 (Bioethanol barley, wheat, grain maize, oats, other cereals and rye), ENS_BaU_GFTM",
bioethanol crops,fuel,2050,78.995541440487,EUR/MWhth,2010,"JRC ENSPRESO ca avg for MINBIOCRP11 (Bioethanol barley, wheat, grain maize, oats, other cereals and rye), ENS_BaU_GFTM",
bioethanol crops,CO2 intensity,2020,0.25704,tCO2/MWh_th,,"JRC, 01_JRC-EU-TIMES Full model, https://zenodo.org/records/3544900, file `Scen_EmisCO2.xls`). Original value 71.4 g CO2/MJ",
Copy link
Collaborator

Choose a reason for hiding this comment

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

This value is based on the Well-to-Wheel numbers from the Excel, is that what you really wanted? Maybe add some more description what this means to avoid misinterpretation. E.g. It could also be the CO2 intensity of only the agricultural activity for bioethanol crops (not used for transport fuels).

  • add the sheet name from where you got the number, so the next person doesn't have to search through the Excel file sheet by sheet ;)

Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
bioethanol crops,CO2 intensity,2020,0.25704,tCO2/MWh_th,,"JRC, 01_JRC-EU-TIMES Full model, https://zenodo.org/records/3544900, file `Scen_EmisCO2.xls`). Original value 71.4 g CO2/MJ",
bioethanol crops,CO2 intensity,2020,0.25704,tCO2/MWh_th,,"JRC, 01_JRC-EU-TIMES Full model, https://zenodo.org/records/3544900, file `Scen_EmisCO2.xls`. Original value 71.4 g CO2/MJ",

Surplus bracket ;)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks for the observation, @euronion ! Definitely an update is required here. I'm currently using the value obtained from the stoichiometric CO2 yield of ethanol fermentation, based on a lower heating value (LHV) of 26.7 MJ/kg to obtain the theoretically capturable biogenic CO2.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Shouldn't it be negative in that case? Since the bioethanol crops is absorbing the carbon, not emitting? Emissions happens where the energy service is provided.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Sure, in the implementation in PyPSA-Earth this CO2 intensity value is used to obtain the value of CO2_stored obtained from a CCS-equipped ethanol production plant (thus providing actual "negative" emissions), but it should be ok if it's positive here, as it is for all other carriers reporting a CO2 intensity.

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.

One more round. Information is ok-ish, I'm not sure on some entries. Let's blame the
the Excel files from TIMES are not nice to navigate :/

@@ -371,6 +377,7 @@ bioethanol crops,fuel,2020,54.6434100368518,EUR/MWhth,2010,"JRC ENSPRESO ca avg
bioethanol crops,fuel,2030,72.477665790641,EUR/MWhth,2010,"JRC ENSPRESO ca avg for MINBIOCRP11 (Bioethanol barley, wheat, grain maize, oats, other cereals and rye), ENS_BaU_GFTM",
bioethanol crops,fuel,2040,75.7178710725453,EUR/MWhth,2010,"JRC ENSPRESO ca avg for MINBIOCRP11 (Bioethanol barley, wheat, grain maize, oats, other cereals and rye), ENS_BaU_GFTM",
bioethanol crops,fuel,2050,78.995541440487,EUR/MWhth,2010,"JRC ENSPRESO ca avg for MINBIOCRP11 (Bioethanol barley, wheat, grain maize, oats, other cereals and rye), ENS_BaU_GFTM",
bioethanol crops,CO2 intensity,2020,0.25704,tCO2/MWh_th,,"JRC, 01_JRC-EU-TIMES Full model, https://zenodo.org/records/3544900, file `Scen_EmisCO2.xls`). Original value 71.4 g CO2/MJ",
Copy link
Collaborator

Choose a reason for hiding this comment

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

Shouldn't it be negative in that case? Since the bioethanol crops is absorbing the carbon, not emitting? Emissions happens where the energy service is provided.

Comment on lines 434 to 435
cement dry clinker,gas-input,2020,1.9,MWh_NG/t_clinker,2020,"JRC, 01_JRC-EU-TIMES Full model, https://zenodo.org/records/3544900, file `SubRES_15_TECHS_CHP_SUP_IND.xlsx`, Sheet `IND` (ICMDRYPRD01, ICM.Dry Process Production.01)",
cement dry clinker,electricity-input,2020,30,MWh_el/t_clinker,2020,"JRC, 01_JRC-EU-TIMES Full model, https://zenodo.org/records/3544900, file `SubRES_15_TECHS_CHP_SUP_IND.xlsx`, Sheet `IND` (ICMDRYPRD01, ICM.Dry Process Production.01)",
Copy link
Collaborator

Choose a reason for hiding this comment

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

I'm trying to understand the units for INDGAS and INDELC.
Also what does ICMPRC and INDCOK indicate?

Copy link
Contributor Author

@danielelerede-oet danielelerede-oet May 14, 2025

Choose a reason for hiding this comment

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

INDGAS and INDELC input should be in PJ/Mt (because all INDGAS and INDELC are in PJ and the output commodity MCMCLK in Mt). You can retrieve the information regarding all the units related to all the commodities and technologies in the tables at the bottom of the same sheet where data are listed (let's blame again the Excel files from TIMES that are definitely not nice to navigate)

image

ICMPRC is the Process cement heat and INDCOK is coke (but that's zero for dry clinker).

However, I'm having strong doubts now because I see the values in PJ/Mt don't match the values I put in the manual_input file. I need further checks. Also, I'm missing the process heat input, and I don't really understand/remember the reason why

Copy link
Contributor Author

@danielelerede-oet danielelerede-oet May 14, 2025

Choose a reason for hiding this comment

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

@euronion I checked again and made a few changes. My suspect is that there were some mistakes in fetching the right values from the Excel file but now everything should be fine. I also added heat input for dry clinker production, which was not taken into account before. For cement finishing, the source now is the Trans file as it's mentioned as the used input source for values in the JRC model.

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 a lot @danielelerede-oet .

We're slowly getting there! :)

Comment on lines 943 to 946
Suited for Brazilian production, original value 501.0876 MEUR/GW INVCOST~2020; and
Suited for Brazilian production, original value 454.9348 MEUR/GW INVCOST~2025; and
Suited for Brazilian production, original value 421.9685 MEUR/GW INVCOST~2030",2015.0
ethanol from sugar crops,lifetime,20.0,years,"JRC, 01_JRC-EU-TIMES Full model, https://zenodo.org/records/3544900, file `SubRES_10_TECHS_CHP_SUP_IND.xlsx` and `SubRES_10_TECHS_CHP_SUP_IND_Trans.xlsx` (BCRPETH201, Ethanol production from sugar crops ) and currency year from file `SysSettings.xls`, sheet `Constants`, Attribute `G_Dyear` = 2015.",Suited for Brazilian production,2015.0
Copy link
Collaborator

Choose a reason for hiding this comment

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

There is some weirdness going on when the output files are created - this information should be in one line, not in dedicated lines.

This should be the last thing to fix (I hope)

@euronion
Copy link
Collaborator

@danielelerede-oet I've directly added and committed some info that I think we should also add for traceability, please check the latest commit.

Also there is something wrong in the output csv files, that needs to be fixed.

Else looking good - as soon as my changes are deemed ok or adjusted and the csv outputs are fixed, this is RTM.

@danielelerede-oet
Copy link
Contributor Author

danielelerede-oet commented May 16, 2025

Hi @euronion ! The bug in the output .csv files is due to line 2702 in compile_cost_assumptions.py. I tried to avoid the concatenation of rows in further description, but that solves the issues on ethanol production technologies while causing issues with other entries. Therefore, for the moment I preferred getting around the obstacle removing a few details you added, while trying to preserve a good quality in the description of original data.

@euronion
Copy link
Collaborator

Thanks @danielelerede-oet . I've removed the weird newline in the processing script, but I'll keep your shortened descriptions. Thanks for updating them!

Looking good, proceeding to merge. Thanks a lot for this contribution! :)

@euronion euronion merged commit ea6c7c6 into PyPSA:master May 19, 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.

2 participants