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

GREET Data Hotfix #408

Merged
merged 2 commits into from
Dec 5, 2024
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
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
Loading