Mechanical engineering acceptance report: twin-rib equipment bracket — 2026-09-06
Dates use the recorded host timezone, America/Chicago (UTC−05:00).
This stable report path now presents the primary bracket example. It summarizes the preceding
completed bracket validation; replacing the presentation does not add a new solve. The former
cantilever remains only as an internal analytical fixture under tests/fixtures/cantilever.
Earlier cantilever, template-synchronization, and gRPC diagnostics are historical records and
are not part of the five solves reported here.
简体中文报告 · Interactive example · Public summary · Case details · Provenance and hashes
Conclusion
The recorded study passed 5 real integration tests across 5 serial Mechanical solves in
208.16 seconds. Every run is SOLVED and synthetic: false. Both mesh-refinement steps meet
the displacement and bearing-pad stress-statistic tolerances. Independent force balance, moment
balance, and gravity-corrected full-field linearity all passed. The elapsed time covers the study
tests and their checks, not isolated solver time.
The preceding validation also completed one nominal 8 mm exploratory solve and the first 12 mm case of an unsuccessful study attempt: 7 completed real solves in that validation round, including the final five. The other four cases in the unsuccessful attempt failed during Python startup and are not counted as solves. Reopening the fine project to export views did not solve.
The preceding full offline regression recorded 252 passed, 20 skipped, with ruff check .
passing. These are historical baseline results, not freshly executed tests for this presentation
replacement. Skipped integrations remain unexecuted and are not counted as passes.
Overall engineering status remains WARN. Global stress peaks require local engineering interpretation, and no safety factor was calculated. Passing refers to the stated regression criteria, not design approval.
Model, loads, and environment
Sources are the example, simulation.yaml, simulation brief, geometry generator, and CAD properties. This is an authored engineering regression model with explicitly defined test dimensions and loads.
- One connected solid with 34 CAD faces; overall size 240 × 160 × 188 mm.
- Back plate / shelf / rib thicknesses: 16 / 20 / 12 mm; eight 14 mm mounting holes.
- Inside bend R10, rib-profile rounds R6; eccentric bearing pad 70 × 60 × 8 mm.
- Full X-min rear-face clamp represents an ideal rigid mounting interface.
- Front-face force [1000, 1500, −500] N acts at [240, 0, 170] mm.
- Pad pressure 0.8 MPa over 4200 mm² produces 3360 N along −Z at [165, 35, 188] mm.
- Self-weight acts along −Z with gravitational acceleration 9.80665 m/s².
- CAD volume: 1,532,280.529125 mm³; centroid: [83.288077, 0.767483, 134.178550] mm. At 7850 kg/m³ the reference mass is 12.028402 kg and weight is 117.958330 N.
The recorded host used Windows 11, ANSYS Student Mechanical 2026 R1, explicit mechanical_batch,
Python 3.13.2, PyMechanical 0.13.2, PyDPF 0.16.1, and local DPF Server 11.0.
Actual ds.dat input confirms E = 200 GPa, Poisson ratio 0.3, density 7850 kg/m³, and SOLID187.
SURF154 is permitted for surface loading; independent DPF extraction confirms quadratic solid
topology. The committed specification uses an 8 mm nominal mesh; the study generates explicit
12 / 8 / 5 mm variants.
Five recorded solves
| Case ID | Loading | Mesh mm | Nodes | Elements | Maximum displacement mm | Maximum equivalent stress MPa |
|---|---|---|---|---|---|---|
mixed_12mm |
Force + eccentric pressure + self-weight | 12 | 7,452 | 3,890 | 0.019119825 | 8.987440 |
mixed_8mm |
Force + eccentric pressure + self-weight | 8 | 11,680 | 6,241 | 0.019221773 | 9.008833 |
mixed_5mm |
Force + eccentric pressure + self-weight | 5 | 27,980 | 15,508 | 0.019348617 | 9.040418 |
gravity_5mm |
Self-weight only | 5 | 27,980 | 15,508 | 0.000159944 | 0.084056 |
double_mechanical_5mm |
Twice force/pressure + unchanged self-weight | 5 | 27,980 | 15,508 | 0.038545872 | 18.016176 |
Values are rounded. The primary presentation case is mixed_5mm. Its bearing-pad largest
absolute Z component is −0.013381324 mm, mean Z displacement is −0.009268916 mm, and front-face
largest absolute Y component is +0.005086454 mm. Directional extrema retain their signs; they
are not face averages. Global equivalent stress is the maximum of nodal-averaged output and
is reported without using it as a strength acceptance condition.
Independent engineering acceptance
Force and moment balance: PASS
Pressure and weight resultants use CAD area, centroid, and volume. The selected Mechanical
faces are checked for position, area, and normal before DPF coordinates and reactions are aligned
by node ID to compute ΣR and Σ(r × R). Moments use the global origin and N·m, with coordinates
converted to meters.
For the 5 mm combined-load case:
| Quantity | X | Y | Z |
|---|---|---|---|
| Applied force resultant N | 1000.000000 | 1500.000000 | −3977.958330 |
| Support force resultant N | −999.999998 | −1500.000002 | 3977.967017 |
| Applied moment resultant N·m | −372.690531 | 854.224522 | 360.000000 |
| Support moment resultant N·m | 372.690562 | −854.224661 | −360.000000 |
Its relative force residual is 1.9891 × 10⁻⁶ and relative moment residual is 1.4196 × 10⁻⁷. Across all five solves, the largest residuals are 0.007362% for force and 0.001448% for moment, below the respective 0.5% and 1% tolerances. Each relative residual is the norm of the resultant residual vector divided by the norm of the corresponding applied vector. Support resultants sum nodal vectors; they do not use the maximum single-node reaction. Fixed-support displacement, nonempty mesh, result units, and finite-value checks also passed.
Mesh-change criteria: PASS
Both consecutive refinements use abs(fine - coarse) / abs(fine).
| Quantity | 12 → 8 mm | 8 → 5 mm | Tolerance |
|---|---|---|---|
| Maximum total displacement | 0.5304% | 0.6556% | 5% |
| Bearing-pad mean Z displacement | 0.0713% | 0.7879% | 5% |
| Bearing-pad mean equivalent stress | 1.2553% | 2.5512% | 10% |
| Bearing-pad 95th-percentile equivalent stress | 2.3662% | 2.6099% | 10% |
At 5 mm the pad mean stress is 1.291825 MPa and its 95th percentile is 2.027259 MPa. Pad statistics weight nodes equally; they are not area-weighted. Passing establishes that these meshes and quantities meet the stated change thresholds. It does not establish a full-field error bound or general convergence of peaks at fixed edges.
Gravity-corrected full-field linearity: PASS
Let P denote front-face force and pad pressure, and G denote self-weight. The relation checked is
u(2P+G) = 2u(P+G) − u(G). All three fine-mesh results have the same 27,980 node IDs, with zero
coordinate difference. Every node is compared using
1e-12 m + 1e-6 × ||predicted displacement||; no nodes fail.
The full-field relative L2 error is 1.8077 × 10⁻¹¹, and the largest nodal absolute error is 1.5611 × 10⁻¹⁵ m. Because gravity is unchanged, the test does not simply double a maximum displacement that includes self-weight.
Execution failure and corrections
After the first solve in the initial serial attempt, DPF initialization inside the test process
changed the Python environment. Later Python 3.13 subprocesses read the ANSYS-bundled Python 3.10
standard library and failed with AssertionError: SRE module mismatch. That attempt reported
five failed tests; the original directories and logs were retained.
The bracket test now performs independent DPF checks in a separate Python worker with separate DPF logs. Read-only checks against existing RST files confirmed that the parent environment was unchanged before and after the worker. The final five-solve study then passed in a new directory. Numerical tolerances were not relaxed; production compiler and default dry-run behavior were not changed by that fix.
Geometry was generated with build123d 0.9.1; 0.11.1 failed while importing local system fonts. ANSYS and CAD dependency ranges were unchanged. STEP Git attributes disable newline conversion to preserve the geometry-properties SHA256 across checkouts.
Images and modeling boundaries
Each case exported native mesh, total-deformation, and equivalent-stress PNGs. Review found that
a header-only PNG check could accept truncated files. Pillow was added to the development extra
for file-structure verification and complete pixel decoding, with regressions for a valid image,
a header-only image, and an image missing its end block. All 15 saved original exports passed
complete decoding after the correction; no solve was repeated for image verification. The
supplemental receipt is png-decode-verification.json; the three offline image tests passed.
Z-up and underside views were exported from the saved 5 mm project, with identical project SHA256
before and after. The recorded review of geometry, underside, mesh, deformation, and stress images
confirmed preserved ribs and holes, continuous mesh, largest displacement near the free end, and
stress hotspots near rib-to-shelf transitions. Image inspection does not replace numerical checks.
Its visual-review.json records the hashes of the images actually viewed; it is separate from the
CLI automatic visual_review status.
The full rear clamp represents a rigid backing. Mounting holes are geometry only; bolt preload, contact, slip, and backing compliance are not solved. Ribs, plates, and pad form one continuous solid; individual weld details are unresolved.
Reproduction and retained evidence
The primary integration entry is
test_engineering_bracket.py. Follow the
example README or
Windows guide. Real tests require explicit ANSYS_AVAILABLE=1 and
ANSYS_TEST_BACKEND=mechanical_batch, serial execution, and a fresh output directory.
Local archived sources:
build/bracket-study-20260906-02/engineering-bracket0/: final five solves,study-summary.json, nodal evidence, per-run checks, saved Mechanical projects, and RST files.build/bracket-study-20260906-01/engineering-bracket0/: unsuccessful first study evidence.build/engineering-bracket-20260906-01/: nominal trial, dry-run, doctor, both study JUnit files and terminal logs, offline regression, and supplemental image evidence.
These ignored local directories are not part of the public software package. Public JSON uses a field allowlist for numerical values, statuses, and source hashes; it excludes private absolute paths, licensing logs, Mechanical projects, and RST files.
Recorded 5 mm presentation images
All images below are unchanged fine-views exports from the saved mixed_5mm project. The
homepage, cover, and example use this same case. Exported files are checked by SHA256 before
publication, without cropping or recoloring and without a new solve.



Images used courtesy of ANSYS, Inc. The geometry and underside views show the solid, ribs, and holes and contain no new simulated results.
WARN and NOT_RUN
- All five runs retain
stress_singularity_review: WARN; global peak stress is not a strength acceptance criterion. safety_factor: NOT_RUNreflects unspecified yield strength. Automaticvisual_review: NOT_RUNremains unchanged; the separate recorded manual image review does not turn it into PASS.- Generic CLI
reaction_balance: NOT_RUNremains for mixed pressure/gravity loads. Separate study force and moment checks passed. Disabledcantilever_analyticalalso remains NOT_RUN. - Other Mechanical versions and remote execution remain unverified. An earlier local gRPC handshake failed; this bracket study did not retest it.
- Mesh-change acceptance covers the two refinements and four quantities listed above, not a full-field error bound, general fixed-edge peak convergence, or design approval.