towards adding district heating, included spatial
This commit is contained in:
parent
6cd46bf261
commit
24c3d28b35
@ -716,7 +716,7 @@ rule build_egs_potentials:
|
|||||||
output:
|
output:
|
||||||
egs_potentials=RESOURCES + "egs_potentials_s{simpl}_{clusters}.csv",
|
egs_potentials=RESOURCES + "egs_potentials_s{simpl}_{clusters}.csv",
|
||||||
egs_overlap=RESOURCES + "egs_overlap_s{simpl}_{clusters}.csv",
|
egs_overlap=RESOURCES + "egs_overlap_s{simpl}_{clusters}.csv",
|
||||||
egs_capacity_factors=RESOURCES + "egs_capacity_factors_s{simpl}_{clusters}.csv",
|
egs_capacity_factors=RESOURCES + "egs_capacity_factors_s{simpl}_{clusters}.csv"
|
||||||
if config["sector"]["enhanced_geothermal_var_cf"]
|
if config["sector"]["enhanced_geothermal_var_cf"]
|
||||||
else [],
|
else [],
|
||||||
threads: 1
|
threads: 1
|
||||||
@ -798,7 +798,7 @@ rule prepare_sector_network:
|
|||||||
cop_air_urban=RESOURCES + "cop_air_urban_elec_s{simpl}_{clusters}.nc",
|
cop_air_urban=RESOURCES + "cop_air_urban_elec_s{simpl}_{clusters}.nc",
|
||||||
egs_potentials=RESOURCES + "egs_potentials_s{simpl}_{clusters}.csv",
|
egs_potentials=RESOURCES + "egs_potentials_s{simpl}_{clusters}.csv",
|
||||||
egs_overlap=RESOURCES + "egs_overlap_s{simpl}_{clusters}.csv",
|
egs_overlap=RESOURCES + "egs_overlap_s{simpl}_{clusters}.csv",
|
||||||
egs_capacity_factors=RESOURCES + "egs_capacity_factors_s{simpl}_{clusters}.csv",
|
egs_capacity_factors=RESOURCES + "egs_capacity_factors_s{simpl}_{clusters}.csv"
|
||||||
if config["sector"]["enhanced_geothermal_var_cf"]
|
if config["sector"]["enhanced_geothermal_var_cf"]
|
||||||
else [],
|
else [],
|
||||||
solar_thermal_total=RESOURCES
|
solar_thermal_total=RESOURCES
|
||||||
|
@ -151,6 +151,11 @@ def define_spatial(nodes, options):
|
|||||||
spatial.lignite.nodes = ["EU lignite"]
|
spatial.lignite.nodes = ["EU lignite"]
|
||||||
spatial.lignite.locations = ["EU"]
|
spatial.lignite.locations = ["EU"]
|
||||||
|
|
||||||
|
# deep geothermal
|
||||||
|
spatial.geothermal_heat = SimpleNamespace()
|
||||||
|
spatial.geothermal_heat.nodes = ["EU deep geothermal"]
|
||||||
|
spatial.geothermal_heat.locations = ["EU"]
|
||||||
|
|
||||||
return spatial
|
return spatial
|
||||||
|
|
||||||
|
|
||||||
@ -3310,16 +3315,9 @@ def add_enhanced_geothermal(
|
|||||||
Built in scripts/build_egs_potentials.py
|
Built in scripts/build_egs_potentials.py
|
||||||
"""
|
"""
|
||||||
|
|
||||||
n.add(
|
|
||||||
"Carrier",
|
|
||||||
"geothermal heat",
|
|
||||||
nice_name="Geothermal Heat",
|
|
||||||
color=snakemake.config["plotting"]["tech_colors"]["geothermal"],
|
|
||||||
co2_emissions=costs.at["geothermal", "CO2 intensity"],
|
|
||||||
)
|
|
||||||
|
|
||||||
config = snakemake.config
|
config = snakemake.config
|
||||||
|
|
||||||
|
# matrix defining the overlap between gridded geothermal potential estimation, and bus regions
|
||||||
overlap = pd.read_csv(egs_overlap, index_col=0)
|
overlap = pd.read_csv(egs_overlap, index_col=0)
|
||||||
overlap.columns = overlap.columns.astype(int)
|
overlap.columns = overlap.columns.astype(int)
|
||||||
egs_potentials = pd.read_csv(egs_potentials, index_col=0)
|
egs_potentials = pd.read_csv(egs_potentials, index_col=0)
|
||||||
@ -3351,23 +3349,31 @@ def add_enhanced_geothermal(
|
|||||||
egs_potentials["p_nom_max"] = egs_potentials["p_nom_max"] * 1000.0
|
egs_potentials["p_nom_max"] = egs_potentials["p_nom_max"] * 1000.0
|
||||||
egs_potentials["capital_cost"] = egs_potentials["capital_cost"] * 1000.0
|
egs_potentials["capital_cost"] = egs_potentials["capital_cost"] * 1000.0
|
||||||
|
|
||||||
n.add(
|
# not using add_carrier_buses, as we are not interested in a Store
|
||||||
|
n.add("Carrier", "geothermal heat")
|
||||||
|
|
||||||
|
n.madd(
|
||||||
"Bus",
|
"Bus",
|
||||||
"EU geothermal heat",
|
spatial.geothermal_heat.nodes,
|
||||||
|
location=spatial.geothermal_heat.locations,
|
||||||
carrier="geothermal heat",
|
carrier="geothermal heat",
|
||||||
unit="MWh_th",
|
unit="MWh_th",
|
||||||
location="EU",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if len(spatial.geothermal.nodes) > 1:
|
||||||
|
logger.warning("'add_geothermal' not implemented for multiple geothermal nodes.")
|
||||||
|
|
||||||
n.add(
|
n.add(
|
||||||
"Generator",
|
"Generator",
|
||||||
"EU geothermal heat",
|
spatial.geothermal_heat.nodes,
|
||||||
bus="EU geothermal heat",
|
bus=spatial.geothermal_heat.nodes,
|
||||||
carrier="geothermal heat",
|
carrier="geothermal heat",
|
||||||
p_nom_max=egs_potentials["p_nom_max"].sum() / efficiency,
|
|
||||||
p_nom_extendable=True,
|
p_nom_extendable=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if
|
||||||
|
|
||||||
|
|
||||||
for bus, bus_overlap in overlap.iterrows():
|
for bus, bus_overlap in overlap.iterrows():
|
||||||
if not bus_overlap.sum():
|
if not bus_overlap.sum():
|
||||||
continue
|
continue
|
||||||
@ -3395,19 +3401,24 @@ def add_enhanced_geothermal(
|
|||||||
capital_cost = bus_egs["capital_cost"]
|
capital_cost = bus_egs["capital_cost"]
|
||||||
capital_cost.index = f"{bus} enhanced geothermal" + appendix
|
capital_cost.index = f"{bus} enhanced geothermal" + appendix
|
||||||
|
|
||||||
|
# add surface bus
|
||||||
|
n.add(
|
||||||
|
"Bus",
|
||||||
|
f"geothermal heat surface {bus}",
|
||||||
|
location=bus,
|
||||||
|
)
|
||||||
|
|
||||||
n.madd(
|
n.madd(
|
||||||
"Link",
|
"Link",
|
||||||
f"{bus} enhanced geothermal" + appendix,
|
f"{bus} enhanced geothermal" + appendix,
|
||||||
location=bus,
|
location=bus,
|
||||||
bus0="EU geothermal heat",
|
bus0=spatial.geothermal_heat.nodes,
|
||||||
bus1=bus,
|
bus1=f"geothermal heat surface {bus}",
|
||||||
bus2="co2 atmosphere",
|
|
||||||
carrier="geothermal heat",
|
carrier="geothermal heat",
|
||||||
p_nom_extendable=True,
|
p_nom_extendable=True,
|
||||||
p_nom_max=p_nom_max / efficiency,
|
p_nom_max=p_nom_max / efficiency,
|
||||||
capital_cost=capital_cost * efficiency,
|
capital_cost=capital_cost * efficiency,
|
||||||
efficiency=efficiency,
|
efficiency=efficiency,
|
||||||
efficiency2=costs.at["geothermal", "CO2 intensity"] * efficiency,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user