fix bug when adding biomass industry demand, add option to remove biomass transport and have only single EU biomass node
This commit is contained in:
parent
13cae7d66f
commit
b4fbb47d29
@ -1542,7 +1542,8 @@ def add_industry(network):
|
|||||||
industrial_demand.index + " solid biomass for industry",
|
industrial_demand.index + " solid biomass for industry",
|
||||||
bus=industrial_demand.index + " solid biomass for industry",
|
bus=industrial_demand.index + " solid biomass for industry",
|
||||||
carrier="solid biomass for industry",
|
carrier="solid biomass for industry",
|
||||||
p_set=industrial_demand["solid biomass"]/8760.)
|
p_set=(industrial_demand["solid biomass"]
|
||||||
|
.rename(index=lambda x: x + " solid biomass for industry"))/8760.)
|
||||||
|
|
||||||
network.madd("Link",
|
network.madd("Link",
|
||||||
industrial_demand.index + " solid biomass for industry",
|
industrial_demand.index + " solid biomass for industry",
|
||||||
@ -1800,8 +1801,76 @@ def remove_h2_network(n):
|
|||||||
carrier="H2 Store",
|
carrier="H2 Store",
|
||||||
capital_cost=h2_capital_cost)
|
capital_cost=h2_capital_cost)
|
||||||
|
|
||||||
# def remove_biomass_transport(n):
|
def remove_biomass_transport(n):
|
||||||
|
|
||||||
|
print("no transport of solid biomass considered")
|
||||||
|
|
||||||
|
# remove country specific biomass buses
|
||||||
|
n.buses = n.buses[~n.buses.carrier.str.contains("biomass")]
|
||||||
|
# biomass potential
|
||||||
|
biomass_pot = n.stores[n.stores.carrier=="solid biomass"].e_nom.sum()
|
||||||
|
# remove biomass store per country
|
||||||
|
n.stores = n.stores[n.stores.carrier!="solid biomass"]
|
||||||
|
# remove biomass transport links
|
||||||
|
n.links = n.links[n.links.carrier!="solid biomass transport"]
|
||||||
|
# total industry demand for biomass
|
||||||
|
biomass_demand = n.loads[n.loads.carrier=="solid biomass for industry"].p_set.sum()
|
||||||
|
# remove industry demand
|
||||||
|
n.loads = n.loads[n.loads.carrier!="solid biomass for industry"]
|
||||||
|
# drop transport and industry links
|
||||||
|
n.links = n.links[~n.links.carrier.isin(['solid biomass transport',
|
||||||
|
'solid biomass for industry',
|
||||||
|
'solid biomass for industry CCS'])]
|
||||||
|
|
||||||
|
# add back EU bus + load + store + industry links
|
||||||
|
n.madd("Bus",
|
||||||
|
["EU solid biomass"],
|
||||||
|
location="EU",
|
||||||
|
carrier="solid biomass")
|
||||||
|
|
||||||
|
n.madd("Bus",
|
||||||
|
["solid biomass for industry"],
|
||||||
|
location="EU",
|
||||||
|
carrier="solid biomass for industry")
|
||||||
|
|
||||||
|
n.madd("Load",
|
||||||
|
["solid biomass for industry"],
|
||||||
|
bus="solid biomass for industry",
|
||||||
|
carrier="solid biomass for industry",
|
||||||
|
p_set=biomass_demand)
|
||||||
|
|
||||||
|
n.madd("Store",
|
||||||
|
["EU solid biomass"],
|
||||||
|
bus="EU solid biomass",
|
||||||
|
carrier="solid biomass",
|
||||||
|
e_nom=biomass_pot,
|
||||||
|
marginal_cost=costs.at['solid biomass','fuel'],
|
||||||
|
e_initial=biomass_pot)
|
||||||
|
|
||||||
|
n.madd("Link",
|
||||||
|
["solid biomass for industry"],
|
||||||
|
bus0="EU solid biomass",
|
||||||
|
bus1="solid biomass for industry",
|
||||||
|
carrier="solid biomass for industry",
|
||||||
|
p_nom_extendable=True,
|
||||||
|
efficiency=1.)
|
||||||
|
|
||||||
|
n.madd("Link",
|
||||||
|
["solid biomass for industry CCS"],
|
||||||
|
bus0="EU solid biomass",
|
||||||
|
bus1="solid biomass for industry",
|
||||||
|
bus2="co2 atmosphere",
|
||||||
|
bus3="co2 stored",
|
||||||
|
carrier="solid biomass for industry CCS",
|
||||||
|
p_nom_extendable=True,
|
||||||
|
capital_cost=costs.at["industry CCS","fixed"]*costs.at['solid biomass','CO2 intensity']*8760, #8760 converts EUR/(tCO2/a) to EUR/(tCO2/h)
|
||||||
|
efficiency=0.9,
|
||||||
|
efficiency2=-costs.at['solid biomass','CO2 intensity']*options["ccs_fraction"],
|
||||||
|
efficiency3=costs.at['solid biomass','CO2 intensity']*options["ccs_fraction"],
|
||||||
|
lifetime=costs.at['industry CCS','lifetime'])
|
||||||
|
|
||||||
|
# set CHP buses from country to single EU bus
|
||||||
|
n.links.loc[n.links.carrier.str.contains("biomass CHP"), "bus0"] = "EU solid biomass"
|
||||||
|
|
||||||
|
|
||||||
#%%
|
#%%
|
||||||
@ -1916,6 +1985,8 @@ if __name__ == "__main__":
|
|||||||
if o[:4] == "dist":
|
if o[:4] == "dist":
|
||||||
snakemake.config["sector"]['electricity_distribution_grid'] = True
|
snakemake.config["sector"]['electricity_distribution_grid'] = True
|
||||||
snakemake.config["sector"]['electricity_distribution_grid_cost_factor'] = float(o[4:].replace("p",".").replace("m","-"))
|
snakemake.config["sector"]['electricity_distribution_grid_cost_factor'] = float(o[4:].replace("p",".").replace("m","-"))
|
||||||
|
if o == "biomasstransport":
|
||||||
|
options["biomass_transport"] = True
|
||||||
|
|
||||||
nodal_energy_totals, heat_demand, ashp_cop, gshp_cop, solar_thermal, transport, avail_profile, dsm_profile, co2_totals, nodal_transport_data = prepare_data(n)
|
nodal_energy_totals, heat_demand, ashp_cop, gshp_cop, solar_thermal, transport, avail_profile, dsm_profile, co2_totals, nodal_transport_data = prepare_data(n)
|
||||||
|
|
||||||
@ -1943,6 +2014,9 @@ if __name__ == "__main__":
|
|||||||
if "noH2network" in opts:
|
if "noH2network" in opts:
|
||||||
remove_h2_network(n)
|
remove_h2_network(n)
|
||||||
|
|
||||||
|
if not options["biomass_transport"]:
|
||||||
|
remove_biomass_transport(n)
|
||||||
|
|
||||||
for o in opts:
|
for o in opts:
|
||||||
m = re.match(r'^\d+h$', o, re.IGNORECASE)
|
m = re.match(r'^\d+h$', o, re.IGNORECASE)
|
||||||
if m is not None:
|
if m is not None:
|
||||||
|
Loading…
Reference in New Issue
Block a user