Files
FESADev/phases/1-linear-static-mitc4-rebaseline/step0-audit.md
T
2026-05-04 12:21:14 +09:00

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.md
  • PLAN.md
  • PROGRESS.md
  • docs/README.md
  • docs/HARNESS_ENGINEERING.md
  • docs/PRD.md
  • docs/ARCHITECTURE.md
  • docs/ADR.md
  • docs/NUMERICAL_CONVENTIONS.md
  • docs/MITC4_FORMULATION.md
  • phases/1-linear-static-mitc4-rebaseline/step0.md

Code Areas Inspected

  • include/fesa/fesa.hpp
  • tests/test_main.cpp
  • CMakeLists.txt
  • scripts/validate_workspace.py
  • references/quad_01.inp
  • references/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/Instance support unless Step 1 or a later parser contract explicitly adds it.
  • *Density as 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.