--- name: "freecad-fem-check" description: "Build or audit reproducible preliminary FreeCAD FEM checks with explicit solver capability detection, analytical baselines, boundary-condition review, reaction equilibrium, mesh sensitivity, singularity handling, and evidence-limited conclusions. Use for FreeCAD plus CalculiX or Gmsh linear-static studies, for diagnosing suspicious stress or displacement fields, or for deciding whether a proposed contact, nonlinear, FDM, creep, fatigue, or snap-fit analysis is outside the validated workflow." metadata: dev.v-san.skills: |- origin: "original (personal skill)" version: "0.1" changeDate: "2026-08-01" dependsOnSkills: - "mechanical-strength-review" - "freecad-scripts" requires: dependencies: - "FreeCAD 1.1.x recommended for the beta workflow" - "CalculiX and Gmsh for the linear-static beta workflow" sources: - "https://github.com/FreeCAD/FreeCAD-documentation/blob/main/wiki/FEM_Workbench.md https://github.com/FreeCAD/FreeCAD-documentation/blob/main/wiki/FEM_Tutorial_Python.md https://github.com/FreeCAD/FreeCAD-documentation/blob/main/wiki/FEM_Install.md https://github.com/FreeCAD/FreeCAD-documentation/blob/main/wiki/Workarounds.md https://www.dhondt.de/ccx_2.21.pdf https://gmsh.info/doc/texinfo/gmsh.html https://standards.nasa.gov/node/263\n" --- # FreeCAD FEM Check Use FreeCAD as a pre/postprocessor and workflow adapter around explicit solver and mesher capabilities. Keep solver capability separate from what the FreeCAD writer actually exposes. ## Beta scope Treat version `0.1` as validated guidance only for: - linear static analysis; - one solid body or a justified isolated submodel; - homogeneous isotropic linear elasticity; - distributed face load or prescribed displacement; - simple fixed or symmetry constraints; - no contact, plasticity, creep, fatigue, damage, or snap-through. Classify anything outside this scope as experimental or unsupported. Do not silently edit a generated solver deck to bypass the boundary. CalculiX and Gmsh are sufficient for this beta. Treat Elmer as an optional backend for a future, separately validated multiphysics workflow; do not install it merely to make every doctor capability read `true`. ## Workflow 1. Use `mechanical-strength-review` to define load cases, free-body diagram, expected reactions, failure modes, analytical baseline, material evidence, and quantities of interest. 2. Run `scripts/fem_doctor.py` in a Python environment that can import FreeCAD, or pass `scripts/run_fem_doctor_freecad.py` to `FreeCADCmd`. Run the probe in the same runtime that will execute FEM. Check Python adapters and solver/mesher executables independently. 3. Preserve the source document. Create a scratch copy or isolated submodel and record the geometry source or hash. 4. Write a case manifest before solving: FreeCAD and solver versions, units, analysis type, geometry simplification, material source, element type and order, mesh sizes, loads, constraints, and acceptance criteria. 5. Review every constrained degree of freedom and load face. Reject point loads, accidental overconstraint, unsupported rigid modes, and boundary conditions chosen only to make the solver run. 6. Generate and inspect the CalculiX input or solver log. Preserve FCStd, INP, FRD/result files, warnings, and normalized outputs. 7. Check applied-versus-reaction force balance, analytical comparison, deformation shape, and at least two refinements of a named engineering quantity. Use `scripts/audit_fem_results.py` for the beta report. 8. Read [quality-gates.md](references/quality-gates.md) before interpreting stress. Report singularities and untested physics explicitly. 9. Return `not_tested`, `setup_failed`, `solver_failed`, `fem_preliminary`, or `fem_converged`. Never translate these labels into an unconditional safety claim. ## Stop conditions - Stop when material, loads, or supports are unknown. - Stop when a sparse-infill or anisotropic FDM part lacks process-matched effective properties. - Escalate real snap engagement, large deformation, frictional assemblies, hyperelasticity, creep, fatigue, fracture, and safety-critical conclusions. - Treat maximum stress at a sharp corner, fixed edge, point load, or contact edge as potentially singular; refine a defensible quantity instead. If `freecad-model-validation` is installed, compose its geometry and artifact checks with this skill. It is not yet a hard dependency of the collection beta. ## Resources - [linear-static-workflow.md](references/linear-static-workflow.md) — reproducible FreeCAD/CalculiX case procedure. - [quality-gates.md](references/quality-gates.md) — equilibrium, convergence, singularity, and claim rules. - `scripts/fem_doctor.py` — read-only runtime and executable probe. - `scripts/run_fem_doctor_freecad.py` — compact `FreeCADCmd` entry point for the probe. - `scripts/audit_fem_results.py` — deterministic analytical/equilibrium/mesh report.