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
|
bev_avail_mean: 0.8
|
||||||
v2g: true #allows feed-in to grid from EV battery
|
v2g: true #allows feed-in to grid from EV battery
|
||||||
#what is not EV or FCEV is oil-fuelled ICE
|
#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
|
2020: 0
|
||||||
2030: 0.05
|
2030: 0.05
|
||||||
2040: 0.1
|
2040: 0.1
|
||||||
2050: 0.15
|
2050: 0.15
|
||||||
land_transport_electric_share: # 1 means all EVs
|
land_transport_electric_share:
|
||||||
2020: 0
|
2020: 0
|
||||||
2030: 0.25
|
2030: 0.25
|
||||||
2040: 0.6
|
2040: 0.6
|
||||||
2050: 0.85
|
2050: 0.85
|
||||||
|
land_transport_ice_share:
|
||||||
|
2020: 1
|
||||||
|
2030: 0.7
|
||||||
|
2040: 0.3
|
||||||
|
2050: 0
|
||||||
transport_fuel_cell_efficiency: 0.5
|
transport_fuel_cell_efficiency: 0.5
|
||||||
transport_internal_combustion_efficiency: 0.3
|
transport_internal_combustion_efficiency: 0.3
|
||||||
agriculture_machinery_electric_share: 0
|
agriculture_machinery_electric_share: 0
|
||||||
|
agriculture_machinery_oil_share: 1
|
||||||
agriculture_machinery_fuel_efficiency: 0.7 # fuel oil per use
|
agriculture_machinery_fuel_efficiency: 0.7 # fuel oil per use
|
||||||
agriculture_machinery_electric_efficiency: 0.3 # electricity 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.
|
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_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_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
|
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
|
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
|
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
|
# 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.
|
* 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**
|
**Bugfixes**
|
||||||
|
|
||||||
* The CO2 sequestration limit implemented as GlobalConstraint (introduced in the previous version)
|
* 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)
|
fuel_cell_share = get(options["land_transport_fuel_cell_share"], investment_year)
|
||||||
electric_share = get(options["land_transport_electric_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)
|
total_share = fuel_cell_share + electric_share + ice_share
|
||||||
print("EV share", electric_share)
|
if total_share != 1:
|
||||||
print("ICEV share", ice_share)
|
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
|
nodes = pop_layout.index
|
||||||
|
|
||||||
@ -2321,15 +2323,23 @@ def add_industry(n, costs):
|
|||||||
lifetime=costs.at['Fischer-Tropsch', 'lifetime']
|
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",
|
n.madd("Load",
|
||||||
["naphtha for industry"],
|
["naphtha for industry"],
|
||||||
bus=spatial.oil.nodes,
|
bus=spatial.oil.nodes,
|
||||||
carrier="naphtha for industry",
|
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"]
|
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",
|
n.madd("Load",
|
||||||
["kerosene for aviation"],
|
["kerosene for aviation"],
|
||||||
@ -2480,8 +2490,11 @@ def add_agriculture(n, costs):
|
|||||||
# machinery
|
# machinery
|
||||||
|
|
||||||
electric_share = get(options["agriculture_machinery_electric_share"], investment_year)
|
electric_share = get(options["agriculture_machinery_electric_share"], investment_year)
|
||||||
assert electric_share <= 1.
|
oil_share = get(options["agriculture_machinery_oil_share"], investment_year)
|
||||||
ice_share = 1 - electric_share
|
|
||||||
|
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"]
|
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,
|
p_set=electric_share / efficiency_gain * machinery_nodal_energy * 1e6 / 8760,
|
||||||
)
|
)
|
||||||
|
|
||||||
if ice_share > 0:
|
if oil_share > 0:
|
||||||
|
|
||||||
n.madd("Load",
|
n.madd("Load",
|
||||||
["agriculture machinery oil"],
|
["agriculture machinery oil"],
|
||||||
bus=spatial.oil.nodes,
|
bus=spatial.oil.nodes,
|
||||||
carrier="agriculture machinery oil",
|
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",
|
n.add("Load",
|
||||||
"agriculture machinery oil emissions",
|
"agriculture machinery oil emissions",
|
||||||
|
Loading…
Reference in New Issue
Block a user