Repository navigation
v0.12.1 — FEM fixes: curved multi-part bonding, per-part materials, loads on curved faces
Bug-fix release for the FEM tools (M13/M16), found on FreeCAD 1.1.3 / Windows.
- setup_analysis(names=[...]) no longer crashes on parts whose Shape is a Part.Compound (PartDesign::Body, MultiFuse, cut results): centre of mass is read per solid and each part maps to all of its solids.
- Per-part materials now cover every element. FreeCAD's node classification (getNodesBySolid) misses nodes on curved surfaces when 2nd-order mid-side nodes sit on straight edges, leaving elements without a material (CalculiX "no material was assigned to element"). The material element sets are now copied from Gmsh's exact SolidN volume groups, and run_analysis verifies the generated .inp (inp_check: uncovered/duplicated elements, *CLOAD/*DLOAD line counts) and fails with a clear message instead of reporting zero stress.
- Forces/pressures on curved faces (cylinders) used to produce an empty *CLOAD/*DLOAD and a stress of 0 with a huge safety factor. When any fixed/load face is curved, mid-side nodes are now placed on the surface (mesh.second_order_linear=false, with a warning); planar cases are unchanged.
- Multi-part assemblies are imprinted with generalFuse before meshing so touching faces that only partially overlap (small cylinder on a disc) share nodes; mesh.interface_shared_nodes reports it. Overlapping parts are reported as an error.
- suggest_reinforcement picks its hotspot per node using that part's yield strength and skips stress spikes within two element sizes of a fixed face (more than 2x the maximum elsewhere); smooth root stresses such as a cantilever root are kept. Reasons are listed in hotspot_selection.
Verified with new headless tests (T17: two cylinders incl. a Compound part, lateral load on a cylinder, footed beam); 304 tests pass, existing cantilever/bonded-beam/modal benchmarks unchanged.