Merge pull request #92 from nworbmot/master

Change name of liquid hydrocarbon bus from Fischer-Tropsch to oil
This commit is contained in:
Tom Brown 2021-01-29 16:43:11 +01:00 committed by GitHub
commit 99ad066469
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 44 additions and 38 deletions

View File

@ -102,7 +102,7 @@ sector:
'bev_dsm' : True #turns on EV battery 'bev_dsm' : True #turns on EV battery
'bev_availability' : 0.5 #How many cars do smart charging 'bev_availability' : 0.5 #How many cars do smart charging
'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 fossil-fuelled #what is not EV or FCEV is oil-fuelled ICE
'land_transport_fuel_cell_share': # 1 means all FCEVs 'land_transport_fuel_cell_share': # 1 means all FCEVs
2020: 0 2020: 0
2030: 0.05 2030: 0.05
@ -334,7 +334,7 @@ plotting:
"Fischer-Tropsch" : "#44DD33" "Fischer-Tropsch" : "#44DD33"
"kerosene for aviation": "#44BB11" "kerosene for aviation": "#44BB11"
"naphtha for industry" : "#44FF55" "naphtha for industry" : "#44FF55"
"land transport fossil" : "#44DD33" "land transport oil" : "#44DD33"
"water tanks" : "#BBBBBB" "water tanks" : "#BBBBBB"
"hot water storage" : "#BBBBBB" "hot water storage" : "#BBBBBB"
"hot water charging" : "#BBBBBB" "hot water charging" : "#BBBBBB"
@ -369,6 +369,7 @@ plotting:
"process emissions to stored" : "#444444" "process emissions to stored" : "#444444"
"process emissions to atmosphere" : "#888888" "process emissions to atmosphere" : "#888888"
"process emissions" : "#222222" "process emissions" : "#222222"
"oil emissions" : "#666666"
"land transport fuel cell" : "#AAAAAA" "land transport fuel cell" : "#AAAAAA"
"biogas" : "#800000" "biogas" : "#800000"
"solid biomass" : "#DAA520" "solid biomass" : "#DAA520"

View File

@ -4,9 +4,11 @@ Release Notes
Future release Future release
=================== ===================
* For the myopic option, a carbon budget and a type of decay (exponential or beta) can be selected in the config file to distribute the budget across the planning_horizons.
* Added an option to alter the capital cost or maximum capacity of carriers by a factor via ``carrier+factor`` in the ``{opts}`` wildcard. This can be useful for exploring uncertain cost parameters. Example: ``solar+c0.5`` reduces the capital cost of solar to 50\% of original values. Similarly ``solar+p3`` multiplies the p_nom_max by 3. * For the myopic investment option, a carbon budget and a type of decay (exponential or beta) can be selected in the ``config.yaml`` file to distribute the budget across the ``planning_horizons``. For example, ``cb40ex0`` in the ``{sector_opts}`` wildcard will distribute a carbon budget of 40 GtCO2 following an exponential decay with initial growth rate 0.
* Bugfix: Fix reading in of ``pypsa-eur/resources/powerplants.csv`` to PyPSA-Eur Version 0.3.0 (use ``DateIn`` instead of old ``YearDecommissioned``). * Added an option to alter the capital cost or maximum capacity of carriers by a factor via ``carrier+factor`` in the ``{sector_opts}`` wildcard. This can be useful for exploring uncertain cost parameters. Example: ``solar+c0.5`` reduces the ``capital_cost`` of solar to 50\% of original values. Similarly ``solar+p3`` multiplies the ``p_nom_max`` by 3.
* Rename the bus for European liquid hydrocarbons from ``Fischer-Tropsch`` to ``EU oil``, since it can be supplied not just with the Fischer-Tropsch process, but also with fossil oil.
* Bugfix: Fix reading in of ``pypsa-eur/resources/powerplants.csv`` to PyPSA-Eur Version 0.3.0 (use column attribute name ``DateIn`` instead of old ``YearDecommissioned``).
* Bugfix: Make sure that ``Store`` components (battery and H2) are also removed from PyPSA-Eur, so they can be added later by PyPSA-Eur-Sec. * Bugfix: Make sure that ``Store`` components (battery and H2) are also removed from PyPSA-Eur, so they can be added later by PyPSA-Eur-Sec.

View File

