Electrolyser Modelling
#1
Hello everyone,

Could any one help me with modelling of a water electrolyser (alkaline or PEM) in TIMES model? The efficiency of electrolysers change when it goes from partial load to full load. I want to model that. Is this possible in TIMES? And how?
Reply
#2
Partial load efficiencies can be modelled in TIMES, but in the LP formulation the partial loads are just measured in proportion to the maximum load in each season (or annually, if the timeslice level is SEASON), and so no discrete unit sizes can be assumed.

If that is fine with you, I can try and show an example TIMES specification for modelling such, if you give me some basic characteristics for the technology:

  – on which timeslice level you want the process to operate? (e.g. DAYNITE, SEASON)
  – input(s), output(s) (e.g. sole input=electricity, sole output=hydrogen)
  – what defines the activity? (e.g. activity = hydrogen output, capacity = max. annual hydrogen procuction?)
  – efficiency (full load), efficiency (80% load),..., efficiency (minimum load, xx%)
  – any other parameters you consider relevant for it and wish to see in the example
Reply
#3
It is the same issue with the life time of electrolysis and batteries. Personally, I address this in a simplified manner, by including several processes, of example PEMs, with different model input on annual availability, efficiency and life time. For example, a process with AFA=1 has a lower life time than a process with AFA=0.5.
Reply
#4
@MAA129:  Ok, I got your message with some characteristics.

Please see below an example TIMES specification in a VEDA Subres template:

   

Here, the efficiency parameters for 2015 should be closely following those you stated:
66 % efficiency for 100 %, 60 % efficiency for 80 % load, 55% efficiency for 60 % load, 50 % efficiency for 40 % load.
The efficiency loss (measured by increase in specific consumption) at 40% load would be 32%, in accordance with your values (66%/50% = 1.32), as specified by ACT_LOSPL(2015,FX). NCAP_OLIFE gives the operating life at full load (in years), which may lead to a longer technical life if the device is used at partial loads.
Reply
#5
(09-04-2019, 03:10 AM)Antti-L Wrote: @MAA129:  Ok, I got your message with some characteristics.

Please see below an example TIMES specification in a VEDA Subres template:



Here, the efficiency parameters for 2015 should be closely following those you stated:
66 % efficiency for 100 %, 60 % efficiency for 80 % load, 55% efficiency for 60 % load, 50 % efficiency for 40 % load.
The efficiency loss (measured by increase in specific consumption) at 40% load would be 32%, in accordance with your values (66%/50% = 1.32), as specified by ACT_LOSPL(2015,FX). NCAP_OLIFE gives the operating life at full load (in years), which may lead to a longer technical life if the device is used at partial loads.


Thank you very much @Antti-L. I will try this way of modelling and see the results.
Reply
#6
(11-04-2019, 05:54 PM)MohammedAbiAfthab Wrote:
(09-04-2019, 03:10 AM)Antti-L Wrote: @MAA129:  Ok, I got your message with some characteristics.

Please see below an example TIMES specification in a VEDA Subres template:



Here, the efficiency parameters for 2015 should be closely following those you stated:
66 % efficiency for 100 %, 60 % efficiency for 80 % load, 55% efficiency for 60 % load, 50 % efficiency for 40 % load.
The efficiency loss (measured by increase in specific consumption) at 40% load would be 32%, in accordance with your values (66%/50% = 1.32), as specified by ACT_LOSPL(2015,FX). NCAP_OLIFE gives the operating life at full load (in years), which may lead to a longer technical life if the device is used at partial loads.


Thank you very much @Antti-L. I will try this way of modelling and see the results.

Hi Antti-L,

I checked this modelling using a simple test electroyser. However, my parameter values are a little different what you have modelled. But the ACT_LOSPL and ACT_MINLD are not being considered by the model in the calculation. Despite I have given an input load less than the ACT_MINLD (70 %)  to the electrolyser, the electrolyser is working with full efficiency. Could you have a look at my file? I have uploaded the baseyear template and the LST file. I can see that in the LST file, those two parameters are not appearing in the equations.


