Merge remote-tracking branch 'origin/master' into update-district-heating-cops
This commit is contained in:
commit
7bd0c16ddd
@ -355,7 +355,6 @@ biomass:
|
||||
- Secondary Forestry residues - woodchips
|
||||
- Sawdust
|
||||
- Residues from landscape care
|
||||
- Municipal waste
|
||||
not included:
|
||||
- Sugar from sugar beet
|
||||
- Rape seed
|
||||
@ -369,6 +368,8 @@ biomass:
|
||||
biogas:
|
||||
- Manure solid, liquid
|
||||
- Sludge
|
||||
municipal solid waste:
|
||||
- Municipal waste
|
||||
|
||||
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#solar-thermal
|
||||
solar_thermal:
|
||||
@ -615,6 +616,7 @@ sector:
|
||||
biomass_to_liquid: false
|
||||
electrobiofuels: false
|
||||
biosng: false
|
||||
municipal_solid_waste: false
|
||||
limit_max_growth:
|
||||
enable: false
|
||||
# allowing 30% larger than max historic growth
|
||||
@ -642,6 +644,7 @@ sector:
|
||||
max_amount: 1390 # TWh
|
||||
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
|
||||
industry:
|
||||
St_primary_fraction:
|
||||
@ -1038,6 +1041,7 @@ plotting:
|
||||
biogas: '#e3d37d'
|
||||
biomass: '#baa741'
|
||||
solid biomass: '#baa741'
|
||||
municipal solid waste: '#91ba41'
|
||||
solid biomass import: '#d5ca8d'
|
||||
solid biomass transport: '#baa741'
|
||||
solid biomass for industry: '#7a6d26'
|
||||
|
@ -23,7 +23,7 @@ Visby-Nas,Sweden - Nas 57°05′58″N 18°14′27″E / 57.09944°N 18.24
|
||||
SwePol,Poland - Wierzbięcin 54°30′8″N 16°53′28″E / 54.50222°N 16.89111°E,Sweden - Stärnö 56°9′11″N 14°50′29″E / 56.15306°N 14.84139°E,245(245/0),450,600.0,2000,Thyr,Supplier: ABB,[38],16.891111111111112,54.50222222222222,14.841388888888888,56.153055555555554
|
||||
Tjæreborg,Denmark - Tjæreborg/Enge 55°26′52″N 8°35′34″E / 55.44778°N 8.59278°E,Denmark - Tjæreborg/Substation 55°28′07″N 8°33′36″E / 55.46861°N 8.56000°E,4.3(4.3/0),9,7.0,2000,IGBT,Interconnection to wind power generating stations,,8.592777777777778,55.44777777777778,8.56,55.46861111111111
|
||||
Italy-Greece,Greece - Arachthos 39°11′00″N 20°57′48″E / 39.18333°N 20.96333°E,Italy - Galatina 40°9′53″N 18°7′49″E / 40.16472°N 18.13028°E,310(200/110),400,500.0,2001,Thyr,,,20.963333333333335,39.18333333333333,18.130277777777778,40.164722222222224
|
||||
Moyle,UK - Auchencrosh 55°04′10″N 4°58′50″W / 55.06944°N 4.98056°W,UK - N. Ireland- Ballycronan More 54°50′34″N 5°46′11″W / 54.84278°N 5.76972°W,63.5(63.5/0),250,2501.0,2001,Thyr,"Supplier: Siemens- Nexans",[39],-4.980555555555556,55.06944444444444,-5.769722222222223,54.842777777777776
|
||||
Moyle,UK - Auchencrosh 55°04′10″N 4°58′50″W / 55.06944°N 4.98056°W,UK - N. Ireland- Ballycronan More 54°50′34″N 5°46′11″W / 54.84278°N 5.76972°W,63.5(63.5/0),250,500.0,2001,Thyr,"Supplier: Siemens- Nexans",[39],-4.980555555555556,55.06944444444444,-5.769722222222223,54.842777777777776
|
||||
HVDC Troll,Norway - Kollsnes 60°33′01″N 4°50′26″E / 60.55028°N 4.84056°E,Norway - Offshore platform Troll A 60°40′00″N 3°40′00″E / 60.66667°N 3.66667°E,70(70/0),60,80.0,2004,IGBT,Power supply for offshore gas compressor Supplier: ABB,[40],4.8405555555555555,60.55027777777778,3.6666666666666665,60.666666666666664
|
||||
Estlink,Finland - Espoo 60°12′14″N 24°33′06″E / 60.20389°N 24.55167°E,Estonia - Harku 59°23′5″N 24°33′37″E / 59.38472°N 24.56028°E,105(105/0),150,350.0,2006,IGBT,Supplier: ABB,[40],24.551666666666666,60.20388888888889,24.560277777777777,59.38472222222222
|
||||
NorNed,Netherlands - Eemshaven 53°26′4″N 6°51′57″E / 53.43444°N 6.86583°E,Norway - Feda 58°16′58″N 6°51′55″E / 58.28278°N 6.86528°E,580(580/0),450,700.0,2008,Thyr,"Supplier: ABB- Nexans",[40],6.865833333333334,53.434444444444445,6.865277777777778,58.28277777777778
|
||||
|
|
@ -84,7 +84,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)
|
||||
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
|
||||
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)
|
||||
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.
|
||||
@ -151,6 +151,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.
|
||||
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
|
||||
municipal_solid_waste,--,"{true, false}",Add option for municipal solid waste
|
||||
limit_max_growth,,,
|
||||
-- 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)
|
||||
|
|
@ -11,9 +11,12 @@ Upcoming Release
|
||||
================
|
||||
|
||||
* Changed heat pump COP approximation for central heating to be based on `Jensen et al. (2018) <https://backend.orbit.dtu.dk/ws/portalfiles/portal/151965635/MAIN_Final.pdf>`__ and a default forward temperature of 90C. This is more realistic for district heating than the previously used approximation method.
|
||||
|
||||
* 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 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
|
||||
|
||||
|
@ -808,7 +808,7 @@ def voronoi(points, outline, crs=4326):
|
||||
voronoi = gpd.GeoDataFrame(geometry=voronoi)
|
||||
joined = gpd.sjoin_nearest(pts, voronoi, how="right")
|
||||
|
||||
return joined.dissolve(by="Bus").squeeze()
|
||||
return joined.dissolve(by="Bus").reindex(points.index).squeeze()
|
||||
|
||||
|
||||
def build_bus_shapes(n, country_shapes, offshore_shapes, countries):
|
||||
|
@ -60,19 +60,25 @@ def define_spatial(nodes, options):
|
||||
# biomass
|
||||
|
||||
spatial.biomass = SimpleNamespace()
|
||||
spatial.msw = SimpleNamespace()
|
||||
|
||||
if options.get("biomass_spatial", options["biomass_transport"]):
|
||||
spatial.biomass.nodes = nodes + " solid biomass"
|
||||
spatial.biomass.locations = nodes
|
||||
spatial.biomass.industry = nodes + " solid biomass for industry"
|
||||
spatial.biomass.industry_cc = nodes + " solid biomass for industry CC"
|
||||
spatial.msw.nodes = nodes + " municipal solid waste"
|
||||
spatial.msw.locations = nodes
|
||||
else:
|
||||
spatial.biomass.nodes = ["EU solid biomass"]
|
||||
spatial.biomass.locations = ["EU"]
|
||||
spatial.biomass.industry = ["solid biomass for industry"]
|
||||
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.msw.df = pd.DataFrame(vars(spatial.msw), index=nodes)
|
||||
|
||||
# co2
|
||||
|
||||
@ -2252,12 +2258,54 @@ def add_biomass(n, costs):
|
||||
solid_biomass_potentials_spatial = biomass_potentials["solid biomass"].rename(
|
||||
index=lambda x: x + " solid biomass"
|
||||
)
|
||||
msw_biomass_potentials_spatial = biomass_potentials[
|
||||
"municipal solid waste"
|
||||
].rename(index=lambda x: x + " municipal solid waste")
|
||||
else:
|
||||
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", "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(
|
||||
"Bus",
|
||||
spatial.gas.biogas,
|
||||
@ -2413,6 +2461,19 @@ def add_biomass(n, costs):
|
||||
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"]:
|
||||
# add artificial biomass generators at nodes which include transport costs
|
||||
transport_costs = pd.read_csv(
|
||||
@ -2442,6 +2503,26 @@ def add_biomass(n, costs):
|
||||
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
|
||||
urban_central = n.buses.index[n.buses.carrier == "urban central heat"]
|
||||
if not urban_central.empty and options["chp"]:
|
||||
@ -3147,6 +3228,17 @@ def add_industry(n, costs):
|
||||
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(
|
||||
"Link",
|
||||
spatial.oil.demand_locations,
|
||||
@ -4039,7 +4131,7 @@ if __name__ == "__main__":
|
||||
"prepare_sector_network",
|
||||
simpl="",
|
||||
opts="",
|
||||
clusters="1",
|
||||
clusters="37",
|
||||
ll="vopt",
|
||||
sector_opts="",
|
||||
planning_horizons="2050",
|
||||
|
Loading…
Reference in New Issue
Block a user