Skip to content

Commit

Permalink
GREET Data Hotfix (#408)
Browse files Browse the repository at this point in the history
* LCA hotfix: corrected iron ore mining and pelletizing emissions intensity values and units

* Updated fastkml version dependency in pyproject.toml to correct CI errors
  • Loading branch information
dakotaramos authored Dec 5, 2024
1 parent 1714de3 commit 6210157
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 24 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
DRI_iron_ore_mining_EI: 0.22901198723003552
DRI_iron_ore_pelletizing_EI: 0.23105675045934587
DRI_iron_ore_mining_EI_per_MT_ore: 125.60298098051585
DRI_iron_ore_mining_EI_per_MT_steel: 229.01198723003554
DRI_iron_ore_pelletizing_EI_per_MT_ore: 126.7244434860691
DRI_iron_ore_pelletizing_EI_per_MT_steel: 231.0567504593459
NG_combust_EI: 56.531234265084805
NG_supply_EI: 12.683622297844511
NH3_H2_consume: 0.197284
Expand Down
44 changes: 23 additions & 21 deletions hopp/simulation/technologies/resource/greet_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -189,18 +189,6 @@ def preprocess_greet(self):
soec_ely_stack_capex_EI = (greet2['Electrolyzers']['C257'].value * g_to_kg) # SOEC electrolyzer stack CAPEX emissions (kg CO2e/kg H2)
soec_ely_stack_and_BoP_capex_EI = (greet2['Electrolyzers']['F257'].value * g_to_kg) # SOEC electrolyzer stack + Balance of Plant CAPEX emissions (kg CO2e/kg H2)
# Steel
DRI_iron_ore_mining_EI = ((greet2['Steel']['AE92'].value + # GHG Emissions Intensity of Iron ore mining for use in DRI-EAF Steel production (kg CO2e/kg iron ore)
(greet2['Steel']['AE82'].value * VOC_to_CO2e) +
(greet2['Steel']['AE83'].value * CO_to_CO2e) +
(greet2['Steel']['AE90'].value * CH4_gwp_to_CO2e) +
(greet2['Steel']['AE91'].value * N2O_gwp_to_CO2e)
) * (g_to_kg / ton_to_kg))
DRI_iron_ore_pelletizing_EI = ((greet2['Steel']['AG92'].value + # GHG Emissions Intensity of Iron ore pelletizing for use in DRI-EAF Steel production (kg CO2e/kg iron ore)
(greet2['Steel']['AG82'].value * VOC_to_CO2e) +
(greet2['Steel']['AG83'].value * CO_to_CO2e) +
(greet2['Steel']['AG90'].value * CH4_gwp_to_CO2e) +
(greet2['Steel']['AG91'].value * N2O_gwp_to_CO2e)
) * (g_to_kg / ton_to_kg))
steel_H2O_consume = ((greet2['Steel']['AE80'].value + # Total H2O consumption for DRI-EAF Steel production w/ 83% H2 and 0% scrap, accounts for water used in iron ore mining, pelletizing, DRI, and EAF (metric tonne H2O/metric tonne steel production)
greet2['Steel']['AG80'].value + # NOTE: Does not include water consumption for H2 production via electrolysis
greet2['Steel']['AK80'].value +
Expand All @@ -214,10 +202,25 @@ def preprocess_greet(self):
greet2['Steel']['AM63'].value
) * (mmbtu_to_GJ / ton_to_MT))
steel_lime_consume = (greet2['Steel']['AM68'].value) # Lime consumption for DRI-EAF Steel production (metric tonne lime/metric tonne steel production)
steel_iron_ore_consume = (greet2['Steel']['AM69'].value) # Iron ore consumption for DRI-EAF Steel production (metric tonne iron ore/metric tonne steel production)
steel_iron_ore_consume = (greet2['Steel']['AM69'].value) # Iron ore consumption for DRI-EAF Steel production (metric tonne iron ore or pellet/metric tonne steel production)
steel_electricity_consume = ((greet2['Steel']['AK65'].value + # Total Electrical Energy consumption for DRI-EAF Steel production accounting for DRI with 83% H2 and EAF + LRF (MWh/metric tonne steel production)
greet2['Steel']['AM65'].value
) * (mmbtu_to_MWh/ton_to_MT))
#Iron
DRI_iron_ore_mining_EI_per_MT_steel = ((greet2['Steel']['AE92'].value + # GHG Emissions Intensity of Iron ore mining for use in DRI-EAF Steel production (kg CO2e/metric tonne steel production)
(greet2['Steel']['AE82'].value * VOC_to_CO2e) +
(greet2['Steel']['AE83'].value * CO_to_CO2e) +
(greet2['Steel']['AE90'].value * CH4_gwp_to_CO2e) +
(greet2['Steel']['AE91'].value * N2O_gwp_to_CO2e)
) * (g_to_kg / ton_to_MT))
DRI_iron_ore_pelletizing_EI_per_MT_steel = ((greet2['Steel']['AG92'].value + # GHG Emissions Intensity of Iron ore pelletizing for use in DRI-EAF Steel production (kg CO2e/metric tonne steel production)
(greet2['Steel']['AG82'].value * VOC_to_CO2e) +
(greet2['Steel']['AG83'].value * CO_to_CO2e) +
(greet2['Steel']['AG90'].value * CH4_gwp_to_CO2e) +
(greet2['Steel']['AG91'].value * N2O_gwp_to_CO2e)
) * (g_to_kg / ton_to_MT))
DRI_iron_ore_mining_EI_per_MT_ore = (DRI_iron_ore_mining_EI_per_MT_steel / steel_iron_ore_consume) # GHG Emissions Intensity of Iron ore mining for use in DRI-EAF Steel production (kg CO2e/metric tonne iron ore)
DRI_iron_ore_pelletizing_EI_per_MT_ore = (DRI_iron_ore_pelletizing_EI_per_MT_steel / steel_iron_ore_consume) # GHG Emissions Intensity of Iron ore pelletizing for use in DRI-EAF Steel production (kg CO2e/metric tonne iron ore)
greet2.close()

#------------------------------------------------------------------------------
Expand Down Expand Up @@ -271,8 +274,10 @@ def preprocess_greet(self):
# Lime
'lime_supply_EI':lime_supply_EI,
# Iron ore
'DRI_iron_ore_mining_EI':DRI_iron_ore_mining_EI,
'DRI_iron_ore_pelletizing_EI':DRI_iron_ore_pelletizing_EI,
'DRI_iron_ore_mining_EI_per_MT_steel':DRI_iron_ore_mining_EI_per_MT_steel,
'DRI_iron_ore_pelletizing_EI_per_MT_steel':DRI_iron_ore_pelletizing_EI_per_MT_steel,
'DRI_iron_ore_mining_EI_per_MT_ore':DRI_iron_ore_mining_EI_per_MT_ore,
'DRI_iron_ore_pelletizing_EI_per_MT_ore':DRI_iron_ore_pelletizing_EI_per_MT_ore,
# Renewable infrastructure embedded EI and h2 production via water electrolysis
'wind_capex_EI':wind_capex_EI,
'solar_pv_capex_EI':solar_pv_capex_EI,
Expand Down Expand Up @@ -336,10 +341,7 @@ def format_data(self):
self.data = yaml.load(yaml_file, Loader=yaml.SafeLoader)
yaml_file.close()

#Adhoc testing
# Code to manually run this file independently to preprocess the GREET data and produce a processed yaml
# if __name__ == '__main__':
# test = GREETData()
# print(test.data)

#NOTE: Runtime ~ 1m to fully parse greet
#NOTE: Runtime <2s with greet preprocessed (load yaml to dict)
# test = GREETData(preprocess_greet=True)
# print(test.data)
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ dependencies = [
"NREL-PySAM==4.2.0",
"Pillow",
"Pyomo>=6.1.2",
"fastkml",
"fastkml<1",
"floris>=4.0",
"future",
"global_land_mask",
Expand Down

0 comments on commit 6210157

Please sign in to comment.