The largest cluster of the 128 compile errors behind the disabled test
modules was one missing API family. Now built, each with invariant tests
a plausible-wrong mesh fails:
- Rectangle::generate_quad_mesh / generate_tri_mesh — structured grids,
CCW elements, exact area sums asserted
- Circle::generate_tri_mesh — centre fan plus ring bands; tiles the
inscribed polygon exactly
- Box3D::generate_hex_mesh / generate_tet_mesh — the tet split is the
Kuhn/Freudenthal 6-tet subdivision, conforming across cells, positive
volumes summing exactly to the box
- Sphere::generate_tet_mesh — concentric UV shells, centre fan, prisms
split by the Dompierre smallest-index diagonal rule so neighbouring
prisms agree; conformity and closed-boundary asserted via face counting
- Mesh::validate — empty/inconsistent/orphan checks plus signed-area
orientation for planar Tri3/Quad4, which is what an inverted
connectivity fails
- Mesh::find_boundary_edges / find_boundary_faces / calculate_edge_normal,
Node::distance_to / with_label
Re-enabling the tests found a real defect: geometry::Face derived
order-sensitive PartialEq/Hash, so the same face listed by two adjacent
elements (different start node, opposite winding) never compared equal.
A 2x2x2 hex mesh reported 32 boundary faces instead of 24 — and
find_boundary_nodes in 3-D and the 3-D surface-area statistic sit on the
same counting. Face identity is now canonical (sorted ids; quads keep
their diagonal pairing).
Partitioning: the fixtures targeted an instance API that never existed —
MeshPartitioner::partition is an associated function. Two real gaps fixed:
interface_elements was never populated, and requesting more partitions
than elements produced useless empty partitions (now clamps).
Fixtures corrected rather than the code where they encoded abandoned
designs: global DOF numbers on nodes (DofMap's job), element
thickness/property bags nothing reads, a 0-to-1 quality score that never
existed, and a clockwise sliver that validate now rightly rejects. The
GPU data conversion test stays disabled with the GPU solver tranche.
Lib tests 72 -> 117, stable across 5 runs, all integration suites green.
Co-Authored-By: Claude Fable 5 <[email protected]>