Rainflow counts for fatigue analysis
c = rainflow(x)
c = rainflow(x,fs)
c = rainflow(x,t)
c = rainflow(xt)
c = rainflow(___,'ext')
[c,rm,rmr,rmm] = rainflow(___)
[c,rm,rmr,rmm,idx] = rainflow(___)
rainflow(___)
returns cycle counts for the load time history, c
= rainflow(x
)x
,
according to the ASTM E 1049 standard. See Algorithms for more
information.
rainflow(___)
with no output arguments plots
load reversals and a rainflow matrix histogram in the current figure.
Fatigue analysis studies how damage accumulates in an object subjected to cyclical changes in stress. The number of cycles necessary to break the object depends on the cycle amplitude. Broadband input excitation contains cycles of diverse amplitude, and the presence of hysteresis in the object has the effect of nesting some cycles within others, either completely or partially. Rainflow counting estimates the number of load change cycles as a function of cycle amplitude.
Initially, rainflow
turns the load history into a sequence of
reversals. Reversals are the local minima and maxima where the
load changes sign. The function counts cycles by considering a moving reference point of
the sequence, Z, and a moving ordered threepoint
subset with these characteristics:
The first and second points are collectively called Y.
The second and third points are collectively called X.
In both X and Y, the points are sorted from earlier to later in time, but are not necessarily consecutive in the reversal sequence.
The range of X, denoted by r(X), is the absolute value of the difference between the amplitude of the first point and the amplitude of the second point. The definition of r(Y) is analogous.
The rainflow
algorithm is as follows:
At the end, the function collects the different cycles and halfcycles and tabulates their ranges, their means, and the points at which they start and end. This information can then be used to produce a histogram of cycles.
Consider the following reversal sequence:
Step  Z  Reversals  Three Reversals?  Y  r(Y)  X  r(X)  r(X) < r(Y)?  Z in Y?  Actions 

1  A  A, B, C  Yes  AB  3  BC  4  No  Yes 

2  B  B, C  No  —  —  —  —  —  —  Read D. 
3  B  B, C, D  Yes  BC  4  CD  8  No  Yes 

4  C  C, D  No  —  —  —  —  —  —  Read E. 
5  C  C, D, E  Yes  CD  8  DE  6  Yes  —  Read F. 
6  C  C, D, E, F  Yes  DE  6  EF  4  Yes  —  Read G. 
7  C  C, D, E, F, G  Yes  EF  4  FG  7  No  No 

8  C  C, D, G  Yes  CD  8  DG  9  No  Yes 

9  D  D, G  No  —  —  —  —  —  —  Read H. 
10  D  D, G, H  Yes  DG  9  GH  8  Yes  —  Read J. 
11  D  D, G, H, J  Yes  GH  8  HJ  7  Yes  —  Read K. 
12  D  D, G, H, J, K  Yes  HJ  7  JK  4  Yes  —  Read L. 
13  D  D, G, H, J, K, L  Yes  JK  4  KL  3  Yes  —  Read M. 
14  D  D, G, H, J, K, L, M  Yes  KL  3  LM  5  No  No 

15  D  D, G, H, J, M  Yes  HJ  7  JM  5  Yes  —  Read N. 
16  D  D, G, H, J, M, N  Yes  JM  5  MN  1  Yes  —  Read P. 
17  D  D, G, H, J, M, N, P  Yes  MN  1  NP  4  No  No 

18  D  D, G, H, J, P  Yes  HJ  7  JP  9  No  No 

19  D  D, G, P  Yes  DG  9  GP  10  No  Yes 

20  G  G, P  Out of data  —  —  —  —  —  — 
Count GP as ½ cycle. 
Now collect the results.
Cycle Count  Range  Mean  Start  End 

½  3  –0.5  A  B 
½  4  –1  B  C 
1  4  1  E  F 
½  8  1  C  D 
1  3  –0.5  K  L 
1  1  2.5  M  N 
1  7  0.5  H  J 
½  9  0.5  D  G 
½  10  1  G  P 
Compare this to the result of running rainflow
on the
sequence:
q = rainflow([2 1 3 5 1 3 4 4 3 1 2 3 2 6])
q = 0.5000 3.0000 0.5000 1.0000 2.0000 0.5000 4.0000 1.0000 2.0000 3.0000 1.0000 4.0000 1.0000 5.0000 6.0000 0.5000 8.0000 1.0000 3.0000 4.0000 1.0000 3.0000 0.5000 10.0000 11.0000 1.0000 1.0000 2.5000 12.0000 13.0000 1.0000 7.0000 0.5000 8.0000 9.0000 0.5000 9.0000 0.5000 4.0000 7.0000 0.5000 10.0000 1.0000 7.0000 14.0000
[1] ASTM E104985(2017), "Standard Practices for Cycle Counting in Fatigue Analysis." West Conshohocken, PA: ASTM International, 2011, https://www.astm.org/cgibin/resolver.cgi?E1049.