Cast motor mount
Does a cast motor mount meet a safety factor of 2 under a 2 kN belt pull?
You ask
Does this cast motor mount meet our safety factor 2 rule under a 2 kN emergency stop belt pull?
Wobbl runs
$ wobbl simulate "../../src/wobbl/validation/parts/cast_motor_mount.step" "Does this cast motor mount meet our safety factor 2 rule under a 2 kN emergency stop belt pull?" \ --physics stress -m "custom:E=72400,nu=0.33,yield=165,process=cast" \ --target-sf 2 --fix "z=min" \ --load "2000 N -0.8660254,0,-0.5 at 0,-30,66 @ holes d=6.6" \ --budget 600
Load 2,000 N of 2,000 N
124 MPa
MARGINAL
Checks, numbers and charts
MARGINALPeak 124 MPa on the 3.99 mm inside fillet (face 65) at (43.9, 8.96, 79.6). It survives the load, but the safety factor 1.33 is below the 2 target. Confidence is medium.
- Peak stress
- 124 MPa
- Safety factor
- 1.33
- Target
- 2
- Confidence
- medium
- passmesh convergence
- passforce balance
- passsingularities
- passunits and sanity
- warnload introduction

MARGINAL. Peak 124 MPa on the 3.99 mm inside fillet (face 65) at (43.9, 8.96, 79.6). It survives the load, but the safety factor 1.33 is below the 2 target. Confidence is medium. Confidence: medium. load introduction: the off part loads enter through a distributing coupling (the attached part adds no stiffness). With a rigid attachment (the attached part does not flex) instead, the governing stress converges to 55 MPa on face 2 at (-34, 0, 29.5) (0.44x, safety factor 3.00) over 3 meshes refined around that peak: 54.2 -> 54.3 -> 55 MPa, last change 1.1%. The verdict depends on this assumption: check how the attached part really carries the load; the verdict depends on how the load enters the part (rigid attachment versus distributed); the answer assumes distributedMax deflection 0.265 mm at (24.2, 0, 112).Material Custom material (cast), limit 165 MPa; mass 359 g.Loads: 2000 N -0.8660254,0,-0.5 at 0,-30,66 @ holes d=6.6. Fixtures: fixed z=min. Checks: [pass] mesh convergence: von Mises stress settled: 122 -> 124 -> 124 MPa over 3 meshes, last change 0.1% [pass] force balance: reactions balance the loads to 1e-05% (forces) and 1.2e-06% (moments) [skip] hand calculation: no simple beam model applies (the governing point is not between the fixtures and the load, so no single section carries it) [pass] singularities: no sharp corner or support artifact is above the reported stress [pass] units and sanity: part 203 mm across, peak strain 0.0017, max deflection 0.265 mm (0.13% of size): all plausible [warn] load introduction: the off part loads enter through a distributing coupling (the attached part adds no stiffness). With a rigid attachment (the attached part does not flex) instead, the governing stress converges to 55 MPa on face 2 at (-34, 0, 29.5) (0.44x, safety factor 3.00) over 3 meshes refined around that peak: 54.2 -> 54.3 -> 55 MPa, last change 1.1%. The verdict depends on this assumption: check how the attached part really carries the load Assumptions: - Linear elastic material and small deflections (no yielding redistribution, no buckling). - Custom material (cast): E 72400 MPa, Poisson 0.33, von Mises vs yield 165 MPa (user supplied; the rest from Aluminum A356-T6 (sand cast)). - Loads are static and applied all at once; no impact, vibration or fatigue. - Cast part treated as sound and uniform; porosity or shrinkage in thick sections can lower the real strength, which is why castings carry larger safety factors. - Fixed faces are perfectly rigid; real mounts flex a little, which lowers peak stress next to them. - Remote loads and moments are spread over their faces without stiffening them. - Contact between separate parts, friction and preload are not modeled. Suggested fixes: - The wall through the peak is 6 mm. To reach safety factor 2 it needs 7.35 mm (+22%), because bending stress falls with thickness squared. - 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. - Stress stays about the same for the same shape and load, so Aluminum 6061-T6 (276 MPa) gives safety factor 2.23. It is 0.95x as stiff, so deflection scales by 1.05. Other options: Mild steel (ASTM A36) (2.02), Aluminum 7075-T6 (4.07). 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
This is a sand cast A356-T6 aluminum mount for a servo driving a conveyor belt, with a yield strength of 165 MPa and a house rule of safety factor 2 on yield for castings because of porosity. The base bolts flat to a steel frame, and the servo bolts to the upright with four M6 bolts. Its pulley sits 30 mm behind the upright, and an emergency stop pulls the belt with 2 kN, 30 degrees below horizontal. This is one of the parts a coding agent working alone could not answer in 15 minutes in the bake-off.
| Result | Value |
|---|---|
| Peak stress | 123.7 MPa where the +X rib tip meets the upright, and the reference model gives 124.3 MPa at the same spot |
| Safety factor | 1.33, below the required 2, so Wobbl calls it marginal because the casting does not yield but fails the house rule |
| Mesh convergence | 122.2, 123.6, 123.7 MPa over three meshes |
| Rigid servo case | 54.2, 54.3, 55.0 MPa over three meshes refined around its own peak, safety factor 3.00 |
| Equilibrium | forces balance to 0.00001%, moments to 0.000001% |
| Time | 5 minutes in all on a 2018 six core laptop, the rigid servo case included |
| Repeatability | four runs back to back gave these numbers to the last digit |
The answer depends on how the servo carries the load, and Wobbl says so. The belt pull is a force at a point off the part, and Wobbl’s default spreads it over the four bolt holes without adding stiffness, the way a bolt group shares a load. Treating the servo body as rigid instead moves the peak to the face the servo bolts against, about 2 mm outside a lower bolt hole, where it converges to 55.0 MPa with a safety factor of 3.00, which passes. Wobbl solves both, refines the rigid case around its own peak until it settles, reports the spread and marks the result medium confidence with that reason. A servo flange on four bolts behaves much closer to the bolt group in practice, so the part should be redesigned with thicker ribs or a larger blend at the rib tip.
Run it yourself
$ git clone https://github.com/sohan-bhat/wobbl$ cd wobbl/examples/cast-motor-mount && ./run.shThe part, the script and every output are in examples/cast-motor-mount on GitHub.
Cast mount credibility
You ask
How far can simulation stand in for testing this cast motor mount under a 2 kN belt pull?
Wobbl runs
$ wobbl simulate "../../src/wobbl/validation/parts/cast_motor_mount.step" "How far can simulation stand in for testing this cast motor mount under a 2 kN belt pull?" \ --physics stress -m "custom:E=72400,nu=0.33,yield=165,process=cast" \ --target-sf 2 --fix "z=min" \ --load "2000 N -0.8660254,0,-0.5 at 0,-30,66 @ holes d=6.6" \ --no-images --budget 600$ wobbl uncertainty output --vary "load lognormal 10%" --vary "yield 8%" \ --vary "E 3%"$ wobbl validate-against output readings.csv$ wobbl credibility output --influence high --consequence mediumChecks
- passmesh convergence
- passforce balance
- passsingularities
- passunits and sanity
- warnload introduction

