From f2b347334dd629ec660bce47cffadbe3b8983012 Mon Sep 17 00:00:00 2001 From: Tom Brown Date: Mon, 12 Oct 2020 12:20:04 +0200 Subject: [PATCH] industry: build nodal energy demand from nodal production --- Snakefile | 11 ++++++++ ...build_industrial_energy_demand_per_node.py | 26 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 scripts/build_industrial_energy_demand_per_node.py diff --git a/Snakefile b/Snakefile index d55a2853..93bc574f 100644 --- a/Snakefile +++ b/Snakefile @@ -226,6 +226,17 @@ rule build_industrial_production_per_node: script: 'scripts/build_industrial_production_per_node.py' +rule build_industrial_energy_demand_per_node: + input: + industry_sector_ratios="resources/industry_sector_ratios.csv", + industrial_production_per_node="resources/industrial_production_{network}_s{simpl}_{clusters}.csv" + output: + industrial_energy_demand_per_node="resources/industrial_energy_demand_{network}_s{simpl}_{clusters}.csv" + threads: 1 + resources: mem_mb=1000 + script: 'scripts/build_industrial_energy_demand_per_node.py' + + rule build_industrial_energy_demand_per_country_today: input: ammonia_production="resources/ammonia_production.csv", diff --git a/scripts/build_industrial_energy_demand_per_node.py b/scripts/build_industrial_energy_demand_per_node.py new file mode 100644 index 00000000..adedbd3c --- /dev/null +++ b/scripts/build_industrial_energy_demand_per_node.py @@ -0,0 +1,26 @@ + +import pandas as pd +import numpy as np + +# import EU ratios df as csv +industry_sector_ratios=pd.read_csv(snakemake.input.industry_sector_ratios, + index_col=0) + +#material demand per node and industry (kton/a) +nodal_production = pd.read_csv(snakemake.input.industrial_production_per_node, index_col=0) + +#final energy consumption per node and industry (TWh/a) +nodal_df = nodal_production.dot(industry_sector_ratios.T) +nodal_df*= 0.001 #GWh -> TWh (ktCO2 -> MtCO2) + + +rename_sectors = {'elec':'electricity', + 'biomass':'solid biomass', + 'heat':'low-temperature heat'} + +nodal_df.rename(columns=rename_sectors,inplace=True) + +nodal_df.index.name = "TWh/a (MtCO2/a)" + +nodal_df.to_csv(snakemake.output.industrial_energy_demand_per_node, + float_format='%.2f')