changed overlap indexing, general cleanup
This commit is contained in:
parent
4734618bff
commit
9a5c010c25
@ -67,7 +67,12 @@ def prepare_egs_data(egs_file):
|
||||
for col in df.columns:
|
||||
country_df[col] = country_data[0][years.index(year)][col]
|
||||
|
||||
df = pd.concat((df, country_df.dropna()), axis=0, ignore_index=True)
|
||||
if country_df.dropna().empty:
|
||||
continue
|
||||
elif df.empty:
|
||||
df = country_df.dropna()
|
||||
else:
|
||||
df = pd.concat((df, country_df.dropna()), ignore_index=True)
|
||||
|
||||
gdf = gpd.GeoDataFrame(
|
||||
df.drop(columns=["Lon", "Lat"]), geometry=gpd.points_from_xy(df.Lon, df.Lat)
|
||||
@ -89,7 +94,12 @@ if __name__ == "__main__":
|
||||
clusters=37,
|
||||
)
|
||||
|
||||
sustainability_factor = 0.0025 # factor sustainable p_nom vs p_nom
|
||||
sustainability_factor = 0.0025
|
||||
# the share of heat that is replenished from the earth's core.
|
||||
# we are not constraining ourselves to the sustainable share, but
|
||||
# inversely apply it to our underlying data, which refers to the
|
||||
# sustainable heat.
|
||||
|
||||
config = snakemake.config
|
||||
|
||||
egs_data = prepare_egs_data(snakemake.input.egs_cost)
|
||||
@ -97,7 +107,7 @@ if __name__ == "__main__":
|
||||
if config["sector"]["enhanced_geothermal_optimism"]:
|
||||
egs_data = egs_data[(year := config["costs"]["year"])]
|
||||
logger.info(
|
||||
f"EGS optimism! Builing EGS potentials with costs estimated for {year}."
|
||||
f"EGS optimism! Building EGS potentials with costs estimated for {year}."
|
||||
)
|
||||
|
||||
else:
|
||||
@ -106,7 +116,7 @@ if __name__ == "__main__":
|
||||
f"No EGS optimism! Building EGS potentials with {default_year} costs."
|
||||
)
|
||||
|
||||
egs_data.index = egs_data.geometry.astype(str)
|
||||
egs_data = egs_data.loc[egs_data["PowerSust"] > 0].reset_index(drop=True)
|
||||
egs_shapes = egs_data.geometry
|
||||
|
||||
network_shapes = (
|
||||
@ -117,7 +127,7 @@ if __name__ == "__main__":
|
||||
|
||||
overlap_matrix = pd.DataFrame(
|
||||
index=network_shapes.index,
|
||||
columns=(egs_shapes := egs_data.geometry).astype(str).values,
|
||||
columns=egs_data.index,
|
||||
)
|
||||
|
||||
for name, polygon in network_shapes.geometry.items():
|
||||
@ -127,5 +137,7 @@ if __name__ == "__main__":
|
||||
|
||||
overlap_matrix.to_csv(snakemake.output["egs_overlap"])
|
||||
|
||||
# consider not only replenished heat
|
||||
egs_data["p_nom_max"] = egs_data["PowerSust"] / sustainability_factor
|
||||
|
||||
egs_data[["p_nom_max", "CAPEX"]].to_csv(snakemake.output["egs_potentials"])
|
||||
|
@ -3303,6 +3303,7 @@ def add_enhanced_geothermal(
|
||||
config = snakemake.config
|
||||
|
||||
overlap = pd.read_csv(egs_overlap, index_col=0)
|
||||
overlap.columns = overlap.columns.astype(int)
|
||||
egs_potentials = pd.read_csv(egs_potentials, index_col=0)
|
||||
|
||||
Nyears = n.snapshot_weightings.generators.sum() / 8760
|
||||
@ -3343,20 +3344,16 @@ def add_enhanced_geothermal(
|
||||
"EU geothermal heat",
|
||||
bus="EU geothermal heat",
|
||||
carrier="geothermal heat",
|
||||
p_nom_max=np.inf,
|
||||
p_nom_max=egs_potentials["p_nom_max"].sum() / efficiency,
|
||||
p_nom_extendable=True,
|
||||
)
|
||||
|
||||
egs_potentials.index = np.arange(len(egs_potentials)).astype(str)
|
||||
overlap.columns = egs_potentials.index
|
||||
|
||||
for bus, bus_overlap in overlap.iterrows():
|
||||
if not bus_overlap.sum():
|
||||
continue
|
||||
|
||||
overlap = bus_overlap.loc[bus_overlap > 0.0]
|
||||
|
||||
bus_egs = egs_potentials.loc[bus_overlap.loc[bus_overlap > 0.0].index]
|
||||
bus_egs = egs_potentials.loc[overlap.index]
|
||||
|
||||
if not len(bus_egs):
|
||||
continue
|
||||
@ -3567,7 +3564,7 @@ if __name__ == "__main__":
|
||||
if options.get("cluster_heat_buses", False) and not first_year_myopic:
|
||||
cluster_heat_buses(n)
|
||||
|
||||
if options.get("enhanced_geothermal"):
|
||||
if options.get("enhanced_geothermal", False):
|
||||
logger.info("Adding Enhanced Geothermal Potential.")
|
||||
add_enhanced_geothermal(
|
||||
n, snakemake.input["egs_potentials"], snakemake.input["egs_overlap"], costs
|
||||
|
Loading…
Reference in New Issue
Block a user