Added msw incineration
This commit is contained in:
parent
c05cfff765
commit
b29e1c196e
@ -61,13 +61,18 @@ def define_spatial(nodes, options):
|
|||||||
spatial.biomass.locations = nodes
|
spatial.biomass.locations = nodes
|
||||||
spatial.biomass.industry = nodes + " solid biomass for industry"
|
spatial.biomass.industry = nodes + " solid biomass for industry"
|
||||||
spatial.biomass.industry_cc = nodes + " solid biomass for industry CC"
|
spatial.biomass.industry_cc = nodes + " solid biomass for industry CC"
|
||||||
|
spatial.msw.nodes = nodes + " municipal solid waste"
|
||||||
|
spatial.msw.locations = nodes
|
||||||
else:
|
else:
|
||||||
spatial.biomass.nodes = ["EU solid biomass"]
|
spatial.biomass.nodes = ["EU solid biomass"]
|
||||||
spatial.biomass.locations = ["EU"]
|
spatial.biomass.locations = ["EU"]
|
||||||
spatial.biomass.industry = ["solid biomass for industry"]
|
spatial.biomass.industry = ["solid biomass for industry"]
|
||||||
spatial.biomass.industry_cc = ["solid biomass for industry CC"]
|
spatial.biomass.industry_cc = ["solid biomass for industry CC"]
|
||||||
|
spatial.msw.nodes = ["EU municipal solid waste"]
|
||||||
|
spatial.msw.locations = ["EU"]
|
||||||
|
|
||||||
spatial.biomass.df = pd.DataFrame(vars(spatial.biomass), index=nodes)
|
spatial.biomass.df = pd.DataFrame(vars(spatial.biomass), index=nodes)
|
||||||
|
spatial.msw.df = pd.DataFrame(vars(spatial.msw), index=nodes)
|
||||||
|
|
||||||
# co2
|
# co2
|
||||||
|
|
||||||
@ -2161,11 +2166,16 @@ def add_biomass(n, costs):
|
|||||||
solid_biomass_potentials_spatial = biomass_potentials["solid biomass"].rename(
|
solid_biomass_potentials_spatial = biomass_potentials["solid biomass"].rename(
|
||||||
index=lambda x: x + " solid biomass"
|
index=lambda x: x + " solid biomass"
|
||||||
)
|
)
|
||||||
|
msw_biomass_potentials_spatial = biomass_potentials["municipal solid waste"].rename(
|
||||||
|
index=lambda x: x + " municipal solid waste"
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
solid_biomass_potentials_spatial = biomass_potentials["solid biomass"].sum()
|
solid_biomass_potentials_spatial = biomass_potentials["solid biomass"].sum()
|
||||||
|
msw_biomass_potentials_spatial = biomass_potentials["municipal solid waste"].sum()
|
||||||
|
|
||||||
n.add("Carrier", "biogas")
|
n.add("Carrier", "biogas")
|
||||||
n.add("Carrier", "solid biomass")
|
n.add("Carrier", "solid biomass")
|
||||||
|
n.add("Carrier", "municipal solid waste")
|
||||||
|
|
||||||
n.madd(
|
n.madd(
|
||||||
"Bus",
|
"Bus",
|
||||||
@ -2183,6 +2193,11 @@ def add_biomass(n, costs):
|
|||||||
unit="MWh_LHV",
|
unit="MWh_LHV",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
n.madd("Bus",
|
||||||
|
spatial.msw.nodes,
|
||||||
|
location=spatial.msw.locations,
|
||||||
|
carrier="municipal solid waste")
|
||||||
|
|
||||||
n.madd(
|
n.madd(
|
||||||
"Store",
|
"Store",
|
||||||
spatial.gas.biogas,
|
spatial.gas.biogas,
|
||||||
@ -2203,6 +2218,15 @@ def add_biomass(n, costs):
|
|||||||
e_initial=solid_biomass_potentials_spatial,
|
e_initial=solid_biomass_potentials_spatial,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
n.madd("Store",
|
||||||
|
spatial.msw.nodes,
|
||||||
|
bus=spatial.msw.nodes,
|
||||||
|
carrier="municipal solid waste",
|
||||||
|
e_nom=msw_biomass_potentials_spatial,
|
||||||
|
marginal_cost=0,#costs.at["municipal solid waste", "fuel"],
|
||||||
|
e_initial=msw_biomass_potentials_spatial,
|
||||||
|
)
|
||||||
|
|
||||||
n.madd(
|
n.madd(
|
||||||
"Link",
|
"Link",
|
||||||
spatial.gas.biogas_to_gas,
|
spatial.gas.biogas_to_gas,
|
||||||
@ -2274,6 +2298,18 @@ def add_biomass(n, costs):
|
|||||||
carrier="solid biomass transport",
|
carrier="solid biomass transport",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
n.madd(
|
||||||
|
"Link",
|
||||||
|
biomass_transport.index,
|
||||||
|
bus0=biomass_transport.bus0 + " municipal solid waste",
|
||||||
|
bus1=biomass_transport.bus1 + " municipal solid waste",
|
||||||
|
p_nom_extendable=False,
|
||||||
|
p_nom=5e4,
|
||||||
|
length=biomass_transport.length.values,
|
||||||
|
marginal_cost=biomass_transport.costs * biomass_transport.length.values,
|
||||||
|
carrier="municipal solid waste transport",
|
||||||
|
)
|
||||||
|
|
||||||
elif options["biomass_spatial"]:
|
elif options["biomass_spatial"]:
|
||||||
# add artificial biomass generators at nodes which include transport costs
|
# add artificial biomass generators at nodes which include transport costs
|
||||||
transport_costs = pd.read_csv(
|
transport_costs = pd.read_csv(
|
||||||
@ -2303,6 +2339,25 @@ def add_biomass(n, costs):
|
|||||||
type="operational_limit",
|
type="operational_limit",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
#Add municipal solid waste
|
||||||
|
n.madd(
|
||||||
|
"Generator",
|
||||||
|
spatial.msw.nodes,
|
||||||
|
bus=spatial.msw.nodes,
|
||||||
|
carrier="municipal solid waste",
|
||||||
|
p_nom=10000,
|
||||||
|
marginal_cost=0#costs.at["municipal solid waste", "fuel"]
|
||||||
|
+ bus_transport_costs * average_distance,
|
||||||
|
)
|
||||||
|
n.add(
|
||||||
|
"GlobalConstraint",
|
||||||
|
"msw limit",
|
||||||
|
carrier_attribute="municipal solid waste",
|
||||||
|
sense="<=",
|
||||||
|
constant=biomass_potentials["municipal solid waste"].sum(),
|
||||||
|
type="operational_limit",
|
||||||
|
)
|
||||||
|
|
||||||
# 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"]
|
||||||
if not urban_central.empty and options["chp"]:
|
if not urban_central.empty and options["chp"]:
|
||||||
@ -2359,6 +2414,48 @@ def add_biomass(n, costs):
|
|||||||
lifetime=costs.at[key, "lifetime"],
|
lifetime=costs.at[key, "lifetime"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if options['waste_chp']:
|
||||||
|
print('Adding waste CHPs')
|
||||||
|
n.madd("Link",
|
||||||
|
urban_central + " waste CHP",
|
||||||
|
bus0=urban_central + " municipal solid waste",
|
||||||
|
bus1=urban_central,
|
||||||
|
bus4=urban_central + " urban central heat",
|
||||||
|
bus3="co2 atmosphere",
|
||||||
|
carrier="urban central waste incineration",
|
||||||
|
p_nom_extendable=True,
|
||||||
|
# p_nom=biomass_potential['municipal solid waste'] / 8760,
|
||||||
|
capital_cost=costs.at['waste CHP', 'fixed'] * costs.at['waste CHP', 'efficiency'],
|
||||||
|
marginal_cost=costs.at['waste CHP', 'VOM'],
|
||||||
|
efficiency=costs.at['waste CHP', 'efficiency'],
|
||||||
|
efficiency4=costs.at['waste CHP', 'efficiency-heat'],
|
||||||
|
efficiency3=costs.at['solid biomass', 'CO2 intensity']-costs.at['solid biomass', 'CO2 intensity'],
|
||||||
|
lifetime=costs.at['waste CHP', 'lifetime'])
|
||||||
|
|
||||||
|
if beccs:
|
||||||
|
n.madd("Link",
|
||||||
|
urban_central + " waste CHP CC",
|
||||||
|
bus0=urban_central + " municipal solid waste",
|
||||||
|
bus1=urban_central,
|
||||||
|
bus4=urban_central + " urban central heat",
|
||||||
|
bus3="co2 atmosphere",
|
||||||
|
bus2="co2 stored",
|
||||||
|
carrier="urban central waste incineration CC",
|
||||||
|
p_nom_extendable=True,
|
||||||
|
# p_nom=costs.at['waste CHP CC', 'efficiency'] * biomass_potential['municipal solid waste'] / 8760,
|
||||||
|
capital_cost=costs.at['waste CHP CC', 'fixed'] * costs.at['waste CHP CC', 'efficiency']
|
||||||
|
+ costs.at['biomass CHP capture', 'fixed'] * costs.at['solid biomass', 'CO2 intensity'],
|
||||||
|
marginal_cost=costs.at['waste CHP CC', 'VOM'],
|
||||||
|
efficiency=costs.at['waste CHP CC', 'efficiency'],
|
||||||
|
efficiency4=costs.at['waste CHP CC', 'efficiency-heat'],
|
||||||
|
#Assuming same CO2 intensity as solid biomass
|
||||||
|
efficiency3=costs.at['solid biomass', 'CO2 intensity'] * (1 - options["cc_fraction"])-costs.at['solid biomass', 'CO2 intensity'],
|
||||||
|
efficiency2=costs.at['solid biomass', 'CO2 intensity'] * options["cc_fraction"],
|
||||||
|
c_b=costs.at['waste CHP CC', 'c_b'],
|
||||||
|
c_v=costs.at['waste CHP CC', 'c_v'],
|
||||||
|
lifetime=costs.at['waste CHP CC', 'lifetime'])
|
||||||
|
|
||||||
|
|
||||||
if options["biomass_boiler"]:
|
if options["biomass_boiler"]:
|
||||||
# TODO: Add surcharge for pellets
|
# TODO: Add surcharge for pellets
|
||||||
nodes = pop_layout.index
|
nodes = pop_layout.index
|
||||||
|
Loading…
Reference in New Issue
Block a user