Add fictitious load to account for non-transformed shipping emissions

The share of shipping demand that is transformed is defined now for different years to be used with the myopic code.
The carbon emission from the remaining share is treated as a negative load on the atmospheric carbon dioxide bus, just like aviation and land transport emissions.
This commit is contained in:
martavp 2021-06-16 17:52:42 +02:00
parent 12257eeb3e
commit e2354c18ac
3 changed files with 23 additions and 2 deletions

View File

@ -116,6 +116,14 @@ sector:
'transport_fuel_cell_efficiency': 0.5
'transport_internal_combustion_efficiency': 0.3
'shipping_average_efficiency' : 0.4 #For conversion of fuel oil to propulsion in 2011
'shipping_hydrogen_share': # 1 means all hydrogen FC
2020: 0
2025: 0
2030: 0.05
2035: 0.15
2040: 0.3
2045: 0.6
2050: 1
'time_dep_hp_cop' : True #time dependent heat pump coefficient of performance
'heat_pump_sink_T' : 55. # Celsius, based on DTU / large area radiators; used in build_cop_profiles.py
# conservatively high to cover hot water and space heating in poorly-insulated buildings
@ -381,6 +389,7 @@ plotting:
"solid biomass" : "#DAA520"
"today" : "#D2691E"
"shipping" : "#6495ED"
"shipping oil emissions" : "#6495ED"
"electricity distribution grid" : "#333333"
nice_names:
# OCGT: "Gas"

View File

@ -6,7 +6,7 @@ Future release
==============
* Include new features here.
The share of shipping transformed into hydrogen fuel cell can be now defined for different years in the ``config.yaml`` file. The carbon emission from the remaining share is treated as a negative load on the atmospheric carbon dioxide bus, just like aviation and land transport emissions.
PyPSA-Eur-Sec 0.5.0 (21st May 2021)
===================================

View File

@ -1682,13 +1682,25 @@ def add_industry(network):
p_set=industrial_demand.loc[nodes,"hydrogen"]/8760.)
shipping_hydrogen_share = get_parameter(options['shipping_hydrogen_share'])
network.madd("Load",
nodes,
suffix=" H2 for shipping",
bus=nodes + " H2",
carrier="H2 for shipping",
p_set = nodal_energy_totals.loc[nodes,["total international navigation","total domestic navigation"]].sum(axis=1)*1e6*options['shipping_average_efficiency']/costs.at["fuel cell","efficiency"]/8760.)
p_set = shipping_hydrogen_share*nodal_energy_totals.loc[nodes,["total international navigation","total domestic navigation"]].sum(axis=1)*1e6*options['shipping_average_efficiency']/costs.at["fuel cell","efficiency"]/8760.)
if shipping_hydrogen_share < 1:
shipping_oil_share= 1 - shipping_hydrogen_share
co2 = shipping_oil_share*nodal_energy_totals.loc[nodes,["total international navigation","total domestic navigation"]].sum().sum()*1e6/8760.*costs.at["oil",'CO2 intensity']
network.madd("Load",
["shipping oil emissions"],
bus="co2 atmosphere",
carrier="shipping oil emissions",
p_set=-co2)
if "EU oil" not in network.buses.index:
network.madd("Bus",
["EU oil"],