@ -676,7 +676,7 @@ def add_generation(network):
capital_cost=0.) #could correct to e.g. 0.2 EUR/kWh * annuity and O&M capital_cost=0.) #could correct to e.g. 0.2 EUR/kWh * annuity and O&M
network.add("Generator", network.add("Generator",
"EU fossil " + carrier, "EU " + carrier,
bus="EU " + carrier, bus="EU " + carrier,
p_nom_extendable=True, p_nom_extendable=True,
carrier=carrier, carrier=carrier,
@ -1056,14 +1056,14 @@ def add_land_transport(network):
fuel_cell_share = get_parameter(options["land_transport_fuel_cell_share"]) fuel_cell_share = get_parameter(options["land_transport_fuel_cell_share"])
electric_share = get_parameter(options["land_transport_electric_share"]) electric_share = get_parameter(options["land_transport_electric_share"])
fossil_share = 1 - fuel_cell_share - electric_share ice_share = 1 - fuel_cell_share - electric_share
print("shares of FCEV, EV and ICEV are", print("shares of FCEV, EV and ICEV are",
fuel_cell_share, fuel_cell_share,
electric_share, electric_share,
fossil_share) ice_share)
if fossil_share < 0: if ice_share < 0:
print("Error, more FCEV and EV share than 1.") print("Error, more FCEV and EV share than 1.")
sys.exit() sys.exit()
@ -1141,14 +1141,14 @@ def add_land_transport(network):
p_set=fuel_cell_share/options['transport_fuel_cell_efficiency']*transport[nodes]) p_set=fuel_cell_share/options['transport_fuel_cell_efficiency']*transport[nodes])
if fossil_share > 0: if ice_share > 0:
network.madd("Load", network.madd("Load",
nodes, nodes,
suffix=" land transport fossil", suffix=" land transport oil",
bus="Fischer-Tropsch", bus="EU oil",
carrier="land transport fossil", carrier="land transport oil",
p_set=fossil_share/options['transport_internal_combustion_efficiency']*transport[nodes]) p_set=ice_share/options['transport_internal_combustion_efficiency']*transport[nodes])
@ -1664,23 +1664,26 @@ def add_industry(network):
carrier="H2 for shipping", 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 = 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 "EU oil" not in network.buses.index:
network.madd("Bus", network.madd("Bus",
["Fischer-Tropsch"], ["EU oil"],
location="EU", location="EU",
carrier="Fischer-Tropsch") carrier="oil")
#use madd to get carrier inserted #use madd to get carrier inserted
if "EU oil Store" not in network.stores.index:
network.madd("Store", network.madd("Store",
["Fischer-Tropsch Store"], ["EU oil Store"],
bus="Fischer-Tropsch", bus="EU oil",
e_nom_extendable=True, e_nom_extendable=True,
e_cyclic=True, e_cyclic=True,
carrier="Fischer-Tropsch", carrier="oil",
capital_cost=0.) #could correct to e.g. 0.001 EUR/kWh * annuity and O&M capital_cost=0.) #could correct to e.g. 0.001 EUR/kWh * annuity and O&M
if "EU oil" not in network.generators.index:
network.add("Generator", network.add("Generator",
"fossil oil", "EU oil",
bus="Fischer-Tropsch", bus="EU oil",
p_nom_extendable=True, p_nom_extendable=True,
carrier="oil", carrier="oil",
capital_cost=0., capital_cost=0.,
@ -1694,7 +1697,7 @@ def add_industry(network):
network.madd("Link", network.madd("Link",
nodes_heat[name] + " " + name + " oil boiler", nodes_heat[name] + " " + name + " oil boiler",
p_nom_extendable=True, p_nom_extendable=True,
bus0=["Fischer-Tropsch"] * len(nodes_heat[name]), bus0="EU oil",
bus1=nodes_heat[name] + " " + name + " heat", bus1=nodes_heat[name] + " " + name + " heat",
bus2="co2 atmosphere", bus2="co2 atmosphere",
carrier=name + " oil boiler", carrier=name + " oil boiler",
@ -1707,7 +1710,7 @@ def add_industry(network):
network.madd("Link", network.madd("Link",
nodes + " Fischer-Tropsch", nodes + " Fischer-Tropsch",
bus0=nodes + " H2", bus0=nodes + " H2",
bus1="Fischer-Tropsch", bus1="EU oil",
bus2="co2 stored", bus2="co2 stored",
carrier="Fischer-Tropsch", carrier="Fischer-Tropsch",
efficiency=costs.at["Fischer-Tropsch",'efficiency'], efficiency=costs.at["Fischer-Tropsch",'efficiency'],
@ -1718,13 +1721,13 @@ def add_industry(network):
network.madd("Load", network.madd("Load",
["naphtha for industry"], ["naphtha for industry"],
bus="Fischer-Tropsch", bus="EU oil",
carrier="naphtha for industry", carrier="naphtha for industry",
p_set = industrial_demand.loc[nodes,"naphtha"].sum()/8760.) p_set = industrial_demand.loc[nodes,"naphtha"].sum()/8760.)
network.madd("Load", network.madd("Load",
["kerosene for aviation"], ["kerosene for aviation"],
bus="Fischer-Tropsch", bus="EU oil",
carrier="kerosene for aviation", carrier="kerosene for aviation",
p_set = nodal_energy_totals.loc[nodes,["total international aviation","total domestic aviation"]].sum(axis=1).sum()*1e6/8760.) p_set = nodal_energy_totals.loc[nodes,["total international aviation","total domestic aviation"]].sum(axis=1).sum()*1e6/8760.)
@ -1734,9 +1737,9 @@ def add_industry(network):
co2 = network.loads.loc[["naphtha for industry","kerosene for aviation"],"p_set"].sum()*costs.at["oil",'CO2 intensity'] - industrial_demand.loc[nodes,"process emission from feedstock"].sum()/8760. co2 = network.loads.loc[["naphtha for industry","kerosene for aviation"],"p_set"].sum()*costs.at["oil",'CO2 intensity'] - industrial_demand.loc[nodes,"process emission from feedstock"].sum()/8760.
network.madd("Load", network.madd("Load",
["Fischer-Tropsch emissions"], ["oil emissions"],
bus="co2 atmosphere", bus="co2 atmosphere",
carrier="Fischer-Tropsch emissions", carrier="oil emissions",
p_set=-co2) p_set=-co2)
network.madd("Load", network.madd("Load",