commit
bad875a432
@ -355,7 +355,6 @@ biomass:
|
|||||||
- Secondary Forestry residues - woodchips
|
- Secondary Forestry residues - woodchips
|
||||||
- Sawdust
|
- Sawdust
|
||||||
- Residues from landscape care
|
- Residues from landscape care
|
||||||
- Municipal waste
|
|
||||||
not included:
|
not included:
|
||||||
- Sugar from sugar beet
|
- Sugar from sugar beet
|
||||||
- Rape seed
|
- Rape seed
|
||||||
@ -369,6 +368,8 @@ biomass:
|
|||||||
biogas:
|
biogas:
|
||||||
- Manure solid, liquid
|
- Manure solid, liquid
|
||||||
- Sludge
|
- Sludge
|
||||||
|
municipal solid waste:
|
||||||
|
- Municipal waste
|
||||||
|
|
||||||
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#solar-thermal
|
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#solar-thermal
|
||||||
solar_thermal:
|
solar_thermal:
|
||||||
@ -599,6 +600,7 @@ sector:
|
|||||||
biomass_to_liquid: false
|
biomass_to_liquid: false
|
||||||
electrobiofuels: false
|
electrobiofuels: false
|
||||||
biosng: false
|
biosng: false
|
||||||
|
municipal_solid_waste: false
|
||||||
limit_max_growth:
|
limit_max_growth:
|
||||||
enable: false
|
enable: false
|
||||||
# allowing 30% larger than max historic growth
|
# allowing 30% larger than max historic growth
|
||||||
@ -626,6 +628,7 @@ sector:
|
|||||||
max_amount: 1390 # TWh
|
max_amount: 1390 # TWh
|
||||||
upstream_emissions_factor: .1 #share of solid biomass CO2 emissions at full combustion
|
upstream_emissions_factor: .1 #share of solid biomass CO2 emissions at full combustion
|
||||||
|
|
||||||
|
|
||||||
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#industry
|
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#industry
|
||||||
industry:
|
industry:
|
||||||
St_primary_fraction:
|
St_primary_fraction:
|
||||||
@ -1022,6 +1025,7 @@ plotting:
|
|||||||
biogas: '#e3d37d'
|
biogas: '#e3d37d'
|
||||||
biomass: '#baa741'
|
biomass: '#baa741'
|
||||||
solid biomass: '#baa741'
|
solid biomass: '#baa741'
|
||||||
|
municipal solid waste: '#91ba41'
|
||||||
solid biomass import: '#d5ca8d'
|
solid biomass import: '#d5ca8d'
|
||||||
solid biomass transport: '#baa741'
|
solid biomass transport: '#baa741'
|
||||||
solid biomass for industry: '#7a6d26'
|
solid biomass for industry: '#7a6d26'
|
||||||
|
@ -72,7 +72,7 @@ boilers,--,"{true, false}",Add option for transforming gas into heat using gas b
|
|||||||
resistive_heaters,--,"{true, false}",Add option for transforming electricity into heat using resistive heaters (independently from gas boilers)
|
resistive_heaters,--,"{true, false}",Add option for transforming electricity into heat using resistive heaters (independently from gas boilers)
|
||||||
oil_boilers,--,"{true, false}",Add option for transforming oil into heat using boilers
|
oil_boilers,--,"{true, false}",Add option for transforming oil into heat using boilers
|
||||||
biomass_boiler,--,"{true, false}",Add option for transforming biomass into heat using boilers
|
biomass_boiler,--,"{true, false}",Add option for transforming biomass into heat using boilers
|
||||||
overdimension_individual_heating,--,"float",Add option for overdimensioning individual heating systems by a certain factor. This allows them to cover heat demand peaks e.g. 10% higher than those in the data with a setting of 1.1.
|
overdimension_individual_heating,--,float,Add option for overdimensioning individual heating systems by a certain factor. This allows them to cover heat demand peaks e.g. 10% higher than those in the data with a setting of 1.1.
|
||||||
chp,--,"{true, false}",Add option for using Combined Heat and Power (CHP)
|
chp,--,"{true, false}",Add option for using Combined Heat and Power (CHP)
|
||||||
micro_chp,--,"{true, false}",Add option for using Combined Heat and Power (CHP) for decentral areas.
|
micro_chp,--,"{true, false}",Add option for using Combined Heat and Power (CHP) for decentral areas.
|
||||||
solar_thermal,--,"{true, false}",Add option for using solar thermal to generate heat.
|
solar_thermal,--,"{true, false}",Add option for using solar thermal to generate heat.
|
||||||
@ -139,6 +139,7 @@ biogas_upgrading_cc,--,"{true, false}",Add option to capture CO2 from biomass up
|
|||||||
conventional_generation,,,Add a more detailed description of conventional carriers. Any power generation requires the consumption of fuel from nodes representing that fuel.
|
conventional_generation,,,Add a more detailed description of conventional carriers. Any power generation requires the consumption of fuel from nodes representing that fuel.
|
||||||
biomass_to_liquid,--,"{true, false}",Add option for transforming solid biomass into liquid fuel with the same properties as oil
|
biomass_to_liquid,--,"{true, false}",Add option for transforming solid biomass into liquid fuel with the same properties as oil
|
||||||
biosng,--,"{true, false}",Add option for transforming solid biomass into synthesis gas with the same properties as natural gas
|
biosng,--,"{true, false}",Add option for transforming solid biomass into synthesis gas with the same properties as natural gas
|
||||||
|
municipal_solid_waste,--,"{true, false}",Add option for municipal solid waste
|
||||||
limit_max_growth,,,
|
limit_max_growth,,,
|
||||||
-- enable,--,"{true, false}",Add option to limit the maximum growth of a carrier
|
-- enable,--,"{true, false}",Add option to limit the maximum growth of a carrier
|
||||||
-- factor,p.u.,float,The maximum growth factor of a carrier (e.g. 1.3 allows 30% larger than max historic growth)
|
-- factor,p.u.,float,The maximum growth factor of a carrier (e.g. 1.3 allows 30% larger than max historic growth)
|
||||||
|
|
@ -10,9 +10,11 @@ Release Notes
|
|||||||
Upcoming Release
|
Upcoming Release
|
||||||
================
|
================
|
||||||
|
|
||||||
|
* split solid biomass potentials into solid biomass and municipal solid waste. Add option to use municipal solid waste. This option is only activated in combination with the flag ``waste_to_energy``
|
||||||
|
|
||||||
* Add option to import solid biomass
|
* Add option to import solid biomass
|
||||||
|
|
||||||
* Add option to produce electrobiofuels (flag ``electrobiofuels`) from solid biomass and hydrogen, as a combination of BtL and Fischer-Tropsch to make more use of the biogenic carbon
|
* Add option to produce electrobiofuels (flag ``electrobiofuels``) from solid biomass and hydrogen, as a combination of BtL and Fischer-Tropsch to make more use of the biogenic carbon
|
||||||
|
|
||||||
* Add flag ``sector: fossil_fuels`` in config to remove the option of importing fossil fuels
|
* Add flag ``sector: fossil_fuels`` in config to remove the option of importing fossil fuels
|
||||||
|
|
||||||
|
@ -56,19 +56,25 @@ def define_spatial(nodes, options):
|
|||||||
# biomass
|
# biomass
|
||||||
|
|
||||||
spatial.biomass = SimpleNamespace()
|
spatial.biomass = SimpleNamespace()
|
||||||
|
spatial.msw = SimpleNamespace()
|
||||||
|
|
||||||
if options.get("biomass_spatial", options["biomass_transport"]):
|
if options.get("biomass_spatial", options["biomass_transport"]):
|
||||||
spatial.biomass.nodes = nodes + " solid biomass"
|
spatial.biomass.nodes = nodes + " solid biomass"
|
||||||
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
|
||||||
|
|
||||||
@ -2249,12 +2255,54 @@ 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")
|
||||||
|
|
||||||
|
if (
|
||||||
|
options["municipal_solid_waste"]
|
||||||
|
and not options["industry"]
|
||||||
|
and cf_industry["waste_to_energy"]
|
||||||
|
or cf_industry["waste_to_energy_cc"]
|
||||||
|
):
|
||||||
|
logger.warning(
|
||||||
|
"Flag municipal_solid_waste can be only used with industry "
|
||||||
|
"sector waste to energy."
|
||||||
|
"Setting municipal_solid_waste=False."
|
||||||
|
)
|
||||||
|
options["municipal_solid_waste"] = False
|
||||||
|
|
||||||
|
if options["municipal_solid_waste"]:
|
||||||
|
|
||||||
|
n.add("Carrier", "municipal solid waste")
|
||||||
|
|
||||||
|
n.madd(
|
||||||
|
"Bus",
|
||||||
|
spatial.msw.nodes,
|
||||||
|
location=spatial.msw.locations,
|
||||||
|
carrier="municipal solid waste",
|
||||||
|
)
|
||||||
|
|
||||||
|
e_max_pu = pd.Series([1] * (len(n.snapshots) - 1) + [0], index=n.snapshots)
|
||||||
|
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_max_pu=e_max_pu,
|
||||||
|
e_initial=msw_biomass_potentials_spatial,
|
||||||
|
)
|
||||||
|
|
||||||
n.madd(
|
n.madd(
|
||||||
"Bus",
|
"Bus",
|
||||||
spatial.gas.biogas,
|
spatial.gas.biogas,
|
||||||
@ -2410,6 +2458,19 @@ def add_biomass(n, costs):
|
|||||||
carrier="solid biomass transport",
|
carrier="solid biomass transport",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if options["municipal_solid_waste"]:
|
||||||
|
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(
|
||||||
@ -2439,6 +2500,26 @@ def add_biomass(n, costs):
|
|||||||
type="operational_limit",
|
type="operational_limit",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if options["municipal_solid_waste"]:
|
||||||
|
# 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"]:
|
||||||
@ -3144,6 +3225,17 @@ def add_industry(n, costs):
|
|||||||
efficiency3=process_co2_per_naphtha,
|
efficiency3=process_co2_per_naphtha,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if options.get("biomass", True) and options["municipal_solid_waste"]:
|
||||||
|
n.madd(
|
||||||
|
"Link",
|
||||||
|
spatial.msw.locations,
|
||||||
|
bus0=spatial.msw.nodes,
|
||||||
|
bus1=non_sequestered_hvc_locations,
|
||||||
|
carrier="municipal solid waste",
|
||||||
|
p_nom_extendable=True,
|
||||||
|
efficiency=1.0,
|
||||||
|
)
|
||||||
|
|
||||||
n.madd(
|
n.madd(
|
||||||
"Link",
|
"Link",
|
||||||
spatial.oil.demand_locations,
|
spatial.oil.demand_locations,
|
||||||
@ -4036,7 +4128,7 @@ if __name__ == "__main__":
|
|||||||
"prepare_sector_network",
|
"prepare_sector_network",
|
||||||
simpl="",
|
simpl="",
|
||||||
opts="",
|
opts="",
|
||||||
clusters="1",
|
clusters="37",
|
||||||
ll="vopt",
|
ll="vopt",
|
||||||
sector_opts="",
|
sector_opts="",
|
||||||
planning_horizons="2050",
|
planning_horizons="2050",
|
||||||
|
Loading…
Reference in New Issue
Block a user