From f18b7b02cb72de79a82a2f403ba85d1acb1bb531 Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Thu, 3 Dec 2020 10:02:23 +0100 Subject: [PATCH] StorageUnit correct efficiency_dispatch/store (counter-proposal 2) (#202) * fix efficiencies of storage units counter proposal * extra_components: fix roundtrip efficiency * add_electricity: remove misleading roundtrip efficiency for storageunit * add release notes --- data/costs.csv | 2 +- doc/release_notes.rst | 3 +++ scripts/add_electricity.py | 3 --- scripts/add_extra_components.py | 11 +++++++---- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/data/costs.csv b/data/costs.csv index 330cc3bbc..8953eb8a8 100644 --- a/data/costs.csv +++ b/data/costs.csv @@ -114,7 +114,7 @@ DAC,2030,lifetime,30,years,Fasihi DAC,2030,FOM,4,%/year,Fasihi battery inverter,2030,investment,411,USD/kWel,budischak2013 battery inverter,2030,lifetime,20,years,budischak2013 -battery inverter,2030,efficiency,0.81,per unit,budischak2013; Lund and Kempton (2008) http://dx.doi.org/10.1016/j.enpol.2008.06.007 +battery inverter,2030,efficiency,0.9,per unit charge/discharge,budischak2013; Lund and Kempton (2008) http://dx.doi.org/10.1016/j.enpol.2008.06.007 battery inverter,2030,FOM,3,%/year,budischak2013 battery storage,2030,investment,192,USD/kWh,budischak2013 battery storage,2030,lifetime,15,years,budischak2013 diff --git a/doc/release_notes.rst b/doc/release_notes.rst index e5a773c55..7efea8be4 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -42,6 +42,9 @@ Upcoming Release * The mappings for clustered lines and buses produced by the ``simplify_network`` and ``cluster_network`` rules changed from Hierarchical Data Format (.h5) to Comma-Separated Values format (.csv) (`#198 `_) +* Fixed a bug for storage units such that individual store and dispatch efficiencies are correctly taken account of rather than only their round-trip efficiencies. + In the cost database (``data/costs.csv``) the efficiency of battery inverters should be stated as per discharge/charge rather than per roundtrip (`#202 _). + * Parameter corrections for East-Western and Anglo-Scottish interconnectors (`#206 `_) * Modelling hydrogen and battery storage with Store and Link components is now the default, rather than using StorageUnit components with fixed power-to-energy ratio (`#205 `_). diff --git a/scripts/add_electricity.py b/scripts/add_electricity.py index 7a32e6287..936ca1b53 100755 --- a/scripts/add_electricity.py +++ b/scripts/add_electricity.py @@ -166,13 +166,10 @@ def load_costs(Nyears=1., tech_costs=None, config=None, elec_config=None): def costs_for_storage(store, link1, link2=None, max_hours=1.): capital_cost = link1['capital_cost'] + max_hours * store['capital_cost'] - efficiency = link1['efficiency']**0.5 if link2 is not None: capital_cost += link2['capital_cost'] - efficiency *= link2['efficiency']**0.5 return pd.Series(dict(capital_cost=capital_cost, marginal_cost=0., - efficiency=efficiency, co2_emissions=0.)) if elec_config is None: diff --git a/scripts/add_extra_components.py b/scripts/add_extra_components.py index 219c082dd..0b48af2a6 100644 --- a/scripts/add_extra_components.py +++ b/scripts/add_extra_components.py @@ -70,6 +70,9 @@ def attach_storageunits(n, costs): buses_i = n.buses.index + lookup_store = {"H2": "electrolysis", "battery": "battery inverter"} + lookup_dispatch = {"H2": "fuel cell", "battery": "battery inverter"} + for carrier in carriers: n.madd("StorageUnit", buses_i, ' ' + carrier, bus=buses_i, @@ -77,8 +80,8 @@ def attach_storageunits(n, costs): p_nom_extendable=True, capital_cost=costs.at[carrier, 'capital_cost'], marginal_cost=costs.at[carrier, 'marginal_cost'], - efficiency_store=costs.at[carrier, 'efficiency'], - efficiency_dispatch=costs.at[carrier, 'efficiency'], + efficiency_store=costs.at[lookup_store[carrier], 'efficiency'], + efficiency_dispatch=costs.at[lookup_dispatch[carrier], 'efficiency'], max_hours=max_hours[carrier], cyclic_state_of_charge=True) @@ -132,7 +135,7 @@ def attach_stores(n, costs): bus0=buses_i, bus1=b_buses_i, carrier='battery charger', - efficiency=costs.at['battery inverter', 'efficiency']**0.5, + efficiency=costs.at['battery inverter', 'efficiency'], capital_cost=costs.at['battery inverter', 'capital_cost'], p_nom_extendable=True) @@ -140,7 +143,7 @@ def attach_stores(n, costs): bus0=b_buses_i, bus1=buses_i, carrier='battery discharger', - efficiency=costs.at['battery inverter','efficiency']**0.5, + efficiency=costs.at['battery inverter','efficiency'], capital_cost=costs.at['battery inverter', 'capital_cost'], p_nom_extendable=True)