Rainflow-counting algorithm

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

The rainflow-counting algorithm (also known as the rain-flow counting method) is used in the analysis of fatigue data in order to reduce a spectrum of varying stress into an equivalent set of simple stress reversals. The method successively extracts the smaller interruption cycles from a sequence, which models the material memory effect seen with stress-strain hysterisis cycles.[1] This simplification allows the fatigue life of a component to be determined for each rainflow cycle using either Miner's rule to calculate the fatigue damage, or in a crack growth equation to calculate the crack increment.[2] The algorithm was developed by Tatsuo Endo and M. Matsuishi in 1968.[3]

The rainflow method is compatible with the cycles obtained from examination of the stress-strain hysteresis cycles. When a material is cyclically strained, a plot of stress against strain shows loops forming from the smaller interruption cycles. At the end of the smaller cycle, the material resumes the stress-strain path of the original cycle, as if the interruption had not occurred. The closed loops represent the energy dissipated by the material.[1]

Rainflow counting identifies the closed cycles in a stress-strain curve
Figure 1: Uniform alternating loading
Figure 2: Spectrum loading


The rainflow algorithm was developed by T. Endo and M. Matsuishi (an M.S. student at the time) in 1968 and presented in a Japanese paper. The first english presentation by the authors was in 1974. They communicated the technique to N. E. Dowling and J. Morrow in the U.S. who verified the technique and further popularised its use.[1]

Downing and Socie created one of the more widely referenced and utilized rainflow cycle-counting algorithms in 1982,[4] which was included as one of many cycle-counting algorithms in ASTM E1049-85.[5]

Igor Rychlik gave a mathematical definition for the rainflow counting method,[6] thus enabling closed-form computations from the statistical properties of the load signal.


There are a number of different algorithms for identifying the rainflow cycles within a sequence. They all find the closed cycles and may be left with half closed residual cycles at the end. All methods start with the process of eliminating non turning points from the sequence. A completely closed set of rainflow cycles can be obtained for a repeated load sequence such as used in fatigue testing by starting at the largest peak and continue to the end and wrapping around to the beginning. [7].

Four point method[edit]

This method evaluates each set of 4 adjacent turning points A-B-C-D in turn:[7]

  1. Any pair of points B-C that lies within or equal to A-D is a rainflow cycle.
  2. Remove the pair B-C and re-evaluate the sequence from the beginning.
  3. Continue until no further pairs can be identified.

Pagoda roof method[edit]

This method considers the flow of water down of a series of pagoda roofs. Regions where the water will not flow identify the rainflow cycles which are seen as an interruption to the main cycle.

  1. Reduce the time history to a sequence of (tensile) peaks and (compressive) valleys.
  2. Imagine that the time history is a template for a rigid sheet (pagoda roof).
  3. Turn the sheet clockwise 90° (earliest time to the top).
  4. Each "tensile peak" is imagined as a source of water that "drips" down the pagoda.
  5. Count the number of half-cycles by looking for terminations in the flow occurring when either:
    • It reaches the end of the time history;
    • It merges with a flow that started at an earlier tensile peak; or
    • It flows when an opposite tensile peak has greater magnitude.
  6. Repeat step 5 for compressive valleys.
  7. Assign a magnitude to each half-cycle equal to the stress difference between its start and termination.
  8. Pair up half-cycles of identical magnitude (but opposite sense) to count the number of complete cycles. Typically, there are some residual half-cycles.


Figure 3: Rainflow analysis for tensile peaks
  • The stress history in Figure 2 is reduced to peaks and valleys in Figure 3.
  • Half-cycle (A) starts at tensile peak (1) and terminates opposite a greater tensile stress, peak (2); its magnitude is 16 MPa.
  • Half-cycle (B) starts at tensile peak (4) and terminates where it is interrupted by a flow from an earlier peak, (3); its magnitude is 17 MPa.
  • Half-cycle (C) starts at tensile peak (5) and terminates at the end of the time history.
  • Similar half-cycles are calculated for compressive stresses (Figure 4) and the half-cycles are then matched.
Figure 4: Rainflow analysis for compressive valleys
Stress (MPa) Whole cycles Half cycles
10 2 0
13 0 1
16 0 2
17 0 2
19 1 0
20 0 1
22 0 1
24 0 1
27 0 1


  1. ^ a b c Endo, Tatsuo; Mitsunaga, Koichi; Takahashi, Kiyohum; Kobayashi, Kakuichi; Matsuishi, Masanori (1974). "Damage evaluation of metals for random or varying loading—three aspects of rain flow method". Mechanical Behavior of Materials. 1: 371–380.
  2. ^ Sunder, R.; Seetharam, S. A.; Bhaskaran, T. A. (1984). "Cycle counting for fatigue crack growth analysis". International Journal of Fatigue. 6 (3): 147–156.
  3. ^ Matsuishi, M.; Endo, T. (1968). "Fatigue of metals subjected to varying stress". Japan Society of Mechanical Engineering.
  4. ^ Downing, S.D.; Socie, D.F. (1982). "Simple rainflow counting algorithms". International Journal of Fatigue. 4 (1): 31–40.
  5. ^ Standard practices for cycle counting in fatigue analysis. ASTM E 1049-85. ASTM International. 2005.
  6. ^ Rychlik, I. (1987). "A New Definition of the Rainflow Cycle Counting Method". International Journal of Fatigue. 9 (2): 119–121.
  7. ^ a b "Rainflow Counting". Retrieved 15 July 2019.

External links[edit]