Rainflow 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.
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.
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.
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:
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).
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).
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.
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’.
Discretization
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.
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:
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.
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.
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.
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.
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:
A 'From-To' rainflow matrix has three dimensions (Figure 11):
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.
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.
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.
Conclusion
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:
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 +.
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
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,
Y.Shimada
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:
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
Holger
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
Holger