Rainflow Counting for Degradation

4 posts / 0 new
Last post
SusanSun17's picture
Rainflow Counting for Degradation

Hi, I am interested in techno-economic battery models and SAM seems to be one of the few that includes battery degradation (to my knowledge??). I have been reading Nicholas DiOrio's 2015 report and I would like to know more details about the lifetime model. From what I understand, rainflow counting gives you a kind of running histogram of how many cycles have occurred at each range (or amplitude) bin - it sounds to me like at every cycle, you have the running total of cycles elapsed and you re-calculate the average DoD across all of them, and use those two figures to lookup your capacity fade % - is that right? Does that mean a cycling history that, say, always discharges to 50% every single time for N cycles will experience the same capacity fade as one where you discharge to 90% for N/2 of the cycles and 10% for the other N/2? Is that a valid assumption? The 2015 document says no lifetime testing had been done to verify the model (I do get that it's time-consuming) but has any been done (or started?) since?

Thanks very much,

PS. Sorry if tagged wrong - there doesn't seem to be a tag for 'batteries' or 'technical theory'?

ndiorio's picture

Hi Susan,

Thanks for the question. SAM includes cycle-life degradation (though not calendar life degradation, which is also very important). The way it works is that at every time step, the battery depth-of-discharge (DOD) is updated. This updated DOD goes to the rainflow counting algorithm, and updates the running list of events that have occurred, but not resulted in a cycle. So, for example, the lifetime model may have the following depths of discharge: [20, 30, 50, 70]. As you can see, the the depth of discharge is increases (battery is being discharged over four time-steps), but no cycle has elapsed yet. When the next time step occurs, let's say the battery charges back up to 20 DOD, so we have [20, 30, 50, 70, 20]. At this point, the rainflow counting algorithm should detect a cycle. For this simple case it should calculate the cycle depth-of-discharge as 50% (for more complex, partial cycles, it gets complicated). The lifetime model then increments the number of cycles that have occurred on the battery and updates the average depth-of-discharge of the battery by incorporating the latest depth-of-discharge into the existing average. Finally, using the total cycle number and average depth-of-discharge, a bilinear interpolation is done to find what the effective capacity of the battery should be, and this "damage" is applied to the battery capacity.

So, the model works essentially as you described. It is an excellent question as to whether this correctly models the situation of very deep cycles combined with very shallow cycles. I think it's probably not a terrible assumption, but is not quite correct.

At NREL, we do have a group that has done much more comprehensive battery lifetime modeling. In the future, we'd like to include more detailed battery lifetime models in SAM that have been developed from experimental battery lifetime testing. This model was developed as a way for people that have cycling information to try and incorporate it into their simulation and at least get a first level of understanding as to how cycling affects the battery and subsequently the economics of the project.

Just let me know if you have any additional questions.

Best regards,
Nick DiOrio

SusanSun17's picture

Hi Nick,

Thanks so much for explaining that! So, let me see if I've understood - if you have a DoD sequence [20,30,40,30,50,40,60,0,20,40], the rainflow counting finds:
1/2 cycle 40% (20 to 60)
2 cycles 10% (40-30-40, 50-40-50)
1/2 cycle 60% (60 to 0),
the running total of cycles goes
the running average of DoD goes

Btw, I'm well excited about this open-source SAM being released in autumn! At the moment I'm trying to make a matlab version of SAM (actually, just the battery part) - though even when you release your official one, I might still hang on to mine but use the official one to check it, just because I find matlab easier to edit. Slightly random question - how much impact does the current US administration have on your work, since your funding is from the DoE? (When should this naive European start worrying, is what I mean!)

ndiorio's picture

Hi Susan,

I'll have to go through and verify the example you've given, the algorithm is rather complicated. It's based on this paper:

I'll try and go through in the next day or two and run your example through.

Great, we're excited to open source the code! We currently support running SAM through MATLAB via the SDK if you are interested in that approach.

As you note, DOE sponsors a large amount of our work though we do work with many different partners. We are actively engaged and hopeful that we will continue to have the means to continue developing SAM far into the future!


Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer