Updated 14 Jun 2021
Fatigue damage accumulation for variable amplitude stress-time histories using the Palmgren-Miner rule coded in Matlab. Code is documented and easy to use. The design fatigue strength curve (S-N or stress-life curve) is specified using the standardized parameters from Eurocode 3 EN 1993-1-9. The cycle counts are done using a rainflow counting algorithm based on ASTM E1049-85.
% reset workspace clear all; close all; clc; % generate a random stress-time history % (250 random numbers between 100 and 600) history = 100 + (600 - 100)*rand(250, 1); % basic example (uses default values) % the first input is the stress-time history % the second input is the detail category (see EN 1993-1-9) damage = fatdamage(history, 160) % specify the number of times the stress-time history sample is repeated damage = fatdamage(history, 160, 'Repetitions', 7500) % specify a custom direct stress S-N curve damage = fatdamage(history, 160, 'FirstSlope', 4, 'SecondSlope', 8) % specify a custom shear stress S-N curve damage = fatdamage(history, 112, 'StressType', 'shear', 'ShearSlope', 6) % specify safety factors damage = fatdamage(history, 160, 'ConstantAmplitudeFactor', 1.25, 'FatigueStrengthFactor', 1.35) % specify number of bins in the rainflow histogram and number of colors in the colormap damage = fatdamage(history, 160, 'Bins', [10, 20], 'Colors', 8) % if no plot is required damage = fatdamage(history, 160, 'Plot', false)
A plot of the provided stress-time history:
A plot of the load reversals (local extrema, i.e., peaks and valleys):
The 2D rainflow histogram, where one can see the cycle counts joined in "buckets" of similar stress ranges and mean stresses:
The generated fatigue strength curve:
The linearly accumulated fatigue damage, failure is expected to occur if damage equals (or is greater than) 1. If damage is less than 1, the bar is shown in green, otherwise it is shown in red:
The rainflow counting algorithm was implemented based on ASTM E1049-85 and its implementation was tested and validated by comparing its results with the ones obtained from Matlab’s
rainflow function (from Signal Processing Toolbox). This implementation shows the same results while surpassing the efficiency of the Matlab’s solution.
Carlos Souto (2021). Fatigue Damage Accumulation (https://github.com/carlosouto/Fatigue-Damage-Accumulation), GitHub. Retrieved .
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!