Rainflow Counting

Siemens Valued Contributor Siemens Valued Contributor
Siemens Valued Contributor

*** More information?  Free on-demand webinar: How to perform and speed up durability load data anal...


icon.pngRainflow Counting


‘Rainflow Counting’ is a method to determine the number of fatigue cycles present in a load-time history. A fatigue cycle is the loading and unloading of a part as shown in Figure 1.  With enough repeated cycles, a part will weaken and eventually fail.

fatigue_cycle.pngFigure 1: A load-time history with one fatigue cycle highlighted

It is easy to calculate the fatigue damage for a part subjected to a cyclical load of constant amplitude using the SN-Curve of the material and Miner’s Rule. However, in a real world load-time history, the number of cycles and their respective amplitudes is not easily determined as seen in Figure 2.



EasyHard.pngFigure 2: Top – Constant amplitude load-time history: number of cycles and their amplitude are easily determined, Bottom – Measured load-time history: number of cycles and amplitude are difficult to determine

In 1967, Tatsuo Endo, a visiting engineering professor from Japan at the University of Illinois, proposed a method called ‘Rainflow Counting’ to breakdown any load-time history into its constituent fatigue cycles.


A load-time history typically consists of force versus time, or strain versus time. If doing stress life, the force or strain time histories are converted into stress time histories.  Rainflow counting is then used to extract the number of cycles, and their respective range and mean.


Real life loading is not necessarily cyclic and often appears to be random or transient in nature. Using rainflow counting, the fatigue damage of one load history could be compared to the fatigue damage of another load history as shown in Figure 3.


 TwoLoadComparison.pngFigure 3: Using the time domain data to compare fatigue damage is not possible. Rainflow counting is used to make comparisons of fatigue damage possible.

Not only does ‘Rainflow Counting’ make it possible to determine the fatigue damage of a given load-time history, but it also reduces the time history to the minimal amount of data required to preserve the damage information.  By reducing the time data size, the calculation speed for a durability fatigue analysis is decreased, and the amount of computer storage required is lowered.


In 1986, the first ASTM Rainflow Counting standard, E1049, was published.


Rainflow Counting Method


‘Rainflow Counting’ consists of four main steps:


  1. Hysteresis Filtering
  2. Peak-Valley Filtering
  3. Discretization
  4. Four Point Counting Method


These steps are fully documented in standards such as ASTM E1049 “Standard Practices for Cycle Counting in Fatigue Analysis”.


Hysteresis Filtering


The first step in reducing the load-time history is to remove very small cycles from the load-time history that contribute a negligible amount of damage (Figure 4). 


 Hysteresis.pngFigure 4: Top – Original load-time history, Bottom – Original load-time history with small cycles removed

This is done by defining a gate of a specific amplitude.  Any cycle that has an amplitude smaller than the gate is removed from the load-time history.  This is done by projecting the gate from left to right from each turning point in the time series.  If a turning point is smaller than the gate, it is eliminated from the time history (Figure 5).


 HysteresisFiltering.pngFigure 5: Removal of cycles smaller than amplitude of hysteresis gate from load history

