diff --git a/scripts/prepare_sector_network.py b/scripts/prepare_sector_network.py index 71b504391..b6644d6dc 100644 --- a/scripts/prepare_sector_network.py +++ b/scripts/prepare_sector_network.py @@ -539,7 +539,24 @@ def add_carrier_buses(n, carrier, nodes=None): unit = "MWh_LHV" if carrier == "gas" else "MWh_th" # preliminary value for non-gas carriers to avoid zeros - capital_cost = costs.at["gas storage", "fixed"] if carrier == "gas" else 0.02 + if carrier == "gas": + capital_cost = costs.at["gas storage", "fixed"] + elif carrier == "oil": + # based on https://www.engineeringtoolbox.com/fuels-higher-calorific-values-d_169.html + mwh_per_m3 = 44.9 * 724 * 0.278 * 1e-3 # MJ/kg * kg/m3 * kWh/MJ * MWh/kWh + capital_cost = ( + costs.at["General liquid hydrocarbon storage (product)", "fixed"] + / mwh_per_m3 + ) + elif carrier == "methanol": + # based on https://www.engineeringtoolbox.com/fossil-fuels-energy-content-d_1298.html + mwh_per_m3 = 5.54 * 791 * 1e-3 # kWh/kg * kg/m3 * MWh/kWh + capital_cost = ( + costs.at["General liquid hydrocarbon storage (product)", "fixed"] + / mwh_per_m3 + ) + else: + capital_cost = 0.1 n.madd("Bus", nodes, location=location, carrier=carrier, unit=unit) @@ -2999,24 +3016,7 @@ def add_industry(n, costs): # methanol for industry - n.madd( - "Bus", - spatial.methanol.nodes, - carrier="methanol", - location=spatial.methanol.locations, - unit="MWh_LHV", - ) - - n.madd( - "Store", - spatial.methanol.nodes, - suffix=" Store", - bus=spatial.methanol.nodes, - e_nom_extendable=True, - e_cyclic=True, - carrier="methanol", - capital_cost=0.02, - ) + add_carrier_buses(n, "methanol") n.madd( "Bus", @@ -3187,38 +3187,10 @@ def add_industry(n, costs): ], # CO2 intensity methanol based on stoichiometric calculation with 22.7 GJ/t methanol (32 g/mol), CO2 (44 g/mol), 277.78 MWh/TJ = 0.218 t/MWh ) - if "oil" not in n.buses.carrier.unique(): - n.madd( - "Bus", - spatial.oil.nodes, - location=spatial.oil.locations, - carrier="oil", - unit="MWh_LHV", - ) - - if "oil" not in n.stores.carrier.unique(): - # could correct to e.g. 0.001 EUR/kWh * annuity and O&M - n.madd( - "Store", - spatial.oil.nodes, - suffix=" Store", - bus=spatial.oil.nodes, - e_nom_extendable=True, - e_cyclic=True, - carrier="oil", - ) + if shipping_oil_share: - if options.get("fossil_fuels", True) and "oil" not in n.generators.carrier.unique(): - n.madd( - "Generator", - spatial.oil.nodes, - bus=spatial.oil.nodes, - p_nom_extendable=True, - carrier="oil", - marginal_cost=costs.at["oil", "fuel"], - ) + add_carrier_buses(n, "oil") - if shipping_oil_share: p_set_oil = shipping_oil_share * p_set.rename(lambda x: x + " shipping oil") if not options["regional_oil_demand"]: