new config options for demand in aviation + HVC, control of ICE shares in land transport and agriculture
This commit is contained in:
parent
2be8b52a1e
commit
27414ac010
@ -178,19 +178,25 @@ sector:
|
||||
bev_avail_mean: 0.8
|
||||
v2g: true #allows feed-in to grid from EV battery
|
||||
#what is not EV or FCEV is oil-fuelled ICE
|
||||
land_transport_fuel_cell_share: # 1 means all FCEVs
|
||||
land_transport_fuel_cell_share:
|
||||
2020: 0
|
||||
2030: 0.05
|
||||
2040: 0.1
|
||||
2050: 0.15
|
||||
land_transport_electric_share: # 1 means all EVs
|
||||
land_transport_electric_share:
|
||||
2020: 0
|
||||
2030: 0.25
|
||||
2040: 0.6
|
||||
2050: 0.85
|
||||
land_transport_ice_share:
|
||||
2020: 1
|
||||
2030: 0.7
|
||||
2040: 0.3
|
||||
2050: 0
|
||||
transport_fuel_cell_efficiency: 0.5
|
||||
transport_internal_combustion_efficiency: 0.3
|
||||
agriculture_machinery_electric_share: 0
|
||||
agriculture_machinery_oil_share: 1
|
||||
agriculture_machinery_fuel_efficiency: 0.7 # fuel oil per use
|
||||
agriculture_machinery_electric_efficiency: 0.3 # electricity per use
|
||||
MWh_MeOH_per_MWh_H2: 0.8787 # in LHV, source: DECHEMA (2017): Low carbon energy and feedstock for the European chemical industry , pg. 64.
|
||||
@ -202,6 +208,8 @@ sector:
|
||||
shipping_oil_share: 0
|
||||
shipping_methanol_efficiency: 0.46 # 10-15% higher https://www.iea-amf.org/app/webroot/files/file/Annex%20Reports/AMF_Annex_56.pdf, https://users.ugent.be/~lsileghe/documents/extended_abstract.pdf
|
||||
shipping_oil_efficiency: 0.40 #For conversion of fuel oil to propulsion in 2011
|
||||
aviation_demand_factor: 1. # relative aviation demand compared to today
|
||||
HVC_demand_factor: 1. # relative HVC demand compared to today
|
||||
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
|
||||
|
@ -88,6 +88,11 @@ incorporates retrofitting options to hydrogen.
|
||||
|
||||
* Improved network plots including better legends, hydrogen retrofitting network display, and change to EqualEarth projection.
|
||||
|
||||
* New config options for changing energy demands in aviation
|
||||
(``aviation_demand_factor``) and HVC industry (``HVC_demand_factor``), as well
|
||||
as explicit ICE shares for land transport (``land_transport_ice_share``) and
|
||||
agriculture machinery (``agriculture_machinery_oil_share``).
|
||||
|
||||
**Bugfixes**
|
||||
|
||||
* The CO2 sequestration limit implemented as GlobalConstraint (introduced in the previous version)
|
||||
|
@ -1273,13 +1273,15 @@ def add_land_transport(n, costs):
|
||||
|
||||
fuel_cell_share = get(options["land_transport_fuel_cell_share"], investment_year)
|
||||
electric_share = get(options["land_transport_electric_share"], investment_year)
|
||||
ice_share = 1 - fuel_cell_share - electric_share
|
||||
ice_share = get(options["land_transport_ice_share"], investment_year)
|
||||
|
||||
print("FCEV share", fuel_cell_share)
|
||||
print("EV share", electric_share)
|
||||
print("ICEV share", ice_share)
|
||||
total_share = fuel_cell_share + electric_share + ice_share
|
||||
if total_share != 1:
|
||||
logger.warning(f"Total land transport shares sum up to {total_share*100}%, corresponding to increased or decreased demand assumptions.")
|
||||
|
||||
assert ice_share >= 0, "Error, more FCEV and EV share than 1."
|
||||
logger.info(f"FCEV share: {fuel_cell_share*100}%")
|
||||
logger.info(f"EV share: {electric_share*100}%")
|
||||
logger.info(f"ICEV share: {ice_share*100}%")
|
||||
|
||||
nodes = pop_layout.index
|
||||
|
||||
@ -2321,15 +2323,23 @@ def add_industry(n, costs):
|
||||
lifetime=costs.at['Fischer-Tropsch', 'lifetime']
|
||||
)
|
||||
|
||||
demand_factor = options.get("HVC_demand_factor", 1)
|
||||
p_set = demand_factor * industrial_demand.loc[nodes, "naphtha"].sum() / 8760
|
||||
if demand_factor != 1:
|
||||
logger.warning(f"Changing HVC demand by {demand_factor*100-100:+.2f}%.")
|
||||
|
||||
n.madd("Load",
|
||||
["naphtha for industry"],
|
||||
bus=spatial.oil.nodes,
|
||||
carrier="naphtha for industry",
|
||||
p_set=industrial_demand.loc[nodes, "naphtha"].sum() / 8760
|
||||
p_set=p_set
|
||||
)
|
||||
|
||||
demand_factor = options.get("aviation_demand_factor", 1)
|
||||
all_aviation = ["total international aviation", "total domestic aviation"]
|
||||
p_set = pop_weighted_energy_totals.loc[nodes, all_aviation].sum(axis=1).sum() * 1e6 / 8760
|
||||
p_set = demand_factor * pop_weighted_energy_totals.loc[nodes, all_aviation].sum(axis=1).sum() * 1e6 / 8760
|
||||
if demand_factor != 1:
|
||||
logger.warning(f"Changing aviation demand by {demand_factor*100-100:+.2f}%.")
|
||||
|
||||
n.madd("Load",
|
||||
["kerosene for aviation"],
|
||||
@ -2480,8 +2490,11 @@ def add_agriculture(n, costs):
|
||||
# machinery
|
||||
|
||||
electric_share = get(options["agriculture_machinery_electric_share"], investment_year)
|
||||
assert electric_share <= 1.
|
||||
ice_share = 1 - electric_share
|
||||
oil_share = get(options["agriculture_machinery_oil_share"], investment_year)
|
||||
|
||||
total_share = electric_share + oil_share
|
||||
if total_share != 1:
|
||||
logger.warning(f"Total agriculture machinery shares sum up to {total_share*100}%, corresponding to increased or decreased demand assumptions.")
|
||||
|
||||
machinery_nodal_energy = pop_weighted_energy_totals.loc[nodes, "total agriculture machinery"]
|
||||
|
||||
@ -2497,16 +2510,16 @@ def add_agriculture(n, costs):
|
||||
p_set=electric_share / efficiency_gain * machinery_nodal_energy * 1e6 / 8760,
|
||||
)
|
||||
|
||||
if ice_share > 0:
|
||||
if oil_share > 0:
|
||||
|
||||
n.madd("Load",
|
||||
["agriculture machinery oil"],
|
||||
bus=spatial.oil.nodes,
|
||||
carrier="agriculture machinery oil",
|
||||
p_set=ice_share * machinery_nodal_energy.sum() * 1e6 / 8760
|
||||
p_set=oil_share * machinery_nodal_energy.sum() * 1e6 / 8760
|
||||
)
|
||||
|
||||
co2 = ice_share * machinery_nodal_energy.sum() * 1e6 / 8760 * costs.at["oil", 'CO2 intensity']
|
||||
co2 = oil_share * machinery_nodal_energy.sum() * 1e6 / 8760 * costs.at["oil", 'CO2 intensity']
|
||||
|
||||
n.add("Load",
|
||||
"agriculture machinery oil emissions",
|
||||
|
Loading…
Reference in New Issue
Block a user