7.8 KiB
Step 0 Audit: Phase 1 Rebaseline
Date: 2026-05-04 Author: Codex
Objective
Audit the existing Phase 1 C++ implementation against the paper-based docs/MITC4_FORMULATION.md reset before changing solver behavior.
This step did not modify production C++ code. The existing implementation remains useful historical scaffolding, but it is not authoritative for the rebuilt MITC4 element until each layer is revalidated through the rebaseline steps.
Required Sources Read
AGENTS.mdPLAN.mdPROGRESS.mddocs/README.mddocs/HARNESS_ENGINEERING.mddocs/PRD.mddocs/ARCHITECTURE.mddocs/ADR.mddocs/NUMERICAL_CONVENTIONS.mddocs/MITC4_FORMULATION.mdphases/1-linear-static-mitc4-rebaseline/step0.md
Code Areas Inspected
include/fesa/fesa.hpptests/test_main.cppCMakeLists.txtscripts/validate_workspace.pyreferences/quad_01.inpreferences/quad_02.inp
High-Level Finding
The existing implementation has a working single-header Phase 1 skeleton: parser, domain validation, DOF mapping, dense test solver, in-memory results, displacement CSV comparison, full-vector reaction recovery, and a basic linear static workflow.
The existing MITC4 kernel is not compatible with the revised formulation contract. It uses a simplified midsurface local basis, 2D projected derivatives, separated membrane/bending/shear factors, direct shear row construction at tying points, 2 x 2 midsurface-only integration, and drilling_stiffness_scale = 1.0e-6. The revised contract requires degenerated-continuum geometry, director/local rotation handling, convected covariant strain rows, MITC transverse shear tying on tensor components, 2 x 2 x 2 Gauss integration, and drilling stabilization based on 1.0e-3 * min_positive_diagonal(K_local_without_drilling).
Retain With Revalidation
These areas should be kept as starting points, but each must be revalidated by the assigned rebaseline step before being treated as Phase 1 evidence.
| Area | Current Evidence | Rebaseline Owner |
|---|---|---|
| CMake/CTest validation harness | CMake files and scripts/validate_workspace.py run a real C++ test executable. |
P1R-02 |
| Core numeric and DOF aliases | Real, int64 ids/equations, and Abaqus DOF 1..6 mapping exist. |
P1R-02 |
| Diagnostics model | Error/warning diagnostics and code-based checks exist. | P1R-02, P1R-04 |
| Parser subset skeleton | *Node, *Element TYPE=S4, *Nset, *Elset, *Material, *Elastic, *Shell Section, *Boundary, *Cload, *Step, *Static, and *End Step are represented. |
P1R-03 |
| Unsupported feature rejection | Generic unsupported keyword rejection plus S4R and NLGEOM=YES checks exist. |
P1R-01, P1R-03 |
| Domain validation | Missing element nodes, shell section/material links, load/boundary targets, no active elements, and no load warnings are present. | P1R-04 |
| DofManager foundation | Six-DOF full order, constrained/free partition, equation numbering, and full-vector reconstruction exist outside Node/Element. | P1R-05 |
| Result field structure | In-memory step/frame fields for U and RF exist. |
P1R-06 |
| CSV displacement comparator | Required Abaqus displacement columns are parsed and compared by node id with abs/rel tolerance support. | P1R-06, P1R-14 |
| Linear static flow | Reduced free-DOF solve, full vector reconstruction, and R_full = K_full * U_full - F_full are implemented. |
P1R-12, P1R-13 |
Rewrite Required
These areas conflict with docs/MITC4_FORMULATION.md and should be rebuilt under the matching contracts, not patched casually.
| Area | Conflict | Rebaseline Owner |
|---|---|---|
| MITC4 local basis | Current computeLocalBasis uses averaged edge directions from the four coordinates. The revised contract requires element-center midsurface normal, nodal director axes V1/V2/Vn, deterministic fallback axes, and integration local bases. |
P1R-07 |
| Geometry and Jacobian | Current code projects the element to local 2D xy and uses bilinear planar derivatives only. The revised contract requires degenerated-continuum geometry with through-thickness coordinate zeta, covariant bases g_i, and invalid basis/Jacobian diagnostics. |
P1R-07, P1R-09 |
| Local rotation transform | Current transform rotates three translations and three rotations with one basis block. The revised contract requires mapping global rotations to local [alpha, beta, gamma], where drilling gamma does not enter physical strain. |
P1R-08, P1R-10 |
| Strain rows | Current B matrix is an 8-row engineering shell split, not the documented convected covariant strain vector [eps_11, eps_22, eps_33, gamma_23, gamma_13, gamma_12]. |
P1R-08 |
| MITC shear tying | Current addStandardShearRow builds Cartesian-like gamma_xz/gamma_yz rows at midside derivatives, then interpolates them. The revised contract ties convected tensor components eps_13 and eps_23 from direct covariant rows at A/B/C/D. |
P1R-08 |
| Material and integration | Current code uses pre-integrated membrane, bending, and shear factors at 2 x 2 midsurface points. The revised contract requires local plane-stress matrix with shear correction, material transform as needed, and 2 x 2 x 2 Gauss integration. |
P1R-09 |
| Drilling stabilization | Current default is 1.0e-6 and the stiffness is assembled through a drilling row using E * thickness * scale. The revised contract requires 1.0e-3 * min_positive_diagonal(K_local_without_drilling) added to local gamma diagonals before transformation. |
P1R-10 |
| MITC4 tests | Existing element test only checks shape partition, stiffness symmetry, and one uniform translation. The revised contract requires director basis, rotation transform, tying-row finite difference, MITC interpolation, rigid-body, drilling, patch, and locking-sensitivity tests. | P1R-07 through P1R-11 |
Revalidate Before Reference Regression
These areas are promising but not sufficient for stored-reference credibility yet.
| Area | Required Revalidation |
|---|---|
quad_02 reference path |
quad_02.inp uses TYPE=S4, but also Part/Assembly/Instance and *Density. Step 1 must either add a normalized Phase 1-compatible derivative input or create an explicit parser compatibility plan. |
| Parser rejection policy | The parser must continue rejecting S4R, Part/Assembly/Instance, *Density, *Include, pressure loads, nonzero prescribed displacement, and NLGEOM=YES unless a later contract changes the subset. |
| Singular diagnostics | Existing diagnostics cover some conditions, but untouched free DOFs, rotational/drilling risks, invalid element geometry, non-positive thickness paths, and solver zero-pivot messages need stronger coverage. |
| Reaction output | Full-vector reaction recovery exists, but RF should remain verified by equilibrium tests until user-provided Abaqus reaction CSV artifacts are available. |
| Assembly and solver boundary | Current dense matrix and Gaussian solver are acceptable for deterministic tests, but the architecture requires a future sparse/MKL adapter boundary and int64 sparse path. |
Deferred Or Out Of Scope
- Abaqus
S4R, reduced integration, and hourglass control. Part/Assembly/Instancesupport unless Step 1 or a later parser contract explicitly adds it.*Densityas material support for Phase 1 static analysis.NLGEOM=YES, geometric nonlinearity, pressure loads, RBE2/RBE3, nonzero prescribed displacements, dynamics, heat transfer, composite sections, stress/strain/resultant outputs, and mesh quality diagnostics.- Tuning drilling stiffness to match one reference case.
Step Handoff
Proceed to P1R-01 reference onboarding.
P1R-01 must decide the quad_02 compatibility path without silently expanding parser support. P1R-02 can proceed in parallel afterward for core harness guardrails, but production MITC4 work should wait until the reference and guardrail foundations are explicit.