MARGINALPeak 124 MPa on the 3.99 mm inside fillet (face 65) at (43.9, 8.96, 79.6). It survives the load, but the safety factor 1.33 is below the 2 target. Confidence is medium.
- Peak stress
- 124 MPa
- Safety factor
- 1.33
- Target
- 2
- Confidence
- medium
Suggested fixes
- Thicken the wall at the peak from 6 to 7.35 mm
- Add a triangular gusset across the inside corner
- Switch to Aluminum 6061-T6
summary.txt
MARGINAL. Peak 124 MPa on the 3.99 mm inside fillet (face 65) at (43.9, 8.96, 79.6). It survives the load, but the safety factor 1.33 is below the 2 target. Confidence is medium. Confidence: medium. load introduction: the off part loads enter through a distributing coupling (the attached part adds no stiffness). With a rigid attachment (the attached part does not flex) instead, the governing stress converges to 55 MPa on face 2 at (-34, 0, 29.5) (0.44x, safety factor 3.00) over 3 meshes refined around that peak: 54.2 -> 54.3 -> 55 MPa, last change 1.1%. The verdict depends on this assumption: check how the attached part really carries the load; the verdict depends on how the load enters the part (rigid attachment versus distributed); the answer assumes distributedMax deflection 0.265 mm at (24.2, 0, 112).Material Custom material (cast), limit 165 MPa; mass 359 g.Loads: 2000 N -0.8660254,0,-0.5 at 0,-30,66 @ holes d=6.6. Fixtures: fixed z=min. Checks: [pass] mesh convergence: von Mises stress settled: 122 -> 124 -> 124 MPa over 3 meshes, last change 0.1% [pass] force balance: reactions balance the loads to 1e-05% (forces) and 1.2e-06% (moments) [skip] hand calculation: no simple beam model applies (the governing point is not between the fixtures and the load, so no single section carries it) [pass] singularities: no sharp corner or support artifact is above the reported stress [pass] units and sanity: part 203 mm across, peak strain 0.0017, max deflection 0.265 mm (0.13% of size): all plausible [warn] load introduction: the off part loads enter through a distributing coupling (the attached part adds no stiffness). With a rigid attachment (the attached part does not flex) instead, the governing stress converges to 55 MPa on face 2 at (-34, 0, 29.5) (0.44x, safety factor 3.00) over 3 meshes refined around that peak: 54.2 -> 54.3 -> 55 MPa, last change 1.1%. The verdict depends on this assumption: check how the attached part really carries the load Assumptions: - Linear elastic material and small deflections (no yielding redistribution, no buckling). - Custom material (cast): E 72400 MPa, Poisson 0.33, von Mises vs yield 165 MPa (user supplied; the rest from Aluminum A356-T6 (sand cast)). - Loads are static and applied all at once; no impact, vibration or fatigue. - Cast part treated as sound and uniform; porosity or shrinkage in thick sections can lower the real strength, which is why castings carry larger safety factors. - Fixed faces are perfectly rigid; real mounts flex a little, which lowers peak stress next to them. - Remote loads and moments are spread over their faces without stiffening them. - Contact between separate parts, friction and preload are not modeled. Suggested fixes: - The wall through the peak is 6 mm. To reach safety factor 2 it needs 7.35 mm (+22%), because bending stress falls with thickness squared. - 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. - Stress stays about the same for the same shape and load, so Aluminum 6061-T6 (276 MPa) gives safety factor 2.23. It is 0.95x as stiff, so deflection scales by 1.05. Other options: Mild steel (ASTM A36) (2.02), Aluminum 7075-T6 (4.07).Report: report.htmlUncertainty: The chance of failing against the yield strength is about 1 in 77 (1.3%, 95% interval 1.25% to 1.35%). The safety factor averages 1.35 with a standard deviation of 0.173, and 90% of samples fall between 1.08 and 1.65. By total Sobol index the spread comes from load (0.61) and yield (0.39). With loads entering through a rigid attachment instead of a distributed attachment, the chance of failing is below 1 in 54,000 (no failures in 200,000 samples, 95% upper bound 1.8e-05), so that choice bounds the answer too. Tests: 16 readings from readings.csv, which are synthetic and do not come from a real test. 16 of 16 agree with the simulation within twice their validation uncertainty, and the comparison error averages -2.3% of the reading. The pooled area metric is 0.121, within the 0.145 a model with the right spread would stay under 95% of the time. The readings favour a distributed attachment over a rigid attachment by a likelihood ratio of more than 1,000, with the modulus fitted to each. Calibration puts E at 70938 MPa (95% interval 70055 to 71834 MPa, 4.8x narrower than before the test). Credibility: Model risk 4 of 5 (high influence, medium consequence), so Wobbl proposes a high goal for each factor. The evidence meets it on 4 of 9 factors. Short on model form, comparator, output comparison, applicability, uncertainty in the answer. Test plan: 4 tests would most reduce the risk, in this order, a validation test, a gauge where the idealizations differ, a service load measurement and material coupons.How far can simulation stand in for testing a cast motor mount under a 2 kN belt pull, and which physical tests does it still need?
This is the sand cast A356-T6 mount from the cast-motor-mount example, with the same 2 kN emergency stop belt pull and the same house rule of safety factor 2 on yield. On top of the strength study it builds the evidence that virtual testing frameworks ask for, the odds of failure under load and material scatter, a comparison with gauge readings, an assessment in the manner of ASME V&V 40 and a plan for the physical tests that matter. Wobbl supplies that evidence and certifies nothing. Whether it is enough is the reviewer’s call.
The study runs without heatmaps to keep the output small, and the cast-motor-mount example has them. Open
output/credibility.html for the page a reviewer would read, or output/report.html for the full run.
| Step | Result |
|---|---|
| Strength | peak 124 MPa on the 3.99 mm fillet at the rib tip, safety factor 1.33 against a target of 2, settled to 0.1% over three meshes |
| Scatter | belt pull lognormal 10%, yield normal 8% (165 MPa, sd 13.2), Young’s modulus normal 3%, and the 0.1% discretization error |
| Probability of yielding | about 1 in 77 (1.3%, 95% interval 1.25% to 1.35%) from 200,000 samples, and 99.9% of samples miss the target of 2 |
| Safety factor | mean 1.35, standard deviation 0.173, 90% between 1.08 and 1.65 |
| What matters most | the belt pull (total Sobol index 0.61), then the yield strength (0.39), with the modulus and the mesh near zero |
| Rigid servo bound | with the servo treated as rigid, no failures in 200,000 samples (below 1.8e-5) |
| Readings | 16 synthetic readings, 16 within twice their validation uncertainty, comparison error -2.3% on average |
| Idealization | the readings favour the distributed attachment by a likelihood ratio of more than 1,000 |
| Calibration | Young’s modulus 70,900 MPa, 95% interval 70,100 to 71,800, 4.8x narrower than before |
| Credibility | model risk 4 of 5, so a high goal on each factor, met on 4 of 9 |
| Test plan | a gauged load test, a gauge where the idealizations differ, a service load measurement and coupons |
The uncertainty needs no new solve. A linear elastic part with one material has a stress field that follows the load and does not depend on Young’s modulus, so the converged solution scales exactly to every sample, and the 200,000 samples and the Sobol indices take seconds.
The readings are synthetic
readings.csv does not come from a real test. make_readings.py made it from Wobbl’s own solution, read the way
three strain gauges and a dial gauge would read it at 500, 1000, 1500 and 2000 N, with Young’s modulus set to
70.6 GPa and gauge noise added. Comparing the model with readings made from the model shows the workflow and how
calibration and the idealization comparison behave. Calibration does find the modulus again, and 70.6 GPa sits
inside its interval. It says nothing about how well the model matches a real mount, and Wobbl marks every result
made from these readings as synthetic. That is also why comparator, output comparison and applicability stay low
in the assessment.
The assessment
The mount’s design decision leans on the model (high influence) and a wrong call means a field failure but no injury (medium consequence), which puts the model risk at 4 of 5. The evidence meets a high goal on code verification (13 strength cases with known answers, the largest error 4.3%), solution verification, inputs stated explicitly and model inputs. It falls short on the model form, because the answer still depends on how the servo carries the belt pull, on the three factors that need a real test, and on the answer’s own uncertainty, since a 1.3% chance of yielding is too much to stand on the model alone.
The test plan
- A static load test in steps of 500, 1000, 1500 and 2000 N, with a strain gauge at the rib tip (1486 ± 89 microstrain at 2 kN), one on a calm spot of the upright (818 ± 49) and a dial gauge where the mount moves most (0.265 ± 0.016 mm). The stress falls 26% across a 3 mm grid at the rib tip, so that gauge should be a 1 mm grid.
- A strain gauge on the servo face at (-34, 0, 29.5), where a rigid servo would put its peak. The two idealizations disagree there by a factor of three, so this one reading settles the choice that moves the answer most.
- A load cell on the belt in service, since knowing the real pull removes about 61% of the variance of the safety factor.
- Tensile coupons from the same casting lot, which remove most of the rest.
With real readings that agree, the plan says a static proof test at the design load could likely be left to the simulation if the failure probability were also small. Here it is not, so the proof test stays. A test to failure, the coupons themselves and any fatigue, impact or vibration test cannot be replaced by this static linear model.
$ cd wobbl/examples/cast-mount-credibility && ./run.shIts script, the readings and every output are in examples/cast-mount-credibility on GitHub.