fix broken prepare_sector_network when running without gas grid (#207)
Co-authored-by: lisazeyen <lisa.zeyen@web.de> Co-authored-by: lisazeyen <lisa.zeyen@web.de>
This commit is contained in:
parent
a2459881ef
commit
90c2c909cd
@ -84,12 +84,14 @@ def define_spatial(nodes):
|
|||||||
spatial.gas.biogas = nodes + " biogas"
|
spatial.gas.biogas = nodes + " biogas"
|
||||||
spatial.gas.industry = nodes + " gas for industry"
|
spatial.gas.industry = nodes + " gas for industry"
|
||||||
spatial.gas.industry_cc = nodes + " gas for industry CC"
|
spatial.gas.industry_cc = nodes + " gas for industry CC"
|
||||||
|
spatial.gas.biogas_to_gas = nodes + " biogas to gas"
|
||||||
else:
|
else:
|
||||||
spatial.gas.nodes = ["EU gas"]
|
spatial.gas.nodes = ["EU gas"]
|
||||||
spatial.gas.locations = "EU"
|
spatial.gas.locations = ["EU"]
|
||||||
spatial.gas.biogas = ["EU biogas"]
|
spatial.gas.biogas = ["EU biogas"]
|
||||||
spatial.gas.industry = ["gas for industry"]
|
spatial.gas.industry = ["gas for industry"]
|
||||||
spatial.gas.industry_cc = ["gas for industry CC"]
|
spatial.gas.industry_cc = ["gas for industry CC"]
|
||||||
|
spatial.gas.biogas_to_gas = ["EU biogas to gas"]
|
||||||
|
|
||||||
spatial.gas.df = pd.DataFrame(vars(spatial.gas), index=nodes)
|
spatial.gas.df = pd.DataFrame(vars(spatial.gas), index=nodes)
|
||||||
|
|
||||||
@ -356,6 +358,9 @@ def add_carrier_buses(n, carrier, nodes=None):
|
|||||||
if carrier in n.carriers.index:
|
if carrier in n.carriers.index:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if not isinstance(nodes, pd.Index):
|
||||||
|
nodes = pd.Index(nodes)
|
||||||
|
|
||||||
n.add("Carrier", carrier)
|
n.add("Carrier", carrier)
|
||||||
|
|
||||||
n.madd("Bus",
|
n.madd("Bus",
|
||||||
@ -393,7 +398,6 @@ def remove_elec_base_techs(n):
|
|||||||
to_remove = pd.Index(c.df.carrier.unique()).symmetric_difference(to_keep)
|
to_remove = pd.Index(c.df.carrier.unique()).symmetric_difference(to_keep)
|
||||||
print("Removing", c.list_name, "with carrier", to_remove)
|
print("Removing", c.list_name, "with carrier", to_remove)
|
||||||
names = c.df.index[c.df.carrier.isin(to_remove)]
|
names = c.df.index[c.df.carrier.isin(to_remove)]
|
||||||
print(names)
|
|
||||||
n.mremove(c.name, names)
|
n.mremove(c.name, names)
|
||||||
n.carriers.drop(to_remove, inplace=True, errors="ignore")
|
n.carriers.drop(to_remove, inplace=True, errors="ignore")
|
||||||
|
|
||||||
@ -518,7 +522,7 @@ def add_dac(n, costs):
|
|||||||
|
|
||||||
def add_co2limit(n, Nyears=1., limit=0.):
|
def add_co2limit(n, Nyears=1., limit=0.):
|
||||||
|
|
||||||
print("Adding CO2 budget limit as per unit of 1990 levels of", limit)
|
logger.info(f"Adding CO2 budget limit as per unit of 1990 levels of {limit}")
|
||||||
|
|
||||||
countries = n.buses.country.dropna().unique()
|
countries = n.buses.country.dropna().unique()
|
||||||
|
|
||||||
@ -793,7 +797,7 @@ def prepare_costs(cost_file, USD_to_EUR, discount_rate, Nyears, lifetime):
|
|||||||
|
|
||||||
def add_generation(n, costs):
|
def add_generation(n, costs):
|
||||||
|
|
||||||
print("adding electricity generation")
|
logger.info("adding electricity generation")
|
||||||
|
|
||||||
nodes = pop_layout.index
|
nodes = pop_layout.index
|
||||||
|
|
||||||
@ -802,7 +806,7 @@ def add_generation(n, costs):
|
|||||||
|
|
||||||
for generator, carrier in conventionals.items():
|
for generator, carrier in conventionals.items():
|
||||||
|
|
||||||
if carrier == 'gas' and options["gas_network"]:
|
if carrier == 'gas':
|
||||||
carrier_nodes = spatial.gas.nodes
|
carrier_nodes = spatial.gas.nodes
|
||||||
else:
|
else:
|
||||||
carrier_nodes = ["EU " + carrier]
|
carrier_nodes = ["EU " + carrier]
|
||||||
@ -1005,7 +1009,8 @@ def add_electricity_grid_connection(n, costs):
|
|||||||
|
|
||||||
|
|
||||||
def add_storage_and_grids(n, costs):
|
def add_storage_and_grids(n, costs):
|
||||||
print("adding electricity and hydrogen storage as well as hydrogen and gas grids")
|
|
||||||
|
logger.info("Add hydrogen storage")
|
||||||
|
|
||||||
nodes = pop_layout.index
|
nodes = pop_layout.index
|
||||||
|
|
||||||
@ -1053,6 +1058,8 @@ def add_storage_and_grids(n, costs):
|
|||||||
|
|
||||||
if options['hydrogen_underground_storage']:
|
if options['hydrogen_underground_storage']:
|
||||||
|
|
||||||
|
logger.info("Add hydrogen underground storage")
|
||||||
|
|
||||||
h2_capital_cost = costs.at["hydrogen storage underground", "fixed"]
|
h2_capital_cost = costs.at["hydrogen storage underground", "fixed"]
|
||||||
|
|
||||||
n.madd("Store",
|
n.madd("Store",
|
||||||
@ -1085,7 +1092,7 @@ def add_storage_and_grids(n, costs):
|
|||||||
|
|
||||||
if options["gas_network"]:
|
if options["gas_network"]:
|
||||||
|
|
||||||
logger.info("Add gas infrastructure, incl. LNG terminals, production and entry-points.")
|
logger.info("Add natural gas infrastructure, incl. LNG terminals, production and entry-points.")
|
||||||
|
|
||||||
if options["H2_retrofit"]:
|
if options["H2_retrofit"]:
|
||||||
gas_pipes["p_nom_max"] = gas_pipes.p_nom
|
gas_pipes["p_nom_max"] = gas_pipes.p_nom
|
||||||
@ -1315,7 +1322,7 @@ def add_storage_and_grids(n, costs):
|
|||||||
def add_land_transport(n, costs):
|
def add_land_transport(n, costs):
|
||||||
# TODO options?
|
# TODO options?
|
||||||
|
|
||||||
print("adding land transport")
|
logger.info("Add land transport")
|
||||||
|
|
||||||
fuel_cell_share = get(options["land_transport_fuel_cell_share"], investment_year)
|
fuel_cell_share = get(options["land_transport_fuel_cell_share"], investment_year)
|
||||||
electric_share = get(options["land_transport_electric_share"], investment_year)
|
electric_share = get(options["land_transport_electric_share"], investment_year)
|
||||||
@ -1437,7 +1444,7 @@ def add_land_transport(n, costs):
|
|||||||
|
|
||||||
def add_heat(n, costs):
|
def add_heat(n, costs):
|
||||||
|
|
||||||
print("adding heat")
|
logger.info("Add heat sector")
|
||||||
|
|
||||||
sectors = ["residential", "services"]
|
sectors = ["residential", "services"]
|
||||||
|
|
||||||
@ -1673,7 +1680,7 @@ def add_heat(n, costs):
|
|||||||
|
|
||||||
if options['retrofitting']['retro_endogen']:
|
if options['retrofitting']['retro_endogen']:
|
||||||
|
|
||||||
print("adding retrofitting endogenously")
|
logger.info("Add retrofitting endogenously")
|
||||||
|
|
||||||
# resample heat demand temporal 'heat_demand_r' depending on in config
|
# resample heat demand temporal 'heat_demand_r' depending on in config
|
||||||
# specified temporal resolution, to not overestimate retrofitting
|
# specified temporal resolution, to not overestimate retrofitting
|
||||||
@ -1742,7 +1749,7 @@ def add_heat(n, costs):
|
|||||||
|
|
||||||
# check that ambitious retrofitting has higher costs per MWh than moderate retrofitting
|
# check that ambitious retrofitting has higher costs per MWh than moderate retrofitting
|
||||||
if (capital_cost.diff() < 0).sum():
|
if (capital_cost.diff() < 0).sum():
|
||||||
print(f"Warning: costs are not linear for {ct} {sec}")
|
logger.warning(f"Costs are not linear for {ct} {sec}")
|
||||||
s = capital_cost[(capital_cost.diff() < 0)].index
|
s = capital_cost[(capital_cost.diff() < 0)].index
|
||||||
strengths = strengths.drop(s)
|
strengths = strengths.drop(s)
|
||||||
|
|
||||||
@ -1809,7 +1816,7 @@ def create_nodes_for_heat_sector():
|
|||||||
|
|
||||||
def add_biomass(n, costs):
|
def add_biomass(n, costs):
|
||||||
|
|
||||||
print("adding biomass")
|
logger.info("Add biomass")
|
||||||
|
|
||||||
biomass_potentials = pd.read_csv(snakemake.input.biomass_potentials, index_col=0)
|
biomass_potentials = pd.read_csv(snakemake.input.biomass_potentials, index_col=0)
|
||||||
|
|
||||||
@ -1859,7 +1866,7 @@ def add_biomass(n, costs):
|
|||||||
)
|
)
|
||||||
|
|
||||||
n.madd("Link",
|
n.madd("Link",
|
||||||
spatial.gas.locations + "biogas to gas",
|
spatial.gas.biogas_to_gas,
|
||||||
bus0=spatial.gas.biogas,
|
bus0=spatial.gas.biogas,
|
||||||
bus1=spatial.gas.nodes,
|
bus1=spatial.gas.nodes,
|
||||||
bus2="co2 atmosphere",
|
bus2="co2 atmosphere",
|
||||||
@ -1939,7 +1946,7 @@ def add_biomass(n, costs):
|
|||||||
|
|
||||||
def add_industry(n, costs):
|
def add_industry(n, costs):
|
||||||
|
|
||||||
print("adding industrial demand")
|
logger.info("Add industrial demand")
|
||||||
|
|
||||||
nodes = pop_layout.index
|
nodes = pop_layout.index
|
||||||
|
|
||||||
@ -2260,7 +2267,7 @@ def add_industry(n, costs):
|
|||||||
def add_waste_heat(n):
|
def add_waste_heat(n):
|
||||||
# TODO options?
|
# TODO options?
|
||||||
|
|
||||||
print("adding possibility to use industrial waste heat in district heating")
|
logger.info("Add possibility to use industrial waste heat in district heating")
|
||||||
|
|
||||||
#AC buses with district heating
|
#AC buses with district heating
|
||||||
urban_central = n.buses.index[n.buses.carrier == "urban central heat"]
|
urban_central = n.buses.index[n.buses.carrier == "urban central heat"]
|
||||||
@ -2390,7 +2397,7 @@ def maybe_adjust_costs_and_potentials(n, opts):
|
|||||||
|
|
||||||
# TODO this should rather be a config no wildcard
|
# TODO this should rather be a config no wildcard
|
||||||
def limit_individual_line_extension(n, maxext):
|
def limit_individual_line_extension(n, maxext):
|
||||||
print(f"limiting new HVAC and HVDC extensions to {maxext} MW")
|
logger.info(f"limiting new HVAC and HVDC extensions to {maxext} MW")
|
||||||
n.lines['s_nom_max'] = n.lines['s_nom'] + maxext
|
n.lines['s_nom_max'] = n.lines['s_nom'] + maxext
|
||||||
hvdc = n.links.index[n.links.carrier == 'DC']
|
hvdc = n.links.index[n.links.carrier == 'DC']
|
||||||
n.links.loc[hvdc, 'p_nom_max'] = n.links.loc[hvdc, 'p_nom'] + maxext
|
n.links.loc[hvdc, 'p_nom_max'] = n.links.loc[hvdc, 'p_nom'] + maxext
|
||||||
@ -2517,7 +2524,7 @@ if __name__ == "__main__":
|
|||||||
limit = o[o.find("Co2L")+4:]
|
limit = o[o.find("Co2L")+4:]
|
||||||
limit = float(limit.replace("p", ".").replace("m", "-"))
|
limit = float(limit.replace("p", ".").replace("m", "-"))
|
||||||
break
|
break
|
||||||
print("add CO2 limit from", limit_type)
|
print("Add CO2 limit from", limit_type)
|
||||||
add_co2limit(n, Nyears, limit)
|
add_co2limit(n, Nyears, limit)
|
||||||
|
|
||||||
for o in opts:
|
for o in opts:
|
||||||
|
Loading…
Reference in New Issue
Block a user