WOBBLbracket.py

Will this printed PLA shelf bracket hold its share of an 8 kg shelf?

Strength report
2026-10-13 10:27
FAILS

Peak 52.3 MPa on the 0.5 mm inside fillet (face 3) at (6.19, 12.6, 6.11). The part cracks at about 0.96x this load.

peak stress
52.3 MPa
safety factor
0.96
max deflection
3.47 mm
target
2.5

Confidence high

  • passed mesh convergence, force balance, hand calculation, singularities, bolt bearing, units and sanity

Stress

max principal stress with the governing point marked (52.3 MPa). Color scale tops out at the reported value.
max principal stress with the governing point marked (52.3 MPa). Color scale tops out at the reported value.
Close up of the governing point
Close up of the governing point
Safety factor (red is below 1, green is comfortable)
Safety factor (red is below 1, green is comfortable)
Deflected shape, exaggerated so it is visible
Deflected shape, exaggerated so it is visible

Checks

statuscheckresult
passmesh convergencemax principal stress settled: 43 -> 50.9 -> 53 -> 52.3 MPa over 4 meshes, last change 1.4%
passforce balancereactions balance the loads to 0.00014% (forces) and 8.4e-06% (moments)
passhand calculationbeam theory through the critical section gives 15.2 MPa nominal; FEA peak is 3.45x that, a stress concentration of about 3.4 from the local shape
passsingularitiesno sharp corner or support artifact is above the reported stress
passbolt bearingworst hole of fix1 (d 4.5 mm) carries 2.7 N sideways and 45.7 N along its axis; bearing stress 0.1 MPa, safety factor 499.33 on bearing
passunits and sanitypart 123 mm across, peak strain 0.015, max deflection 3.47 mm (2.8% of size): all plausible

How to fix it

Round the 0.5 mm fillet to a 3 mm radius
Stress piles up in the 0.5 mm fillet. A fillet of 3 mm (about half the 6 mm wall) spreads it out. With that radius the peak is usually about 1.4x the 15.2 MPa beam stress, roughly 21.2 MPa (safety factor 2.35).
re-run: peak 24.1 MPa, safety factor 2.08, marginal
Thicken the wall at the peak from 6 to 9.7 mm
The wall through the peak is 6 mm. To reach safety factor 2.5 it needs 9.7 mm (+62%), because bending stress falls with thickness squared.
re-run: peak 21 MPa, safety factor 2.38, marginal
Add a triangular gusset across the inside corner
The peak sits where two walls meet and bend. A gusset as thick as the wall, with legs about half as long as the shorter wall, ties them together and usually cuts the corner stress by half or more.
re-run: peak 9.82 MPa, safety factor 5.09, holds
Shorten the lever arm from 58.9 to 22.5 mm
The load acts 58.9 mm from the critical section. Moving a support or the load to within 22.5 mm brings the bending stress to the target.
before
before
after the fix
after the fix

Mesh convergence

Peak stress at each refinement level
Peak stress at each refinement level
levelnodesglobal size mmfinest mmgoverning MPachangemax deflection mmsolve
06,2235.41.51433.421.4 s
113,9044.590.26750.9+18.2%3.424.0 s
234,5333.90.11753+4.3%3.4717.8 s
365,9583.320.071652.3-1.4%3.4743.4 s

Stress peaks

Every peak Wobbl found, with its value at each mesh. Peaks at sharp corners and idealized supports are excluded from the answer because their value depends on the idealization, not the part.

#wherex, y, z (mm)MPa by levelstatus
1on the 0.5 mm inside fillet (face 3)6.15, 11.4, 6.1543 → 50.9 → 52.7 → 52.3counted
2on the 0.5 mm inside fillet (face 3)6.15, 19.3, 6.1540.9 → 49.4 → 50.6 → 51.2counted
3on the 0.5 mm inside fillet (face 3)6.15, 3.41, 6.1539.4 → 48.3 → 47.8 → 48.3counted

Setup

materialPLA (3D printed)
limit50 MPa
target safety factor2.5
mass30.29 g
load40 N down @ top and within 12 of 65,12.5,6
fixturebolt holes d=4.5
fixturewall x=min
part2 holes, 1 inside fillets, 0 sharp inside corners, walls about 6 mm

Assumptions

  1. Linear elastic material and small deflections (no yielding redistribution, no buckling).
  2. PLA (3D printed): E 3500 MPa, Poisson 0.36, max principal vs tensile strength 50 MPa (Prusament PLA technical data sheet; Ultimaker PLA TDS).
  3. Loads are static and applied all at once; no impact, vibration or fatigue.
  4. Printed part treated as isotropic at 100% infill; across the layers it is roughly 60% as strong. Pass --print-direction to check that.
  5. Brittle failure: judged by the largest tensile principal stress.
  6. Bolted holes are rigidly held over the hole and a washer sized ring (twice the hole radius).
  7. Wall supports push but cannot pull (frictionless contact, solved iteratively).
  8. Contact between separate parts, friction and preload are not modeled.

Notes