diff --git a/Snakefile b/Snakefile index b921bf11..7558a5ac 100644 --- a/Snakefile +++ b/Snakefile @@ -163,10 +163,20 @@ rule build_industrial_production_per_country: script: 'scripts/build_industrial_production_per_country.py' +rule build_industrial_production_per_country_tomorrow: + input: + industrial_production_per_country="resources/industrial_production_per_country.csv" + output: + industrial_production_per_country_tomorrow="resources/industrial_production_per_country_tomorrow.csv" + threads: 1 + resources: mem_mb=1000 + script: 'scripts/build_industrial_production_per_country_tomorrow.py' + + rule build_industrial_energy_demand_per_country: input: industry_sector_ratios="resources/industry_sector_ratios.csv", - industrial_production_per_country="resources/industrial_production_per_country.csv" + industrial_production_per_country="resources/industrial_production_per_country_tomorrow.csv" output: industrial_energy_demand_per_country="resources/industrial_energy_demand_per_country.csv" threads: 1 diff --git a/config.default.yaml b/config.default.yaml index 575d6c78..55380f63 100644 --- a/config.default.yaml +++ b/config.default.yaml @@ -158,9 +158,9 @@ solving: mem: 30000 #memory in MB; 20 GB enough for 50+B+I+H2; 100 GB for 181+B+I+H2 industry: - 'DRI_ratio' : 0.5 #ratio of today's blast-furnace steel (60% primary route, 40% secondary) to future assumption (30% primary, 70% secondary), transformed into DRI + electric arc - 'H2_DRI' : 1.7 #H2 consumption in Direct Reduced Iron (DRI), MWh_H2/ton_Steel from Vogl et al (2018) doi:10.1016/j.jclepro.2018.08.279 - 'Al_to_scrap' : 0.5 # ratio of primary-route Aluminum transformed into scrap (today 40% to future 20% primary route) + 'St_primary_fraction' : 0.3 # fraction of steel produced via primary route (DRI + EAF) versus secondary route (EAF); today fraction is 0.6 + 'H2_DRI' : 1.7 #H2 consumption in Direct Reduced Iron (DRI), MWh_H2,LHV/ton_Steel from Vogl et al (2018) doi:10.1016/j.jclepro.2018.08.279 + 'Al_primary_fraction' : 0.2 # fraction of aluminium produced via the primary route versus scrap; today fraction is 0.4 'H2_for_NH3' : 85000 # H2 in GWh/a for 17 MtNH3/a transformed from SMR to electrolyzed-H2, following Lechtenböhmer(2016) 'NH3_process_emissions' : 24.5 # in MtCO2/a from SMR for H2 production for NH3 from UNFCCC for 2015 for EU28 'petrochemical_process_emissions' : 25.5 # in MtCO2/a for petrochemical and other from UNFCCC for 2015 for EU28 diff --git a/config.myopic.yaml b/config.myopic.yaml index 48f6cb62..24213b44 100644 --- a/config.myopic.yaml +++ b/config.myopic.yaml @@ -158,9 +158,9 @@ solving: mem: 30000 #memory in MB; 20 GB enough for 50+B+I+H2; 100 GB for 181+B+I+H2 industry: - 'DRI_ratio' : 0.5 #ratio of today's blast-furnace steel (60% primary route, 40% secondary) to future assumption (30% primary, 70% secondary), transformed into DRI + electric arc - 'H2_DRI' : 1.7 #H2 consumption in Direct Reduced Iron (DRI), MWh_H2/ton_Steel from Vogl et al (2018) doi:10.1016/j.jclepro.2018.08.279 - 'Al_to_scrap' : 0.5 # ratio of primary-route Aluminum transformed into scrap (today 40% to future 20% primary route) + 'St_primary_fraction' : 0.3 # fraction of steel produced via primary route (DRI + EAF) versus secondary route (EAF); today fraction is 0.6 + 'H2_DRI' : 1.7 #H2 consumption in Direct Reduced Iron (DRI), MWh_H2,LHV/ton_Steel from Vogl et al (2018) doi:10.1016/j.jclepro.2018.08.279 + 'Al_primary_fraction' : 0.2 # fraction of aluminium produced via the primary route versus scrap; today fraction is 0.4 'H2_for_NH3' : 85000 # H2 in GWh/a for 17 MtNH3/a transformed from SMR to electrolyzed-H2, following Lechtenböhmer(2016) 'NH3_process_emissions' : 24.5 # in MtCO2/a from SMR for H2 production for NH3 from UNFCCC for 2015 for EU28 'petrochemical_process_emissions' : 25.5 # in MtCO2/a for petrochemical and other from UNFCCC for 2015 for EU28 diff --git a/scripts/build_industrial_energy_demand_per_country.py b/scripts/build_industrial_energy_demand_per_country.py index 750d4eda..73036a99 100644 --- a/scripts/build_industrial_energy_demand_per_country.py +++ b/scripts/build_industrial_energy_demand_per_country.py @@ -68,8 +68,6 @@ for country in countries_df.index: s_out = excel_out.iloc[27:48,-1] countries_df.loc[country, 'current electricity'] = s_out['Electricity']*ktoe_to_twh - print(countries_df.loc[country, 'current electricity']) - rename_sectors = {'elec':'electricity', diff --git a/scripts/build_industrial_production_per_country_tomorrow.py b/scripts/build_industrial_production_per_country_tomorrow.py new file mode 100644 index 00000000..c1d5d5da --- /dev/null +++ b/scripts/build_industrial_production_per_country_tomorrow.py @@ -0,0 +1,22 @@ + +import pandas as pd + +industrial_production = pd.read_csv(snakemake.input.industrial_production_per_country, + index_col=0) + +total_steel = industrial_production[["Integrated steelworks","Electric arc"]].sum(axis=1) + +industrial_production.insert(2, "DRI + Electric arc", + snakemake.config["industry"]["St_primary_fraction"]*total_steel) +industrial_production["Electric arc"] = (1 - snakemake.config["industry"]["St_primary_fraction"])*total_steel +industrial_production["Integrated steelworks"] = 0. + + +total_aluminium = industrial_production[["Aluminium - primary production","Aluminium - secondary production"]].sum(axis=1) + +industrial_production["Aluminium - primary production"] = snakemake.config["industry"]["Al_primary_fraction"]*total_aluminium +industrial_production["Aluminium - secondary production"] = (1 - snakemake.config["industry"]["Al_primary_fraction"])*total_aluminium + + +industrial_production.to_csv(snakemake.output.industrial_production_per_country_tomorrow, + float_format='%.2f') diff --git a/scripts/build_industry_sector_ratios.py b/scripts/build_industry_sector_ratios.py index b608a91e..3c567a38 100644 --- a/scripts/build_industry_sector_ratios.py +++ b/scripts/build_industry_sector_ratios.py @@ -152,19 +152,18 @@ df.loc[['elec','heat','methane'],sector] = df.loc[['elec','heat','methane'],sect -## Integrated steelworks is converted to Electric arc -# -#> Electric arc uses scrap metal and Direct Reduced Iron -# -#> We assume that when substituting Integrated Steelworks by Electric arc furnaces. -#> 50% of Integrated steelworks is substituted by scrap metal + electric furnaces -#> 50% of Integrated steelworks is substituted by Direct Reduce Iron (with Hydrogen) + electric furnaces +## Integrated steelworks is not used in future +## TODO Include integrated steelworks + CCS -df['Integrated steelworks']=df['Electric arc'] +df['Integrated steelworks']= 0. + + +## For primary route: DRI with H2 + EAF + +df['DRI + Electric arc'] = df['Electric arc'] # adding the Hydrogen necessary for the Direct Reduction of Iron. consumption 1.7 MWh H2 /ton steel -#(0.5 because only half of the steel requires DRI, the rest is scrap metal) -df.loc['hydrogen', 'Integrated steelworks'] =snakemake.config["industry"]["H2_DRI"] * snakemake.config["industry"]["DRI_ratio"] +df.loc['hydrogen', 'DRI + Electric arc'] = snakemake.config["industry"]["H2_DRI"] ## Chemicals Industry @@ -1052,9 +1051,6 @@ sources=['elec','biomass', 'methane', 'hydrogen', 'heat','naphtha'] df.loc[sources,sector] = df.loc[sources,sector]*conv_factor/s_out['Aluminium - secondary production'] # unit MWh/t material # 1 ktoe = 11630 MWh -# primary route is divided into 50% remains as today and 50% is transformed into secondary route -df.loc[sources,'Aluminium - primary production'] = (1-snakemake.config["industry"]["Al_to_scrap"])*df.loc[sources,'Aluminium - primary production'] + snakemake.config["industry"]["Al_to_scrap"]*df.loc[sources,'Aluminium - secondary production'] -df.loc['process emission','Aluminium - primary production'] = (1-snakemake.config["industry"]["Al_to_scrap"])*df.loc['process emission','Aluminium - primary production'] ### Other non-ferrous metals