Usually a percentage of the bin size (see rainflow counting discretization step #3) is used to define the gate size.


If a hysteresis gate of zero is used, this step is skipped.


Peak-Valley Filtering


The goal of Peak-Valley filtering is to only keep data points which are reversals in direction/slope as shown in Figure 6.


 PeakValley.pngFigure 6: Peak-Valley Filtering keeps only data points (black dots) which represent reversals in slope

Within a cycle, only the maximum and minimum value of the cycle are important for fatigue life calculations.  Any intermediate data points between the maximum and minimum values of a given cycle can be removed as they are not relevant for the fatigue calculation.


The result is sometimes called a ‘turning point sequence’.




Next, the Y axis is divided into discrete ‘bins’.  Each ‘bin’ is a fixed amplitude range that the data is mapped into as shown in Figure 7. In Figure 7, there are six discrete bins used to divide the amplitude range. In practice, many more bins are used.


The measured data points are mapped to the centers of their bin, which enables counting procedures.


For example, if a signal with a range of 128 was divided into 64 bins, each bin would have a range of 2.


 Binning.pngFigure 7: Data points (black dots) amplitudes are adjusted to the center of the bins. Data points whose amplitude is affected by binning are circled in purple.

The amplitude of the data samples are altered slightly by centering them in their respective bins. It is important to use a reasonably sufficient amount of bins for the analysis, so the amplitudes are not altered greatly.  Depending on the slope of the SN-Curve, a 15% change in load can result in a factor of two change in fatigue life


According to most standards, the Y-axis scale is typically divided into a minimum of 64 bins. In most modern durability software, it is possible to use more bins in the rainflow count. Increased accuracy is achieved by using more bins, but the file size is larger and computational times are longer.


Four Point Counting Method


With hysteresis filtering, peak-valley filtering and discretization all finished, the cycles can be counted.  When counting cycles for fatigue life calculations, not only is the amplitude and number of cycles important, but so is the mean of the cycle as well. Any counting method needs to preserve the mean.


The four point counting method meets these aforementioned criteria.  In the method, the following steps are performed:


  1. Chose four consecutive stress points S1, S2, S3, S4
  2. Define inner Stress |S2 -S3|
  3. Define outer Stress |S1 -S4|
  4. If inner stress range <= to outer stress range and the points comprising the inner stress range are bounded by the outer, a cycle is counted.
  5. If inner stress range >= to outer stress range and the points comprising the inner stress range are not bounded by the outer, a cycle is not counted

Evaluating the first four points in Figure 7, the range between S2 and S3 is less than the range between points S1 and S4.  The inner stress, where S2=5 and S3=3, has a range of 2. The outer stress where S1=2 and S4=6 has a range of 4. The data points S2 and S3 are within the data points S1 and S4.  A cycle is counted as shown in Figure 8.


 FourPointCompleteCycle.pngFigure 8: The first four points (purple) in the time history are evaluated. In this case, a complete cycle is identified

When a cycle has been identified, it is stored in a rainflow matrix.  The rainflow matrix is an n x n matrix of data where n equals the number of bins. Each element in the matrix contains the number of cycles found in the time history corresponding to the ‘From’ and ‘To’ amplitudes.


The inner two stress points (S2 and S3) are now removed from the load-time history. The first four points in the remaining time history (new S1, S2, S3, S4 values) are evaluated again.  This time, there is not a complete cycle within the four points connected by purple line as shown in Figure 9.


 FourPointIncompleteCycle.pngFigure 9: From the remaining time history, the first four points (connected by purple line) are evaluated. The inner two values (S2 and S3) are not bounded by the outer values (S1 and S4). Therefore, there is not a complete cycle.

The inner stress, where S2=6 and S3=2, has a range of 4. The outer stress, where S1=2 and S4=4, has a range of 2. The points S2 and S3 are not within the points S1 and S4. 

In this case the cycle is not complete.  The next four points in the time series will be evaluated as shown in Figure 9 by the connecting light purple line.


 FourPointCompleteCycle2.pngFigure 9: Because the first four points did not yield a complete cycle, the next four points are evaluated. Now there is a complete cycle.

For the four points in Figure 9, there is a complete cycle.  Like the first cycle identified, it also has a range of 2.  In this case, however, the cycle goes from 2 to 4, and not from 5 to 3.  These two cycles have a different mean and different direction, which is preserved in the rainflow matrix.


The process is continued until all identifiable cycles are removed and counted from the time history as shown in Figure 10.

 RainflowMatrix_Residue.pngFigure 10: Rainflow matrix and Residue

Inevitably, there are some cycles that do not close (i.e., are not complete).  These unclosed cycles are preserved, and called the ‘residue’ of the rainflow matrix. 


The residue contains the largest unclosed cycles present in the time history.  If the time history was for one lap of a durability proving ground, to calculate the damage for 1000 laps, every element of the matrix would be multiplied by 1000.  The residue would be appended 1000 times over and the unclosed cycles then counted and added to the rainflow matrix.


Rainflow Matrix


The ‘Rainflow Matrix’ and ‘Residue’ are the end results of the rainflow counting process. They contain the following information:


  1. Cycle amplitude – Across the top of the display is the “To” stress level for the cycle. Across the side is the “From” stress level for the cycles.  The range or amplitude of the cycle is |To-From|.
  2. Cycle mean – The mean of the cycle is (To+From)/2. The mean stress determines if the cycle is compressive or tensile, which affects the accumulated damage.
  3. Number of cycles – The number of the cycles is indicated, sometime with colors dictating specific number of cycle thresholds

A 'From-To' rainflow matrix has three dimensions (Figure 11):


  1. From – Stress level bin that the cycle originates from
  2. To – Stress level bin that the cycle finishes at
  3. Number – Number of times a particular From-To cycle occurs


FromTo.pngFigure 11: Rainflow matrix has from and to, color indicates number of cycles

In the From-To representation (Figure 12) of the rainflow matrix, cycles of compression are located in the upper left, while tensile cycles are located in lower right. The mean of the cycle effects the fatigue life of the part.


Compressive cycles have a negative mean, which pushes the part together despite the cycling of the material.  These compressive cycles will not reduce the fatigue life as much as similar amplitude tensile cycles.  In a tensile cycle there is a positive mean, which creates forces that try to pull apart the object in addition to cycling. The diagonal from upper left to lower right is very small amplitude cycles, e.g., with a range close to 0.



matrix.pngFigure 12: Rainflow Matrix indicating Compressive versus Tensile cycles, Zero Mean cycles, and Zero Range cycles

The most damaging cycles are located in the upper right and lower left due to their very large range.  These are the largest amplitude cycles and create the most damage (Figure 13). It is typical that the highest number of cycles fall along the diagonal of the rainflow matrix close to the zero range line.


When looking to accelerate a fatigue test or analysis, these low damage, but high occurance, cycles are removed from the test recreation or analysis to save time in performing the failure analysis. 



damage.pngFigure 13: Rainflow Matrix with most damaging and least damaging cycles indicated

Using Miner’s Rule and a SN-Curve of the material, the rainflow matrix cycles can then be used to calculate the fatigue damage.  This enables predicting when fatigue failures would occur (when damage = 1) and compare different complex time histories and understand the damage associated with each.





The 'Rainflow Counting' method extracts fatigue cycles from any load-time history.  The result is a rainflow matrix and residue. The following information is preserved from the time history:


  • Number of cycles
  • Range of cycles
  • Mean of cycles


This cycle information is in a much more compact and manageable form than the original time history data. Only the sequence, or order, in which the cycles are applied over time are not kept.


Questions? Email john.hiatt@siemens.com or download the Siemens PLM Testlab Fatigue and Load Data Analysis solution brief.


More Fatigue and Durability links: 


Very Informative and very Simple to understand.  Cycle mean – The mean of the cycle is (To-From)/2. Is there typo instead of -, it should be +.


Siemens Valued Contributor Siemens Valued Contributor
Siemens Valued Contributor

Thank you for taking the time to read the article.  The cycle mean equation is now corrected, with a "+" instead of a "-".


Hi @JohnHiatt,



Great article! We are currently busy with the implementation of Rainflow Counting. Your article was very helpful.


One question: Hysteresis Filtering After should not look like this?




BR, Yarko

Siemens Dreamer Siemens Dreamer
Siemens Dreamer

Hello @JohnHiatt,

Good information for Rainflow Counting method.

I have one question.


Regarding Figure12, Compression and Tention relation is incorrect, isn't it?

90 Clockwised, I think it is correct.




Best Regards,


Siemens Valued Contributor Siemens Valued Contributor
Siemens Valued Contributor

Dear @yshimad ,


the image in the article shows the tension and compression correctly. However, I think I understand where your remark comes from.


Cycles are in tension mode if their mean is >= 0. 

Cycles are in compressive mode if their mean is < 0.


Now, the axis on the image of the Rainflow matrix cannot be read clearly. We show Rainflow matrices like this:


Note: the y-axis has the maximum of 100 at the bottom and the minimum of -100 at the top.

The main diagonal which is range=0 goes from top/left to bottom/right.


This is just a convention and I really cannot explain why we choose to do it this way. We just get used to it.


There are other tools (like Altair eFatigue where I got this Rainflow example from) that do it differently, meaning the y-axis has maximum on top and minimum at the bottom:

RFM alternative.png


Now, here the main diagonal with range=0 goes from top/right to bottom/left.


In this diagram, your tension/compression remark would be correct.


In our diagram, our tension/compression notation is correct.


I hope that explains the difference.


Best regards



Siemens Valued Contributor Siemens Valued Contributor
Siemens Valued Contributor

Dear @Yarko_ ,


I agree with your comment. If on the way up we keep the intermediate point, we also should keep it on the way down. So, what you state is correct.


To be even more precise, the step "Hysteresis Filter" does not yet remove sample points, like the visualization seems to indicate. The result of the Hysteresis Filter is the movement of the Hysteresis gate. The movement starts to go up, then continues on a plateau and then further goes up. The same on the way down:



Having said that, all three explanations will lead to the same final result, since the multiple monotonous sampling points in the same direction are removed in the next step "Peak-Valley Filtering".


Best regards