Stress-Life (S-N) Fatigue Curve (structures/fatigue/stress-life-curve)
Use when fatigue test data must be turned into a usable curve: fit
the Basquin equation to S-N test points, determine the endurance
limit from the runout stress level, and predict the fatigue life at
a constant stress amplitude. The leaf covers curve construction from
test data, the log-log fit, the endurance limit, and life
prediction; mean-stress corrections, cumulative damage, and notch
effects are separate leaves.
Domain quick reference
- Basquin equation: S = A * N^b, with stress amplitude S, cycles to
failure N, fatigue strength coefficient A (the stress amplitude at
N = 1 cycle), and fatigue strength exponent b (negative for
metals, typically -0.05 to -0.15).
- Worked curve, A = 1000 MPa, b = -0.1 (verified by running
scripts/stress_life_curve_logic.py):
S(1e4) = 398.1 MPa, S(1e5) = 316.2 MPa, S(1e6) = 251.2 MPa,
S(1e7) = 199.5 MPa. Each decade of life costs roughly 20 to 25
percent of the amplitude.
- Life prediction: N = (S / A)^(1 / b). At S = 300 MPa on the worked
curve, N = (0.3)^-10 = 1.69e5 cycles.
- Log-log fit: log S = log A + b * log N; least squares over the
(log N, log S) pairs recovers A and b. The three exact points
(1e3, 501.2), (1e4, 398.1), (1e5, 316.2) refit to
A = 1000 MPa, b = -0.1.
- Endurance limit: Se = A * N_runout^b at the runout threshold;
for runout at 1e7 cycles the worked curve gives
Se = 1000 * 1e7^-0.1 = 199.5 MPa. Equivalently, the endurance
limit is the highest tested stress level whose test survived the
runout life, read directly off the data.
- Typical metallic values: A near 0.9 * Sut and b between -0.05 and
-0.15; the endurance limit of steels sits near 0.5 * Sut.
- Equivalent life-form parameterization N = C * S^-m appears in some
references, with m = -1 / b and C = A^(-1 / b); convert before
mixing parameters.
Workflow
- Gather the S-N test data as (cycles to failure N, stress
amplitude S) pairs in one stress unit; keep runout tests (test
stopped without failure at the runout life) separate from
failures.
- Fit the Basquin curve: run the log-log least squares regression
over the failed specimens to get (A, b).
- Determine the endurance limit: evaluate the fitted curve at the
runout threshold, or take the highest runout stress level from
the data when the curve is not needed.
- Predict the life at the applied stress amplitude with
N = (S / A)^(1 / b), or the allowable amplitude for a required
life with S = A * N^b.
- Report A, b, the endurance limit, the runout threshold, and the
predicted life with the stress unit stated.
Pitfalls
- Confusing the S-N curve with the Goodman mean-stress correction:
the Basquin curve assumes fully reversed loading (zero mean
stress); a fluctuating cycle on a mean stress must be corrected
with the goodman-diagram leaf before the amplitude is read against
the curve.
- Confusing curve construction with cumulative damage: the S-N curve
gives the life of a constant-amplitude cycle; a varying-amplitude
spectrum needs the miner-damage leaf to sum the damage fractions
per cycle block.
- Confusing the smooth-specimen curve with notched behavior: a
stress concentration shortens the life at the same nominal
amplitude; reduce the amplitude with the fatigue notch factor from
the notch-sensitivity leaf first.
- Mixing parameterizations: S = A * N^b and N = C * S^-m carry the
exponent with opposite signs; using b as m (or the reverse)
silently corrupts every prediction.
- Mixing stress units between A and the applied amplitude, or
between the test data and the design case.
- Extrapolating far beyond the tested life range: fatigue lives are
log-normally scattered, so predictions outside the data band are
weak regardless of the fit quality.
- Claiming an endurance limit where none exists: aluminum and other
non-ferrous alloys have no true fatigue limit, only a finite-life
curve; report the runout-level stress, not an infinite-life
guarantee.
- Fitting in linear space: the regression must run on (log N,
log S) so every decade of life weighs equally.
Behavior contract (gate 3)
The S-N analysis logic is exercised by the gate 3 contract test:
scripts/test_stress_life_curve.py against
scripts/stress_life_curve_logic.py (stdlib unittest, offline). Run:
python3 scripts/test_stress_life_curve.py
The 21 test methods cover the worked anchors above, the trend
property that life grows as the stress amplitude drops, and the
ValueError cases for non-positive inputs, a zero exponent, too few
fit points, identical lives, and missing runouts.
Compliance
- FAR-25, CS-25, and MMPDS are cited as reference-only certification
context (compliance: STANDARDS-REF, gated: false); no text is
quoted from any of them. The S-N methodology itself is standard
mechanical engineering practice.
1---2name: stress-life-curve3description: Use when S-N test data must be reduced to a Basquin curve, an endurance limit must be determined from runout tests, or a fatigue life must be predicted from a stress amplitude for a structure. Determine the stress-life (S-N) fatigue curve from test data and use it for fatigue life prediction: fit the Basquin equation S = A * N^b to the S-N test points by log-log regression, read the endurance limit from the runout stress level, and predict the cycles to failure at a given stress amplitude or the allowable amplitude for a required life. Trigger: stress-life-curve, sn-curve, basquin-equation, endurance-limit, fatigue-life-prediction, sn-data.4license: Apache-2.05---67# Stress-Life (S-N) Fatigue Curve (structures/fatigue/stress-life-curve)89Use when fatigue test data must be turned into a usable curve: fit10the Basquin equation to S-N test points, determine the endurance11limit from the runout stress level, and predict the fatigue life at12a constant stress amplitude. The leaf covers curve construction from13test data, the log-log fit, the endurance limit, and life14prediction; mean-stress corrections, cumulative damage, and notch15effects are separate leaves.1617## Domain quick reference1819- Basquin equation: S = A * N^b, with stress amplitude S, cycles to20 failure N, fatigue strength coefficient A (the stress amplitude at21 N = 1 cycle), and fatigue strength exponent b (negative for22 metals, typically -0.05 to -0.15).23- Worked curve, A = 1000 MPa, b = -0.1 (verified by running24 scripts/stress_life_curve_logic.py):25 S(1e4) = 398.1 MPa, S(1e5) = 316.2 MPa, S(1e6) = 251.2 MPa,26 S(1e7) = 199.5 MPa. Each decade of life costs roughly 20 to 2527 percent of the amplitude.28- Life prediction: N = (S / A)^(1 / b). At S = 300 MPa on the worked29 curve, N = (0.3)^-10 = 1.69e5 cycles.30- Log-log fit: log S = log A + b * log N; least squares over the31 (log N, log S) pairs recovers A and b. The three exact points32 (1e3, 501.2), (1e4, 398.1), (1e5, 316.2) refit to33 A = 1000 MPa, b = -0.1.34- Endurance limit: Se = A * N_runout^b at the runout threshold;35 for runout at 1e7 cycles the worked curve gives36 Se = 1000 * 1e7^-0.1 = 199.5 MPa. Equivalently, the endurance37 limit is the highest tested stress level whose test survived the38 runout life, read directly off the data.39- Typical metallic values: A near 0.9 * Sut and b between -0.05 and40 -0.15; the endurance limit of steels sits near 0.5 * Sut.41- Equivalent life-form parameterization N = C * S^-m appears in some42 references, with m = -1 / b and C = A^(-1 / b); convert before43 mixing parameters.4445## Workflow46471. Gather the S-N test data as (cycles to failure N, stress48 amplitude S) pairs in one stress unit; keep runout tests (test49 stopped without failure at the runout life) separate from50 failures.512. Fit the Basquin curve: run the log-log least squares regression52 over the failed specimens to get (A, b).533. Determine the endurance limit: evaluate the fitted curve at the54 runout threshold, or take the highest runout stress level from55 the data when the curve is not needed.564. Predict the life at the applied stress amplitude with57 N = (S / A)^(1 / b), or the allowable amplitude for a required58 life with S = A * N^b.595. Report A, b, the endurance limit, the runout threshold, and the60 predicted life with the stress unit stated.6162## Pitfalls6364- Confusing the S-N curve with the Goodman mean-stress correction:65 the Basquin curve assumes fully reversed loading (zero mean66 stress); a fluctuating cycle on a mean stress must be corrected67 with the goodman-diagram leaf before the amplitude is read against68 the curve.69- Confusing curve construction with cumulative damage: the S-N curve70 gives the life of a constant-amplitude cycle; a varying-amplitude71 spectrum needs the miner-damage leaf to sum the damage fractions72 per cycle block.73- Confusing the smooth-specimen curve with notched behavior: a74 stress concentration shortens the life at the same nominal75 amplitude; reduce the amplitude with the fatigue notch factor from76 the notch-sensitivity leaf first.77- Mixing parameterizations: S = A * N^b and N = C * S^-m carry the78 exponent with opposite signs; using b as m (or the reverse)79 silently corrupts every prediction.80- Mixing stress units between A and the applied amplitude, or81 between the test data and the design case.82- Extrapolating far beyond the tested life range: fatigue lives are83 log-normally scattered, so predictions outside the data band are84 weak regardless of the fit quality.85- Claiming an endurance limit where none exists: aluminum and other86 non-ferrous alloys have no true fatigue limit, only a finite-life87 curve; report the runout-level stress, not an infinite-life88 guarantee.89- Fitting in linear space: the regression must run on (log N,90 log S) so every decade of life weighs equally.9192## Behavior contract (gate 3)9394The S-N analysis logic is exercised by the gate 3 contract test:95scripts/test_stress_life_curve.py against96scripts/stress_life_curve_logic.py (stdlib unittest, offline). Run:9798python3 scripts/test_stress_life_curve.py99100The 21 test methods cover the worked anchors above, the trend101property that life grows as the stress amplitude drops, and the102ValueError cases for non-positive inputs, a zero exponent, too few103fit points, identical lives, and missing runouts.104105## Compliance106107- FAR-25, CS-25, and MMPDS are cited as reference-only certification108 context (compliance: STANDARDS-REF, gated: false); no text is109 quoted from any of them. The S-N methodology itself is standard110 mechanical engineering practice.