Several duration battery storage

12 views
Skip to first unread message

DR Mohammed Riadh Habour

unread,
Jul 2, 2024, 5:52:08 AM (5 days ago) Jul 2
to pypsa
 Hi everybody 
I'm working within renewable energy project to support transition toward 100% renewable energy system in Republic of Ireland, for that purpose I'm currently modelling battery storage system for 2030 scenario. I would like to break down the battery Lith-ion storage into three batteries : short, medium and long duration storage, could anyone provide a guidance or relevant model to apply those changing to the next PyPSA functions !
Battery subsystem : 

IES.add("Bus","IE_battery")
IES.add("Store","IE_battery_storage",bus = "IE_battery", e_nom_extendable  = True,
e_cyclic    = True, marginal_cost = Battery_marginal_cost, capital_cost = Battery_capital_cost)

IES.add("Link","IE_battery_charger",bus0= "IE_electricity_system",bus1= "IE_battery",
p_nom_extendable= True, efficiency = Inverter_efficiency,)

IES.add("Link","IE_battery_inverter", bus0 = "IE_battery", bus1= "IE_electricity_system",
p_nom_extendable = True, efficiency= Inverter_efficiency, marginal_cost  = Inverter_marginal_cost, capital_cost = Inverter_capital_cost)

# Add constraint for battery inverter
IE_batt_charger_p  = p_nom_links.loc['IE_battery_charger']  
IE_batt_inverter_p  = p_nom_links.loc['IE_battery_inverter']
IE_batt_inv_eff        = IES.links.loc["IE_battery_charger", "efficiency"]
lpmodel.add_constraints((IE_batt_charger_p - IE_batt_inverter_p * IE_batt_inv_eff) == 0.0, name='IE_BC') 

barry.m...@dcu.ie

unread,
Jul 3, 2024, 5:43:27 AM (4 days ago) Jul 3
to pypsa
Hi Riadh -

One option would be to use multiple pypsa StorageUnit components, rather than the disaggregated Store + Link components. The key characteristic of a StorageUnit is exactly that it has a fixed ratio between energy storage capacity and power capacity, being the (full power) storage duration expressed via max_hours. So one might configure, say, three different StorageUnits, with different durations (and presumably different capital_cost reflecting that). All can still have p_nom_expandable set to allow for capacity expansion under OPF: it's just that both energy and power will scale together for each one (according to the configured max_hours in each case).

Alternatively (and arguably better?) you can retain the general architecture you already suggested (using disaggregated Store and Link components), but just repeated several times to represent multiple "storage systems" using different assumed technologies with different cost structures (and efficiencies etc.). This would allow capacity expansion under OPF to separately optimise energy and power capacities for each technology (and even charge vs discharge power capacities, if these correspond to different physical plant - in which case you would omit your custom constraint forcing these to be equal). Each technology would then end up deployed with the most appropriate (cost optimal) duration. That is, durations would be outputs rather than inputs to your model.  

But to be clear: in your question you mentioned having different durations of a single storage technology (li-ion battery), rather than different technologies with different (optimised) durations; and I'm assuming you are talking about a model with no spatial structure (so a single core bus representing the "grid", with demand, supply and storage systems connected to it). In that case, if the configured parameters for the disaggregated components (Stores and Links) of each supposedly distinct "storage system" are all the same, thenI think that - from the point of view of OPF - there would be no point in having multiple different storage systems, as it would make no difference to costs how capacity is divided among them (i.e., there would be an infinity of cost optimal solutions to how the capacity is distributed). That is, if you want to restrict deployment to a single technology (such as li-ion battery), but structured into several different discrete durations using that one technology, then the first option above (with multiple StorageUnit components rather that multiple storage systems each with disaggregated Stores and Links) is probably what you are looking for. But then, precisely because of this (arbitrary?) structuring into discrete "allowed" storage durations, the solution may be higher cost than would be found with your original single integrated storage system allowing (for the single technology of li-ion battery) separate optimisation of power and energy (i.e. optimisation of the ratio, which is to say, total duration).

Regards - Barry
Reply all
Reply to author
Forward
0 new messages