Attached Files
.zip   baseyearfilenLSTfile.zip (Size: 72.63 KB / Downloads: 7)
Reply
#7
I did test the example I provided, and it worked well, with partial load efficiencies as defined. I verified the partial load operation from the results.

I am not able to reproduce your issue without the model files. Anyway, your specification looks somewhat odd to me, because your minimum stable operation level is 70%. It means that the technology cannot operate below the 70% load (seasonal shut-downs / start-ups of units are of course possible).
Reply
#8
(02-05-2019, 08:26 PM)Antti-L Wrote: I did test the example I provided, and it worked well, with partial load efficiencies as defined.  I verified the partial load operation from the results.

I am not able to reproduce your issue without the model files.  Anyway, your specification looks somewhat odd to me, because your minimum stable operation level is 70%.  It means that the technology cannot operate below the 70% load (seasonal shut-downs / star-ups of units are of course possible).


I can provide the .dd and .run files (attached). This 70 % load, I have just given for checking. In my case, the capacity of MINELC (input process to electrolyser) was 90 kW which is 60 percent of the electrolyser capacity (150 kW). Therefore, the electrolyser should not work since the minimum stable level defined is 70 %, right?. Just now I ran the model with 0.4 ACT_MINLD. I was expecting a drop in efficiency of electrolyser. But this is not happening.

I wanted the output of electroyser in kg of hydrogen. Considering 54.97 kWh energy requirement for 1 kg hydrogen, I have given a CAP2ACT of 8760/54.97=159.35 and an efficiency of 159.35/8760=0.01819 for the electrolyser.

My concern is why the calculation is not considering the attributes ACT_MINLD and ACT_LOSPL. In my final run, for example, the electricity input in one timeslice is 147,286 kWh and the output is exactly (147,286*0.01819= 2679 kg hydrogen). That means there is no drop in efficiency despite the input capacity of MINELC is 90 kW and the electrolyser capacity is 150 kW. 
I have attached the .dd and .run files. Could you please have a look?


Attached Files
.zip   dd and run files.zip (Size: 3.26 KB / Downloads: 3)
Reply
#9
Ok, thanks for the files.

I ran the model, and I conclude that your model is such that there cannot be any partial load efficiency losses for the process "TESTELSR".  The process is operating at a constant load throughout the year, and so the model can always optimize the online capacity in such a way that there cannot be any partial load efficiency losses. In the results, the online capacity is 88.492, and the constant load is 67.254. The load level is thus 67.254/88.492=76%.

Your minimum stable load is now 40% (ACT_MINLD=0.4). You have not specified ACT_LOSPL(UP), and so the default is 60% of the feasible load range. The efficiency losses thus start at 40% + 0.6*(100%-40%)=76% (if going below that level).  Hence, there are no partial load efficiency losses at 76% or above. The losses would only start at any loads below that load level.  But as the load is constant, such a situation would never occur.

I can only repeat what I told you in my first answer:
Partial load efficiencies can be modelled in TIMES, but in the LP formulation the partial loads are just measured in proportion to the maximum load in each season (or annually, if the timeslice level is SEASON), and so no discrete unit sizes can be assumed.
Reply
#10
(02-05-2019, 09:36 PM)Antti-L Wrote: Ok, thanks for the files.

I ran the model, and I conclude that your model is such that there cannot be any partial load efficiency losses for the process "TESTELSR".  The process is operating at a constant load throughout the year, and so the model can always optimize the online capacity in such a way that there cannot be any partial load efficiency losses. In the results, the online capacity is 88.492, and the constant load is 67.254. The load level is thus 67.254/88.492=76%.

Your minimum stable load is now 40% (ACT_MINLD=0.4). You have not specified ACT_LOSPL(UP), and so the default is 60% of the feasible load range. The efficiency losses thus start at 40% + 0.6*(100%-40%)=76% (if going below that level).  Hence, there are no partial load efficiency losses at 76% or above. The losses would only start at any loads below that load level.  But as the load is constant, such a situation would never occur.

I can only repeat what I told you in my first answer:
Partial load efficiencies can be modelled in TIMES, but in the LP formulation the partial loads are just measured in proportion to the maximum load in each season (or annually, if the timeslice level is SEASON), and so no discrete unit sizes can be assumed.

