Skip to content

Commit

Permalink
add land usage into infra saving script
Browse files Browse the repository at this point in the history
  • Loading branch information
yerbol-akhmetov committed Aug 2, 2024
1 parent fab5854 commit 0525017
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 1 deletion.
11 changes: 11 additions & 0 deletions Snakefile
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,7 @@ rule get_infra_saving:
output:
table_cap=RESULTS+"table_infra_savings_caps_{clusters}.csv",
table_costs=RESULTS+"table_infra_savings_costs_{clusters}.csv",
table_land=RESULTS+"table_infra_savings_land_{clusters}.csv",
resources:
mem_mb=20000,
script:
Expand All @@ -339,6 +340,11 @@ rule get_infra_savings:
+ "table_infra_savings_costs_{clusters}.csv",
**config["plotting"],
),
expand(
RESULTS
+ "table_infra_savings_land_{clusters}.csv",
**config["plotting"],
),


rule plot_transmission_congestion:
Expand Down Expand Up @@ -497,6 +503,11 @@ rule plot_all:
+ "table_infra_savings_costs_{clusters}.csv",
**config["plotting"],
),
expand(
RESULTS
+ "table_infra_savings_land_{clusters}.csv",
**config["plotting"],
),
expand(
RESULTS
+ "table_res_share_{clusters}.csv",
Expand Down
5 changes: 5 additions & 0 deletions plots/_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,11 @@
"NL": 103.0, "NO": 74.7, "PL": 87.0, "PT": 112.0, "RO": 110.9,
"RS": 114.0, "SE": 66.0, "SI": 115.0, "SK": 102.8}

# land usage for 1 MW nameplate capacity of wind (34.5 ha = 0.345 km^2) URL: https://www.nrel.gov/docs/fy09osti/45834.pdf
LAND_FOR_WIND = 0.345

# land usage for 1 MW nameplate capacity of solar (4-5 acres = 0.02 km^2) URL: https://amplussolar.com/blogs/1mw-solar-power-plant
LAND_FOR_SOLAR = 0.02

def rename_techs(label):

Expand Down
10 changes: 9 additions & 1 deletion plots/table_infra_savings.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
warnings.filterwarnings("ignore")
from _helpers import mock_snakemake, update_config_from_wildcards, load_network, \
change_path_to_pypsa_eur, change_path_to_base, \
LINE_LIMITS, CO2L_LIMITS, BAU_HORIZON, replace_multiindex_values
LINE_LIMITS, CO2L_LIMITS, BAU_HORIZON, LAND_FOR_WIND, LAND_FOR_SOLAR

from plot_total_costs import compute_costs

Expand Down Expand Up @@ -62,8 +62,10 @@
("2050", "wind"), ("2050", "solar"), ("2050", "gas")
]
)
land_usage = df_savings.copy()
df_savings.columns = pd.MultiIndex.from_tuples(df_savings.columns, names=['horizon','Installed capacity [GW]'])
cost_savings.columns = pd.MultiIndex.from_tuples(cost_savings.columns, names=['horizon','Capital cost [BEur]'])
land_usage.columns = pd.MultiIndex.from_tuples(land_usage.columns, names=['horizon','Land usage [km2]'])

for planning_horizon in planning_horizons:
lineex = line_limits[planning_horizon]
Expand Down Expand Up @@ -101,6 +103,10 @@
gas_costs_carriers = ["Store:gas", "Link:Open-Cycle Gas"]
cost_savings.loc[nice_name, (planning_horizon, "gas")] = (cap_costs.loc[gas_costs_carriers].sum()[0] / 1e9).round(2)

# land usage in thousand km^2
land_usage.loc[nice_name, (planning_horizon, "solar")] = (solar * LAND_FOR_SOLAR).round(2)
land_usage.loc[nice_name, (planning_horizon, "wind")] = (wind * LAND_FOR_WIND).round(2)

# add name for columns
df_savings.index.name = "Scenario [GW]"

Expand All @@ -112,4 +118,6 @@
df_savings.to_csv(snakemake.output.table_cap)
cost_savings.index = ["Limited Renovation and Cost-Optimal/Electric Heating" if s == "Limited Renovation and Cost-Optimal Heating" else s for s in cost_savings.index]
cost_savings.to_csv(snakemake.output.table_costs)
land_usage.index = ["Limited Renovation and Cost-Optimal/Electric Heating" if s == "Limited Renovation and Cost-Optimal Heating" else s for s in land_usage.index]
land_usage.to_csv(snakemake.output.table_land)

0 comments on commit 0525017

Please sign in to comment.