From 8efe43f35f685b58bc20d497da4d68c508b84de8 Mon Sep 17 00:00:00 2001 From: lisazeyen Date: Mon, 4 Mar 2024 08:34:08 +0100 Subject: [PATCH] add temperature correction --- scripts/prepare_sector_network.py | 43 ++++++++++++++++++++++++++----- scripts/solve_network.py | 6 ++--- 2 files changed, 39 insertions(+), 10 deletions(-) diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index ca763d1e..db93ede8 100755 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -1535,8 +1535,13 @@ def add_EVs(n, nodes, avail_profile, dsm_profile, p_set, electric_share, options["EV_upper_degree_factor"], ) + temp_eff = 1 / (1+dd_EV) + profile = p_set/p_set.max() - efficiency = costs.at['Battery electric (passenger cars)', 'efficiency'] + + car_efficiency = costs.at['Battery electric (passenger cars)', 'efficiency'] + + efficiency = car_efficiency * temp_eff n.madd( "Link", @@ -1602,9 +1607,21 @@ def add_EVs(n, nodes, avail_profile, dsm_profile, p_set, electric_share, def add_fuel_cell_cars(n, nodes, p_set, fuel_cell_share, temperature): - efficiency = options["transport_fuel_cell_efficiency"] + # correction factors for vehicle heating + cooling + dd_ICE = transport_degree_factor( + temperature, + options["transport_heating_deadband_lower"], + options["transport_heating_deadband_upper"], + options["ICE_lower_degree_factor"], + options["ICE_upper_degree_factor"], + ) + temp_eff = 1 / (1+dd_ICE) + car_efficiency = options["transport_fuel_cell_efficiency"] + efficiency = car_efficiency * temp_eff + + profile = p_set / p_set.max() - p_nom = fuel_cell_share * p_set / efficiency + p_nom = fuel_cell_share * p_set / car_efficiency n.madd( "Link", @@ -1624,10 +1641,22 @@ def add_fuel_cell_cars(n, nodes, p_set, fuel_cell_share, temperature): def add_ice_cars(n, nodes, p_set, ice_share, temperature): add_carrier_buses(n, "oil") - - ice_efficiency = options["transport_internal_combustion_efficiency"] - p_nom = ice_share * p_set.max() / ice_efficiency + # correction factors for vehicle heating + cooling + dd_ICE = transport_degree_factor( + temperature, + options["transport_heating_deadband_lower"], + options["transport_heating_deadband_upper"], + options["ICE_lower_degree_factor"], + options["ICE_upper_degree_factor"], + ) + temp_eff = 1 / (1+dd_ICE) + + car_efficiency = options["transport_internal_combustion_efficiency"] + + efficiency = car_efficiency * temp_eff + + p_nom = ice_share * p_set.max() / car_efficiency suffix = " land transport ICE" p_nom.rename(lambda x: x + suffix, inplace=True) @@ -1639,7 +1668,7 @@ def add_ice_cars(n, nodes, p_set, ice_share, temperature): bus1=nodes + " land transport", bus2=["co2 atmosphere"], carrier="land transport oil", - efficiency=ice_efficiency, + efficiency=efficiency, efficiency2=costs.at["oil", "CO2 intensity"], p_nom_extendable=False, p_nom=p_nom, diff --git a/scripts/solve_network.py b/scripts/solve_network.py index 7e53e606..9ba38d0b 100644 --- a/scripts/solve_network.py +++ b/scripts/solve_network.py @@ -921,19 +921,19 @@ def solve_network(n, config, solving, **kwargs): return n - +#%% if __name__ == "__main__": if "snakemake" not in globals(): from _helpers import mock_snakemake snakemake = mock_snakemake( "solve_sector_network", - configfiles="../config/test/config.perfect.yaml", + # configfiles="../config/test/config.perfect.yaml", simpl="", opts="", clusters="37", ll="v1.0", - sector_opts="CO2L0-1H-T-H-B-I-A-dist1", + sector_opts="730H-T-H-B-I-A-dist1", planning_horizons="2030", ) configure_logging(snakemake)