Thanks for your reply Antti-L. Could you tell me where can I see the online capacity in the results? I could not locate GDX file for this run.
Reply
#11
The online capacities are not reported, because they are not generally of much interest, and it is not a physical quantity, but just the amount of capacity having that operational status, in each timeslice.

If you find the GDX file, you can calculate the online capacity in each timeslice ts by subtracting VAR_UPS(r,v,t,p,s,'N') from the total capacity, for all s above or equal to ts. VAR_UPS(r,v,t,p,s,'N') thus gives the offline capacity in each timeslice.

Anyway, I just tested your example model with the following small modification. I introduced COM_FR for the demand:

Code:
PARAMETER COM_FR /
REG1.2005.DEMCAR.WD 0.36
REG1.2005.DEMCAR.WN 0.14
REG1.2005.DEMCAR.SD 0.36
REG1.2005.DEMCAR.SN 0.14
/;

As expected, now the TESTELSR process had partial load efficiency losses of 32% in the night timeslices, which now had a lower load level, in accordance with the load profile I defined.  So, it worked exactly as expected.

Please also read the documentation if you have not yet read it: TIMES_Dispatching_Documentation.pdf
Reply
#12
A small addition to my previous explanations:

If you have read the documentation, you know that you can use ACT_LOSPL also without ACT_MINLD, although you can see that the documentation recommends to use ACT_MINLD. If you really decide NOT to define any ACT_MINLD, you will get partial efficiency losses even when the load is constant, as long as the load is below the minimum load of full efficiency (defined by ACT_LOSPL(UP)), just like you expected in the first place.

However, you should understand that using ACT_LOSPL without ACT_MINLD would force the total capacity to be on-line throughout the year. In general, that would not make much sense, if the load is quite low in proportion to the total capacity for long periods and would cause efficiency losses, but one would shut down any unneeded capacity for those periods.

Anyway, using your example again, assume that you remove ACT_MINLD and instead define the lower point by ACT_LOSPL:

Code:
PARAMETER ACT_LOSPL /
REG1.2005.TESTELSR.LO 0.4
/;

Then your online capacity will be 150, and the constant load is 67.254. The load level is thus 67.254/150=44.84%.  According to the other parameters (ACT_LOSPL(UP)=0.6, ACT_LOSPL(LO)=0.4 and ACT_LOSPL(FX)=0.32) the efficiency losses start at 76%, and the losses are 32% at 40% load.  Thus, according to the documentation, the losses at 44.84% should be

  LOSS = (0.76−44.84%)/(0.6×(1/0.4-1))×0.32/44.84% = 24.714%

The results from the modified model show that the efficiency losses are indeed 24.714% compared to the full load efficiency.
Reply
#13
Thank you Antti for suggesting changes and sharing me the document to read. In fact I noticed loss in efficiency when I changed the commodity fraction which you had earlier suggested. I will try the suggestion you made in previous post and see the results. Also, I am going through the documentation you shared for a better understanding. Will get back to you If I have more doubts.
Reply
#14
Thank you for the example Antti. We will now change the way of modelling electrolysis in a denser manner than previously.

In this example NCAP_OLIFE = 10, and I assume this is the lifetime of a plant if it runs 100 % of the time. In this example, is the lifetime of the process different if the model is run on 80% or a 40% annual availability? Or is it 25 years as long-as it is not utilized 100%? If the latter is the case, is this possible to model different lifetimes for various part-load operations in one process?
Reply
#15
Yes, if NCAP_OLIFE = 10, the lifetime of a plant is 10 years if it runs at 100% load all the time. If it runs at 50% load all the time, the lifetime would be 20 years (NCAP_TLIFE permitting it), and so on.  NCAP_TLIFE should thus be set sufficiently long.

As described in the documentation, NCAP_OLIFE requires that early retirements are enabled and the process is vintaged. In my example early retirements are activated by setting a dummy interpolation option RCAP_BND('0','N')=0.  When the capacity is retired, no fixed or variable O&M costs will occur any longer.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)