Bracket crack
Where does a crack at the pin hole go, and do 99% of brackets last 100,000 cycles?
You ask
Where does a crack at the pin hole go, and do 99% of brackets last 100,000 cycles?
Wobbl runs
$ wobbl simulate bracket.py "Where does a crack at the pin hole go, and do 99% of brackets last 100,000 cycles?" \ --physics crack -m 7075-t6 --fix "bolt holes d=6.6" \ --load "4 kN 0.866,0.5,0 bearing @ hole d=8" \ --crack "through 1.27 mm at hole d=8" --r-ratio 0.1 \ --target-life 100000 --steps 14 --budget 3600
Crack

Stress
Load 4,000 N of 4,000 N
Crack
14.7 MPa sqrt(m)
FAILS
Stress
320 MPa
HOLDS
Passes the 12.8 MPa sqrt(m) limit at 3,480 N
Checks, numbers and charts
FAILSA 1.27 mm through crack at the edge of the 8 mm hole at (91.7, -3.6, 2.5) fails after about 86,219 cycles in a typical part. One part in ten fails by 55,144 cycles and one in a hundred by 37,968. 68% of parts fail before the 100000 cycle target (allowed 1%).
- Nominal life
- 86,219 cycles
- B10
- 55,144 cycles
- B1
- 37,968 cycles
- Confidence
- medium
- passSIF mesh convergence
- passhand calculation
- passforce balance
- passintegration step
- passMonte Carlo samples
- warncrack path
FAILS. A 1.27 mm through crack at the edge of the 8 mm hole at (91.7, -3.6, 2.5) fails after about 86,219 cycles in a typical part. One part in ten fails by 55,144 cycles and one in a hundred by 37,968. 68% of parts fail before the 100000 cycle target (allowed 1%). Confidence: medium. crack path: 10 solved cracks from 0.865 to 9.17 mm, ended by a step that could not be meshed or solved (gmsh could not mesh the part with the crack in it (_build took longer than 180 s). Past 9.17 mm K is carried on as the square root of size to the far side of the wall at 10.3 mm, and 0.388% of the nominal life rests on that estimatenominal life: 86,219 cyclesB10: 55,144 cyclesB1: 37,968 cyclesfail before target: 68%inspect every: 43,110 cycles Checks: [pass] SIF mesh convergence: largest K at the starting crack 7.17 -> 7.17 MPa sqrt(m) with front elements of 0.0926 and 0.0618 mm, last change 0.1% [pass] hand calculation: the edge crack weight function (Glinka and Shen) over the uncracked stress along the crack gives 7.77 MPa sqrt(m) for the 0.865 mm starting crack; the finite element K is 7.17 (-7.7%) [pass] force balance: reactions balance the loads to 4.9e-05% (forces) and 7.1e-06% (moments) [pass] integration step: nominal life 86,212 cycles with 200 steps in crack size and 86,219 with 400, 0.0086% apart [pass] Monte Carlo samples: B1 37,968 cycles from 20,000 parts, 90% sampling band 37,177 to 38,480 (within 1.7%), and 37,596 from the first half of the parts (0.98% off) [warn] crack path: 10 solved cracks from 0.865 to 9.17 mm, ended by a step that could not be meshed or solved (gmsh could not mesh the part with the crack in it (_build took longer than 180 s). Past 9.17 mm K is carried on as the square root of size to the far side of the wall at 10.3 mm, and 0.388% of the nominal life rests on that estimate Assumptions: - Aluminum 7075-T6: NASGRO growth with C 1.16e-07 mm/cycle and n 3.7, threshold 1.8 MPa sqrt(m) at R = 0, toughness 29 MPa sqrt(m). Source: Paris fit and K_Ic from Dowling, Mechanical Behavior of Materials, 4th ed. (2013), Table 11.2 (Walker C0 and m); threshold 1.8 MPa sqrt(m), the IIW lower bound for aluminium at R = 0 (Hobbacher 2016). - Loads cycle as constant amplitude between 0.1 and 1 of the load (R = 0.1), with the loads given as the peak. - The crack plane at the start is normal to the largest principal stress at the origin, 190 MPa before the crack. - The path starts from a crack 0.68 times the size given, the smallest tenth of the starting flaws sampled; smaller cracks follow the uncracked stress through the edge crack weight function, matched to the first solved K. - K for growth combines the three modes by energy, sqrt(K_I^2 + K_II^2 + K_III^2 / (1 - nu)), and the turn uses K_I and K_II only (maximum tangential stress). - Failure is K_max reaching the toughness or the average stress over the remaining ligament reaching the flow stress, 538 MPa, the mean of yield and tensile strength. Bending in the ligament is not counted, so net section yield is approximate. - Parts scatter as lognormal: starting flaw 0.3, growth coefficient 0.25, load 0.05, toughness 0.07 (standard deviations of the logarithm). One part's failure cycle cannot be predicted; the percentiles describe many parts. - The Monte Carlo keeps the solved path's shape and changes only how fast a part's crack travels along it. - Linear elastic fracture mechanics: crack tip plasticity, crack face contact and environment are not modeled. Suggested fixes: - Lower the stress at the crack's origin by 20%: Growth goes as the stress range to the power 3.7, so lowering the stress where the crack starts by 20% (a larger radius, a thicker section or a smaller load) brings B1 to the 100000 cycle target. - Use Mild steel (ASTM A36): With Mild steel (ASTM A36)'s crack growth constants on the same path, B1 is 1.46e+06 cycles against 38,058 now. Its stiffness does not change K under the same loads, but check its strength and weight with a strength study. - Use Stainless steel 304 (annealed): With Stainless steel 304 (annealed)'s crack growth constants on the same path, B1 is 1.04e+06 cycles against 38,058 now. Its stiffness does not change K under the same loads, but check its strength and weight with a strength study. - Inspect every 43,110 cycles: Damage tolerance practice: the first inspection at half the nominal life from the starting crack (43,110 cycles), then every half of the life from a 1.27 mm crack, the size an inspection is taken to find reliably, to failure (86,219 cycles). Images: path: images/path.png, growth: images/growth.png, life: images/life.pngReport: report.htmlHOLDSPeak 320 MPa on the 6 mm inside fillet (face 3) at (34.5, -14.2, 3.02), safety factor 1.57 against yield (target 1.5).
- Peak stress
- 320 MPa
- Safety factor
- 1.57
- Target
- 1.5
- Confidence
- high
HOLDS. Peak 320 MPa on the 6 mm inside fillet (face 3) at (34.5, -14.2, 3.02), safety factor 1.57 against yield (target 1.5). Confidence: high. passed mesh convergence, force balance, hand calculation, singularities, bolt bearing, units and sanityMax deflection 0.415 mm at (104, -1.33e-14, 5).Material Aluminum 7075-T6, limit 503 MPa; mass 47.6 g.Loads: 4 kN 0.866,0.5,0 bearing @ hole d=8. Fixtures: bolt holes d=6.6. Checks: [pass] mesh convergence: von Mises stress settled: 304 -> 323 -> 320 MPa over 3 meshes, last change 0.9% [pass] force balance: reactions balance the loads to 2.6e-05% (forces) and 3.3e-06% (moments) [pass] hand calculation: beam theory through the critical section gives 190 MPa nominal; FEA peak is 1.69x that, a stress concentration of about 1.7 from the local shape [pass] singularities: no sharp corner or support artifact is above the reported stress [pass] bolt bearing: worst hole of fix1 (d 6.6 mm) carries 5226 N sideways and 79.9 N along its axis; bearing stress 158 MPa, safety factor 4.77 on bearing [pass] units and sanity: part 116 mm across, peak strain 0.0045, max deflection 0.415 mm (0.36% of size): all plausible Assumptions: - Linear elastic material and small deflections (no yielding redistribution, no buckling). - Aluminum 7075-T6: E 71700 MPa, Poisson 0.33, von Mises vs yield 503 MPa (ASM Aerospace Specification Metals, Aluminum 7075-T6). - Loads are static and applied all at once; no impact, vibration or fatigue. - Wrought metal treated as isotropic; rolled, drawn or extruded stock is close to it at yield. - Bolted holes are rigidly held over the hole and a washer sized ring (twice the hole radius). - Bolt loads press on the loaded half of each hole with a cosine distribution. - Contact between separate parts, friction and preload are not modeled. Images: stress: images/stress.png, zoom: images/zoom.png, safety: images/safety.png, deformed: images/deformed.png, convergence: images/convergence.pngReport: report.htmlAbout this example
A machined 7075-T6 bracket bolts down through two 6.6 mm holes, and its arm ends in a lug whose 8 mm pin pulls with 4 kN at 30 degrees to the arm, cycling between 10% and 100% of that load (R = 0.1). The question starts from a 1.27 mm crack through the lug’s 5 mm wall at the pin hole, the flaw damage tolerance practice assumes at a hole.
| Result | Value |
|---|---|
| Typical bracket | fails after about 86,200 cycles |
| One in ten | fails by 55,100 cycles |
| One in a hundred (B1) | fails by 38,000 cycles |
| Share failing before 100,000 cycles | 68%, against 1% allowed |
| Inspection | every 43,100 cycles |
| Hand calculation | a weight function over the uncracked stress gives 7.77 MPa sqrt(m) for the starting crack, the finite element K is 7.17 |
The crack path through the lug, colored by the cycle count when each front passed

The run checks the bracket’s strength first (output/stress, a safety factor of 1.57 against yield) and then
grows the crack (output/crack). The crack starts where the bore is most stressed, at (91.7, -3.6, 2.5), grows
straight out through the lug over ten solved steps and cuts the wall at about 9 mm, where K climbs from 7.2 to 15
MPa sqrt(m). A Monte Carlo over 20,000 brackets with scattered starting flaws, growth constants, loads and
toughness gives the spread above. Wobbl suggests cutting the stress at the bore by 20%, through a larger radius,
a thicker section or a smaller load, a steel lug, or inspecting every 43,100 cycles.
Open output/simulation.html for both steps in 3D. The crack view is the crack at the end of its path with a
slider over the load from 1.2 to 8 kN, opening at the 4 kN asked about. K scales exactly with the load, and the
life of one part in a hundred and the share failing before the target are the run’s own at each load. The badge
turns MARGINAL at about 3.2 kN, where one part in a hundred no longer lasts 100,000 cycles, and FAILS at about
3.5 kN, where one in ten does not.
output/crack/playback.json holds the part’s surface, every solved front with its K and the cycle count when it
passed, the growth curve, the spread of lives and the lives at each load.
Run it yourself
$ git clone https://github.com/sohan-bhat/wobbl$ cd wobbl/examples/bracket-crack && ./run.shThe part, the script and every output are in examples/bracket-crack on GitHub.