[pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci
This commit is contained in:
pre-commit-ci[bot] 2024-02-14 17:31:48 +00:00
parent e14bae345b
commit b45df1724b
5 changed files with 78 additions and 39 deletions

View File

@ -443,7 +443,8 @@ rule build_industry_sector_ratios_intermediate:
industrial_production_per_country=RESOURCES industrial_production_per_country=RESOURCES
+ "industrial_production_per_country.csv", + "industrial_production_per_country.csv",
output: output:
industry_sector_ratios=RESOURCES + "industry_sector_ratios_{planning_horizons}.csv", industry_sector_ratios=RESOURCES
+ "industry_sector_ratios_{planning_horizons}.csv",
threads: 1 threads: 1
resources: resources:
mem_mb=1000, mem_mb=1000,
@ -559,7 +560,8 @@ rule build_industrial_production_per_node:
rule build_industrial_energy_demand_per_node: rule build_industrial_energy_demand_per_node:
input: input:
industry_sector_ratios=RESOURCES + "industry_sector_ratios_{planning_horizons}.csv", industry_sector_ratios=RESOURCES
+ "industry_sector_ratios_{planning_horizons}.csv",
industrial_production_per_node=RESOURCES industrial_production_per_node=RESOURCES
+ "industrial_production_elec_s{simpl}_{clusters}_{planning_horizons}.csv", + "industrial_production_elec_s{simpl}_{clusters}_{planning_horizons}.csv",
industrial_energy_demand_per_node_today=RESOURCES industrial_energy_demand_per_node_today=RESOURCES

View File

@ -96,19 +96,35 @@ def industrial_energy_demand_per_country(country, year, jrc_dir):
def separate_basic_chemicals(demand, production): def separate_basic_chemicals(demand, production):
ammonia = pd.DataFrame({"hydrogen": production["Ammonia"] * params["MWh_H2_per_tNH3_electrolysis"], ammonia = pd.DataFrame(
"electricity" : production["Ammonia"] * params["MWh_elec_per_tNH3_electrolysis"]}).T {
chlorine = pd.DataFrame({"hydrogen": production["Chlorine"] * params["MWh_H2_per_tCl"], "hydrogen": production["Ammonia"] * params["MWh_H2_per_tNH3_electrolysis"],
"electricity" : production["Chlorine"] * params["MWh_elec_per_tCl"]}).T "electricity": production["Ammonia"]
methanol = pd.DataFrame({"gas": production["Methanol"] * params["MWh_CH4_per_tMeOH"], * params["MWh_elec_per_tNH3_electrolysis"],
"electricity" : production["Methanol"] * params["MWh_elec_per_tMeOH"]}).T }
).T
chlorine = pd.DataFrame(
{
"hydrogen": production["Chlorine"] * params["MWh_H2_per_tCl"],
"electricity": production["Chlorine"] * params["MWh_elec_per_tCl"],
}
).T
methanol = pd.DataFrame(
{
"gas": production["Methanol"] * params["MWh_CH4_per_tMeOH"],
"electricity": production["Methanol"] * params["MWh_elec_per_tMeOH"],
}
).T
demand["Ammonia"] = ammonia.unstack().reindex(index=demand.index, fill_value=0.0) demand["Ammonia"] = ammonia.unstack().reindex(index=demand.index, fill_value=0.0)
demand["Chlorine"] = chlorine.unstack().reindex(index=demand.index, fill_value=0.0) demand["Chlorine"] = chlorine.unstack().reindex(index=demand.index, fill_value=0.0)
demand["Methanol"] = methanol.unstack().reindex(index=demand.index, fill_value=0.0) demand["Methanol"] = methanol.unstack().reindex(index=demand.index, fill_value=0.0)
demand["HVC"] = ( demand["HVC"] = (
demand["Basic chemicals"] - demand["Ammonia"] - demand["Methanol"] - demand["Chlorine"] demand["Basic chemicals"]
- demand["Ammonia"]
- demand["Methanol"]
- demand["Chlorine"]
) )
demand.drop(columns="Basic chemicals", inplace=True) demand.drop(columns="Basic chemicals", inplace=True)
@ -166,8 +182,10 @@ if __name__ == "__main__":
demand = industrial_energy_demand(countries.intersection(eu28), year) demand = industrial_energy_demand(countries.intersection(eu28), year)
# output in MtMaterial/a # output in MtMaterial/a
production = pd.read_csv(snakemake.input.industrial_production_per_country, production = (
index_col=0) / 1e3 pd.read_csv(snakemake.input.industrial_production_per_country, index_col=0)
/ 1e3
)
demand = separate_basic_chemicals(demand, production) demand = separate_basic_chemicals(demand, production)

View File

@ -21,9 +21,7 @@ if __name__ == "__main__":
# import ratios # import ratios
fn = snakemake.input.industry_sector_ratios fn = snakemake.input.industry_sector_ratios
sector_ratios = pd.read_csv(fn, sector_ratios = pd.read_csv(fn, header=[0, 1], index_col=0)
header=[0,1],
index_col=0)
# material demand per node and industry (Mton/a) # material demand per node and industry (Mton/a)
fn = snakemake.input.industrial_production_per_node fn = snakemake.input.industrial_production_per_node
@ -33,14 +31,19 @@ if __name__ == "__main__":
fn = snakemake.input.industrial_energy_demand_per_node_today fn = snakemake.input.industrial_energy_demand_per_node_today
nodal_today = pd.read_csv(fn, index_col=0) nodal_today = pd.read_csv(fn, index_col=0)
nodal_sector_ratios = pd.concat({node: sector_ratios[node[:2]] for node in nodal_production.index}, nodal_sector_ratios = pd.concat(
axis=1) {node: sector_ratios[node[:2]] for node in nodal_production.index}, axis=1
)
nodal_production_stacked = nodal_production.stack() nodal_production_stacked = nodal_production.stack()
nodal_production_stacked.index.names = [None,None] nodal_production_stacked.index.names = [None, None]
# final energy consumption per node and industry (TWh/a) # final energy consumption per node and industry (TWh/a)
nodal_df = (nodal_sector_ratios.multiply(nodal_production_stacked)).T.groupby(level=0).sum() nodal_df = (
(nodal_sector_ratios.multiply(nodal_production_stacked))
.T.groupby(level=0)
.sum()
)
rename_sectors = { rename_sectors = {
"elec": "electricity", "elec": "electricity",

View File

@ -261,7 +261,11 @@ def separate_basic_chemicals(demand, year):
demand["Basic chemicals"].clip(lower=0.0, inplace=True) demand["Basic chemicals"].clip(lower=0.0, inplace=True)
# assume HVC, methanol, chlorine production proportional to non-ammonia basic chemicals # assume HVC, methanol, chlorine production proportional to non-ammonia basic chemicals
distribution_key = demand["Basic chemicals"] / params["basic_chemicals_without_NH3_production_today"] / 1e3 distribution_key = (
demand["Basic chemicals"]
/ params["basic_chemicals_without_NH3_production_today"]
/ 1e3
)
demand["HVC"] = params["HVC_production_today"] * 1e3 * distribution_key demand["HVC"] = params["HVC_production_today"] * 1e3 * distribution_key
demand["Chlorine"] = params["chlorine_production_today"] * 1e3 * distribution_key demand["Chlorine"] = params["chlorine_production_today"] * 1e3 * distribution_key
demand["Methanol"] = params["methanol_production_today"] * 1e3 * distribution_key demand["Methanol"] = params["methanol_production_today"] * 1e3 * distribution_key

View File

@ -4,39 +4,45 @@
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
""" """
Build specific energy consumption by carrier and industries and by country, Build specific energy consumption by carrier and industries and by country,
that interpolates between the current average energy consumption (from 2015-2020) that interpolates between the current average energy consumption (from
and the ideal future best-in-class consumption. 2015-2020) and the ideal future best-in-class consumption.
""" """
import pandas as pd import pandas as pd
from prepare_sector_network import get from prepare_sector_network import get
def build_industry_sector_ratios_intermediate(): def build_industry_sector_ratios_intermediate():
# in TWh/a # in TWh/a
demand = pd.read_csv(snakemake.input.industrial_energy_demand_per_country_today, demand = pd.read_csv(
header=[0,1], snakemake.input.industrial_energy_demand_per_country_today,
index_col=0) header=[0, 1],
index_col=0,
)
# in Mt/a # in Mt/a
production = pd.read_csv(snakemake.input.industrial_production_per_country, production = (
index_col=0) / 1e3 pd.read_csv(snakemake.input.industrial_production_per_country, index_col=0)
/ 1e3
)
production = production.unstack().swaplevel() production = production.unstack().swaplevel()
# in MWh/t # in MWh/t
future_sector_ratios = pd.read_csv(snakemake.input.industry_sector_ratios, future_sector_ratios = pd.read_csv(
index_col=0) snakemake.input.industry_sector_ratios, index_col=0
)
production.index.names = [None,None] production.index.names = [None, None]
today_sector_ratios = demand.div(production, axis=1) today_sector_ratios = demand.div(production, axis=1)
today_sector_ratios.drop(columns=today_sector_ratios.columns[today_sector_ratios.isna().all()], today_sector_ratios.drop(
inplace=True) columns=today_sector_ratios.columns[today_sector_ratios.isna().all()],
inplace=True,
)
rename = pd.Series(today_sector_ratios.index, rename = pd.Series(today_sector_ratios.index, today_sector_ratios.index)
today_sector_ratios.index)
rename["waste"] = "biomass" rename["waste"] = "biomass"
rename["electricity"] = "elec" rename["electricity"] = "elec"
rename["solid"] = "coke" rename["solid"] = "coke"
@ -44,9 +50,7 @@ def build_industry_sector_ratios_intermediate():
rename["other"] = "biomass" rename["other"] = "biomass"
rename["liquid"] = "naphtha" rename["liquid"] = "naphtha"
today_sector_ratios.rename(rename, today_sector_ratios.rename(rename, inplace=True)
inplace=True)
fraction_future = get(params["sector_ratios_fraction_future"], year) fraction_future = get(params["sector_ratios_fraction_future"], year)
@ -56,14 +60,22 @@ def build_industry_sector_ratios_intermediate():
intermediate_sector_ratio = future_sector_ratios.copy() intermediate_sector_ratio = future_sector_ratios.copy()
intermediate_sector_ratio.loc[today_sector_ratios[ct].index,today_sector_ratios[ct].columns] = (fraction_future*intermediate_sector_ratio.loc[today_sector_ratios[ct].index,today_sector_ratios[ct].columns] intermediate_sector_ratio.loc[
+ (1 - fraction_future)*today_sector_ratios[ct]) today_sector_ratios[ct].index, today_sector_ratios[ct].columns
] = (
fraction_future
* intermediate_sector_ratio.loc[
today_sector_ratios[ct].index, today_sector_ratios[ct].columns
]
+ (1 - fraction_future) * today_sector_ratios[ct]
)
intermediate_sector_ratios[ct] = intermediate_sector_ratio intermediate_sector_ratios[ct] = intermediate_sector_ratio
intermediate_sector_ratios = pd.concat(intermediate_sector_ratios, axis=1) intermediate_sector_ratios = pd.concat(intermediate_sector_ratios, axis=1)
intermediate_sector_ratios.to_csv(snakemake.output.industry_sector_ratios) intermediate_sector_ratios.to_csv(snakemake.output.industry_sector_ratios)
if __name__ == "__main__": if __name__ == "__main__":
if "snakemake" not in globals(): if "snakemake" not in globals():
from _helpers import mock_snakemake from _helpers import mock_snakemake