diff --git a/PLAN.md b/PLAN.md index 3a19894..0108948 100644 --- a/PLAN.md +++ b/PLAN.md @@ -13,7 +13,7 @@ Every new agent session must read this file together with `PROGRESS.md` before p - If an item becomes obsolete, move it to `PROGRESS.md` with a short reason instead of silently deleting it. ## Current Objective -Rebaseline Phase 1 before any more implementation: use the revised `docs/MITC4_FORMULATION.md` as the MITC4 gate, decide how `references/quad_02.inp` should be handled despite its `Part/Assembly/Instance` structure, and draft new sprint contracts before reworking the solver. +Execute the new Phase 1 rebaseline plan in `phases/1-linear-static-mitc4-rebaseline`. The old `phases/1-linear-static-mitc4` path is historical and superseded by the paper-based MITC4 formulation reset. ## Required Reading For New Agents 1. `AGENTS.md` @@ -30,21 +30,23 @@ Rebaseline Phase 1 before any more implementation: use the revised `docs/MITC4_F 12. `docs/RESULTS_SCHEMA.md` 13. `docs/MITC4_FORMULATION.md` 14. `phases/index.json` -15. `phases/1-linear-static-mitc4/index.json` +15. `phases/1-linear-static-mitc4-rebaseline/index.json` +16. `phases/1-linear-static-mitc4/index.json` for historical context only ## Active Phase Files -- Phase directory: `phases/1-linear-static-mitc4` -- Execute with: `python scripts/execute.py 1-linear-static-mitc4` -- Step numbering is zero-based for the harness: `step0.md` corresponds to milestone P1-01, and `step15.md` corresponds to milestone P1-16. -- Every step file contains a sprint contract with objective, scope, allowed files, tests-first plan, reference-artifact policy, evaluator checklist, acceptance command, and handoff requirements. -- Current phase status: rebaseline required. Do not resume the old P1-15/P1-16 path until new contracts are drafted against the revised MITC4 formulation and the `quad_02` compatibility decision. +- Active phase directory: `phases/1-linear-static-mitc4-rebaseline` +- Execute with: `python scripts/execute.py 1-linear-static-mitc4-rebaseline` +- Step numbering is zero-based. `step0.md` starts with a rebaseline audit, and `step15.md` is the independent evaluator closeout. +- Every step file contains a sprint contract with objective, required reading, scope, allowed files, explicit non-goals, tests to write first, reference artifacts, acceptance command, evaluator checklist, and handoff requirements. +- Historical phase directory: `phases/1-linear-static-mitc4` +- Historical phase status: blocked/superseded. Do not resume the old P1-15/P1-16 path unless the user explicitly requests recovery of that exact phase. ## Phase 1 Readiness Tasks | ID | Status | Owner | Task | Source | |---|---|---|---|---| | R-010 | pending | user + verification agent | Add or define reaction-force reference artifacts, preferably `*_reactions.csv`, or decide that Phase 1 `RF` is verified by equilibrium tests until Abaqus RF CSV is available. | `docs/VERIFICATION_PLAN.md`, `docs/RESULTS_SCHEMA.md` | -| R-011 | partial | user + Abaqus compatibility agent | Review `references/quad_02.inp` and `references/quad_02_displacements.csv`: `TYPE=S4` is now available, but the input includes `Part/Assembly/Instance`, so decide whether to normalize the file into the current flat keyword subset or add a dedicated parser sprint. | `docs/ABAQUS_INPUT_SUBSET.md`, `docs/VERIFICATION_PLAN.md`, `docs/MITC4_FORMULATION.md` | -| R-012 | pending | planner + evaluator | Draft a Phase 1 redo plan and step contracts that replace or supersede the old P1-01 through P1-16 implementation path where it conflicts with the revised MITC4 formulation. | `docs/HARNESS_ENGINEERING.md`, `docs/MITC4_FORMULATION.md` | +| R-011 | partial | generator + Abaqus compatibility evaluator | Resolve through rebaseline step 1: review `references/quad_02.inp` and `references/quad_02_displacements.csv`; either add a normalized Phase 1-compatible derivative input or create an explicit parser compatibility plan. | `phases/1-linear-static-mitc4-rebaseline/step1.md`, `docs/ABAQUS_INPUT_SUBSET.md`, `docs/VERIFICATION_PLAN.md` | +| R-013 | pending | user + verification agent | Add enough additional small Abaqus S4 reference cases for the PRD target of three stored Phase 1 references: one single-element case, one simple multi-element plate/shell case, and one curved shell benchmark. | `docs/PRD.md`, `docs/VERIFICATION_PLAN.md` | ## Phase 1 Definition Of Done Phase 1 is complete only when FESA can run a documented linear static MITC4 workflow from input to verified results without requiring Abaqus execution. @@ -73,18 +75,32 @@ Each gate should be satisfied before moving to the next implementation band unle |---|---|---|---| | G0 - Planning readiness | partial | Readiness tasks R-010 and R-011 remain open; earlier formulation/build/comparator blockers are resolved. | Updated docs, PLAN.md, PROGRESS.md | | G1 - Build and validation | satisfied | Build system, test framework, and `scripts/validate_workspace.py` run real checks. | Validation command output | -| G2 - Parser and domain | satisfied | Phase 1 `.inp` subset parses into `Domain`; unsupported features fail clearly. | Parser tests and diagnostics tests | -| G3 - DOF/math/results infrastructure | satisfied | Core types, DofManager, sparse math adapters, minimal results writer, and CSV comparator are tested. | Unit tests and schema/comparator tests | -| G4 - MITC4 element readiness | reopened | MITC4 formulation was rewritten from local papers; the existing element tests must be reassessed and expanded before implementation is trusted. | Revised `docs/MITC4_FORMULATION.md`, future element tests | -| G5 - End-to-end solver | reopened | Linear static path must be revalidated after the MITC4 rebuild and after the `quad_02` compatibility path is decided. | Future integration/reference regression output | +| G2 - Parser and domain | pending rebaseline | Must be revalidated through steps 3 and 4 against the current parser subset and stored-reference compatibility policy. | Future parser and validation tests | +| G3 - DOF/math/results infrastructure | pending rebaseline | Must be revalidated through steps 2, 5, 6, and 12. | Future unit and integration tests | +| G4 - MITC4 element readiness | reopened | MITC4 formulation was rewritten from local papers; element implementation must be rebuilt or revalidated through steps 7 through 11. | Revised `docs/MITC4_FORMULATION.md`, future element tests | +| G5 - End-to-end solver | reopened | Linear static path must be revalidated through steps 13 and 14 after the MITC4 rebuild and `quad_02` compatibility path. | Future integration/reference regression output | ## Phase 1 Implementation Milestones All milestones are intended to become one or more self-contained sprint contracts or `phases/{phase}/stepN.md` files. Each sprint must follow `docs/HARNESS_ENGINEERING.md` and be evaluated independently. | ID | Status | Owner | Objective | Depends On | Acceptance Focus | |---|---|---|---|---|---| -| P1-15 | blocked | verification generator | Add stored-reference regression suite using accepted Phase 1-compatible cases and `quad_01` compatibility notes. | P1-10, P1-14, R-011 | At least one displacement CSV comparison; unsupported `quad_01.inp` is not treated as Phase 1 support | -| P1-16 | blocked | evaluator | Run full Phase 1 evaluator pass and close documentation/handoff gaps. | P1-15 | Harness evaluator report, updated PROGRESS.md, remaining Phase 2 items recorded in PLAN.md | +| P1R-00 | pending | planner | Audit old Phase 1 implementation against the revised MITC4 formulation and map retain/rewrite/delete decisions. | none | Audit artifact or synchronized PLAN/PROGRESS | +| P1R-01 | pending | reference generator | Onboard `quad_02` as stored S4 reference and choose normalized-input or parser-compatibility path. | P1R-00 | Original artifacts preserved; compatibility explicit | +| P1R-02 | pending | core generator | Revalidate build/test harness, core aliases, DOF enum, and diagnostics. | P1R-00 | Validation command and core tests | +| P1R-03 | pending | parser generator | Revalidate Phase 1 parser and immutable Domain subset. | P1R-01, P1R-02 | Supported keywords accepted; unsupported features rejected | +| P1R-04 | pending | validation generator | Rebuild validation and singular diagnostic coverage. | P1R-03 | Missing-reference and singular-prone negative tests | +| P1R-05 | pending | DOF generator | Rebuild six-DOF DofManager, constrained/free mapping, equation numbering, and full-vector reconstruction. | P1R-02 | DOF mapping and reaction foundation tests | +| P1R-06 | pending | results generator | Rebuild minimum results model and displacement CSV comparator. | P1R-02, P1R-01 | U/RF schema tests and CSV comparator tests | +| P1R-07 | pending | MITC4 generator | Implement MITC4 geometry, node order, tying points, directors, and local bases. | P1R-02 | Shape/basis/diagnostic tests | +| P1R-08 | pending | MITC4 generator | Implement degenerated-continuum displacement, covariant strain rows, and MITC shear tying. | P1R-07 | Finite-difference and tying interpolation tests | +| P1R-09 | pending | MITC4 generator | Implement material matrix, transform, and `2 x 2 x 2` integration scaffolding. | P1R-08 | Material/integration tests | +| P1R-10 | pending | MITC4 generator | Assemble MITC4 stiffness/internal force with six-DOF transform and drilling stabilization. | P1R-09, P1R-05 | Symmetry, rigid body, drilling sensitivity tests | +| P1R-11 | pending | verification generator | Add MITC4 patch, locking-sensitivity, and benchmark tests. | P1R-10 | Membrane/bending/shear/twist/locking tests | +| P1R-12 | pending | assembly generator | Rebuild assembly, solver adapter boundary, constrained solve, and full-vector RF recovery. | P1R-05, P1R-10 | Assembly and full-vector reaction tests | +| P1R-13 | pending | analysis generator | Rebuild linear static workflow from input to U/RF result fields. | P1R-03, P1R-04, P1R-06, P1R-12 | End-to-end linear static tests | +| P1R-14 | pending | reference generator | Run stored reference displacement regression using accepted Phase 1-compatible S4 cases. | P1R-13, P1R-01 | At least one automated CSV displacement regression | +| P1R-15 | pending | evaluator | Independent Phase 1 evaluator closeout. | P1R-14 | Pass/fail report, synchronized PLAN/PROGRESS | ## Phase 1 Sprint Contract Rules Every implementation milestone above must be decomposed into one or more contracts before code changes begin. @@ -134,7 +150,7 @@ Required reference additions or decisions: - Do not treat a passing build as Phase 1 validation without parser, DOF, reference, and singular negative tests. ## Current Non-Goals -- Do not implement solver code before readiness tasks are addressed. +- Do not implement solver code outside the matching rebaseline sprint contract. - Do not require Abaqus execution locally or in CI. - Do not add mesh quality diagnostics in Phase 1. - Do not support Abaqus `S4R` in Phase 1. diff --git a/PROGRESS.md b/PROGRESS.md index 5ffc7a5..d3735c7 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -13,10 +13,51 @@ Every new agent session must read this file together with `PLAN.md` before plann - Do not remove history unless the user explicitly asks for archival cleanup. ## Current Status -Phase 1 is being rebaselined before more implementation. P1-01 through P1-14 have an initial C++17 implementation, but it is no longer authoritative until reviewed against the revised paper-based `docs/MITC4_FORMULATION.md`. The user added `quad_02.inp` and `quad_02_displacements.csv`; `quad_02` uses `TYPE=S4`, but still includes `Part/Assembly/Instance` and `*Density`, so the next planner must decide whether to normalize it or add a dedicated parser compatibility sprint. +Phase 1 has a new rebaseline phase definition in `phases/1-linear-static-mitc4-rebaseline`. The old `phases/1-linear-static-mitc4` path is historical and superseded after the MITC4 formulation reset. P1-01 through P1-14 have an initial C++17 implementation, but it is no longer authoritative until reviewed against the revised paper-based `docs/MITC4_FORMULATION.md`. `quad_02` is now the stored S4 reference pair, but its `Part/Assembly/Instance` and `*Density` features remain a compatibility decision for rebaseline step 1. ## Completed Work +### 2026-05-04 - Phase 1 rebaseline steps redefined +Author: Codex + +Changed files: +- `phases/index.json` +- `phases/1-linear-static-mitc4-rebaseline/index.json` +- `phases/1-linear-static-mitc4-rebaseline/step0.md` +- `phases/1-linear-static-mitc4-rebaseline/step1.md` +- `phases/1-linear-static-mitc4-rebaseline/step2.md` +- `phases/1-linear-static-mitc4-rebaseline/step3.md` +- `phases/1-linear-static-mitc4-rebaseline/step4.md` +- `phases/1-linear-static-mitc4-rebaseline/step5.md` +- `phases/1-linear-static-mitc4-rebaseline/step6.md` +- `phases/1-linear-static-mitc4-rebaseline/step7.md` +- `phases/1-linear-static-mitc4-rebaseline/step8.md` +- `phases/1-linear-static-mitc4-rebaseline/step9.md` +- `phases/1-linear-static-mitc4-rebaseline/step10.md` +- `phases/1-linear-static-mitc4-rebaseline/step11.md` +- `phases/1-linear-static-mitc4-rebaseline/step12.md` +- `phases/1-linear-static-mitc4-rebaseline/step13.md` +- `phases/1-linear-static-mitc4-rebaseline/step14.md` +- `phases/1-linear-static-mitc4-rebaseline/step15.md` +- `PLAN.md` +- `PROGRESS.md` + +Summary: +- Added a new 16-step Phase 1 rebaseline phase that supersedes the old Phase 1 execution path while preserving the old phase as historical record. +- Split the redo into audit, reference onboarding, core guardrails, parser/domain, validation diagnostics, DOF/reaction foundation, results/comparator, MITC4 geometry, MITC4 covariant strain tying, material/integration, stiffness/drilling, patch benchmarks, assembly, linear static workflow, stored-reference regression, and evaluator closeout. +- Updated `PLAN.md` so new agents execute `phases/1-linear-static-mitc4-rebaseline` and treat the old `1-linear-static-mitc4` phase as blocked/superseded. +- Kept unresolved decisions visible: `quad_02` normalization versus explicit parser compatibility sprint, RF CSV availability, and the PRD target of three stored Phase 1 reference cases. + +Verification: +- Parsed `phases/index.json` and `phases/1-linear-static-mitc4-rebaseline/index.json` with PowerShell `ConvertFrom-Json`. +- Verified all 16 rebaseline step files contain the required sprint contract sections from `docs/HARNESS_ENGINEERING.md`. +- `python scripts/validate_workspace.py` configured CMake, built `fesa_core` and `fesa_tests`, and ran CTest successfully. +- CTest result: 1 test executable passed. + +Follow-up: +- Start with `python scripts/execute.py 1-linear-static-mitc4-rebaseline` when ready. +- Step 1 must resolve how to use `quad_02` without silently expanding parser support. + ### 2026-05-04 - MITC4 formulation reset from local papers Author: Codex diff --git a/phases/1-linear-static-mitc4-rebaseline/index.json b/phases/1-linear-static-mitc4-rebaseline/index.json new file mode 100644 index 0000000..681c768 --- /dev/null +++ b/phases/1-linear-static-mitc4-rebaseline/index.json @@ -0,0 +1,22 @@ +{ + "project": "FESA", + "phase": "1-linear-static-mitc4-rebaseline", + "steps": [ + { "step": 0, "name": "rebaseline-audit", "status": "pending" }, + { "step": 1, "name": "reference-onboarding", "status": "pending" }, + { "step": 2, "name": "core-harness-guardrails", "status": "pending" }, + { "step": 3, "name": "parser-domain-subset", "status": "pending" }, + { "step": 4, "name": "validation-singular-diagnostics", "status": "pending" }, + { "step": 5, "name": "dof-manager-reaction-foundation", "status": "pending" }, + { "step": 6, "name": "results-comparator-foundation", "status": "pending" }, + { "step": 7, "name": "mitc4-geometry-directors", "status": "pending" }, + { "step": 8, "name": "mitc4-covariant-strain-tying", "status": "pending" }, + { "step": 9, "name": "mitc4-material-integration", "status": "pending" }, + { "step": 10, "name": "mitc4-stiffness-drilling", "status": "pending" }, + { "step": 11, "name": "mitc4-patch-benchmark-tests", "status": "pending" }, + { "step": 12, "name": "assembly-sparse-solver-path", "status": "pending" }, + { "step": 13, "name": "linear-static-workflow", "status": "pending" }, + { "step": 14, "name": "stored-reference-regression", "status": "pending" }, + { "step": 15, "name": "phase1-evaluator-closeout", "status": "pending" } + ] +} diff --git a/phases/1-linear-static-mitc4-rebaseline/step0.md b/phases/1-linear-static-mitc4-rebaseline/step0.md new file mode 100644 index 0000000..c9916e1 --- /dev/null +++ b/phases/1-linear-static-mitc4-rebaseline/step0.md @@ -0,0 +1,59 @@ +# Sprint Contract: Rebaseline Audit + +## Objective +Audit the existing Phase 1 implementation against the paper-based `docs/MITC4_FORMULATION.md` and produce a concrete rework map before changing solver behavior. + +## Required Reading +- /AGENTS.md +- /PROGRESS.md +- /PLAN.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/index.json + +## Scope +- Inspect existing C++ implementation and tests only enough to classify what can be retained, rewritten, or deleted in later steps. +- Produce or update planning notes in `PLAN.md` and `PROGRESS.md`. +- If useful, add a short audit artifact under `phases/1-linear-static-mitc4-rebaseline/`. + +## Allowed Files +- `PLAN.md` +- `PROGRESS.md` +- `phases/1-linear-static-mitc4-rebaseline/` + +## Explicit Non-Goals +- Do not change production C++ behavior. +- Do not rewrite MITC4 formulas. +- Do not unblock stored-reference regression by accepting unsupported Abaqus syntax. + +## Tests To Write First +- None. This is a planning and audit sprint. + +## Reference Artifacts +- `references/quad_01.inp` +- `references/quad_01_displacements.csv` +- `references/quad_02.inp` +- `references/quad_02_displacements.csv` + +## Acceptance Commands +```bash +python scripts/validate_workspace.py +``` + +## Evaluator Checklist +- The audit identifies conflicts with `docs/MITC4_FORMULATION.md`, especially old averaged-edge basis, `1.0e-6` drilling scale, analytic thickness integration, and direct shear evaluation risks. +- Future work is assigned to later rebaseline steps instead of being fixed here. +- `PLAN.md` and `PROGRESS.md` describe the new state without treating the old P1-01 through P1-14 implementation as authoritative. + +## Handoff Requirements +- Record completed audit work in `PROGRESS.md`. +- Keep next implementation tasks in `PLAN.md` or later step files. + +## Do Not +- Do not merge this audit with implementation. +- Do not remove old phase history. diff --git a/phases/1-linear-static-mitc4-rebaseline/step1.md b/phases/1-linear-static-mitc4-rebaseline/step1.md new file mode 100644 index 0000000..e0892e2 --- /dev/null +++ b/phases/1-linear-static-mitc4-rebaseline/step1.md @@ -0,0 +1,61 @@ +# Sprint Contract: Reference Onboarding + +## Objective +Create a Phase 1 reference path for `quad_02` without modifying the original Abaqus artifact or silently expanding parser support. + +## Required Reading +- /AGENTS.md +- /PROGRESS.md +- /PLAN.md +- /docs/ABAQUS_INPUT_SUBSET.md +- /docs/VERIFICATION_PLAN.md +- /docs/RESULTS_SCHEMA.md +- /docs/MITC4_FORMULATION.md +- /references/quad_02.inp +- /references/quad_02_displacements.csv + +## Scope +- Inspect `quad_02` and document its supported and unsupported features. +- Add a normalized Phase 1-compatible derivative input if selected by the planner, keeping the original `quad_02.inp` unchanged. +- Add notes or manifest metadata for unit system, source solver, expected outputs, and tolerances. + +## Allowed Files +- `references/` +- `docs/ABAQUS_INPUT_SUBSET.md` +- `docs/VERIFICATION_PLAN.md` +- `PLAN.md` +- `PROGRESS.md` +- `tests/` only for reference artifact parsing/comparator tests + +## Explicit Non-Goals +- Do not implement `Part`, `Assembly`, or `Instance` parser support in this step unless this contract is revised first. +- Do not edit `references/quad_02.inp` or `references/quad_02_displacements.csv`. +- Do not compare solver displacements until the MITC4 rebuild and end-to-end workflow are complete. + +## Tests To Write First +- Test that original `quad_02.inp` is recognized as stored provenance with unsupported `Part/Assembly/Instance`. +- If a normalized input is added, test that it contains only the documented Phase 1 subset. +- Test `quad_02_displacements.csv` column loading and 121-row node-label parsing. + +## Reference Artifacts +- `references/quad_02.inp` +- `references/quad_02_displacements.csv` + +## Acceptance Commands +```bash +python scripts/validate_workspace.py +``` + +## Evaluator Checklist +- Original Abaqus files are preserved. +- Any normalized derivative file has a clear name and provenance note. +- Parser scope remains aligned with `docs/ABAQUS_INPUT_SUBSET.md`. +- Tolerances and result mapping are documented before regression use. + +## Handoff Requirements +- Update `PROGRESS.md` with reference files changed or added. +- Update `PLAN.md` if parser compatibility remains blocked. + +## Do Not +- Do not treat `*Density` as material support. +- Do not allow `Part/Assembly/Instance` through the Phase 1 parser accidentally. diff --git a/phases/1-linear-static-mitc4-rebaseline/step10.md b/phases/1-linear-static-mitc4-rebaseline/step10.md new file mode 100644 index 0000000..cdc099e --- /dev/null +++ b/phases/1-linear-static-mitc4-rebaseline/step10.md @@ -0,0 +1,54 @@ +# Sprint Contract: MITC4 Stiffness Drilling + +## Objective +Assemble the MITC4 element stiffness and internal force kernel using the documented strain, material, integration, six-DOF transform, and drilling stabilization. + +## Required Reading +- /AGENTS.md +- /docs/MITC4_FORMULATION.md +- /docs/NUMERICAL_CONVENTIONS.md +- /docs/ADR.md + +## Scope +- Accumulate `K_e = integral B^T D B dV`. +- Add local drilling stabilization with `drilling_stiffness_scale = 1.0e-3`. +- Transform local element stiffness/internal force to global 24-DOF order. +- Preserve parameterization and diagnostics for drilling scale. + +## Allowed Files +- `include/` +- `src/` +- `tests/` +- `PLAN.md` +- `PROGRESS.md` + +## Explicit Non-Goals +- Do not add assembly/global solve. +- Do not tune drilling scale to match one reference case. +- Do not output stresses/resultants as mandatory fields. + +## Tests To Write First +- Stiffness dimension and symmetry tests. +- Drilling diagonal reference tests using minimum positive physical local stiffness diagonal. +- Zero/invalid reference diagonal diagnostic tests. +- Rigid body physical strain-energy tests with documented drilling effects. +- Internal force consistency test `f_int_e = K_e u_e` for linear elastic Phase 1. + +## Reference Artifacts +- None. + +## Acceptance Commands +```bash +python scripts/validate_workspace.py +``` + +## Evaluator Checklist +- Old `1.0e-6 * E * thickness` drilling rule is gone. +- Global 24-DOF ordering matches `UX,UY,UZ,RX,RY,RZ` per node. +- Stiffness remains linear elastic and symmetric. + +## Handoff Requirements +- Record element kernel readiness in `PROGRESS.md`. + +## Do Not +- Do not optimize or parallelize before element tests pass. diff --git a/phases/1-linear-static-mitc4-rebaseline/step11.md b/phases/1-linear-static-mitc4-rebaseline/step11.md new file mode 100644 index 0000000..624c518 --- /dev/null +++ b/phases/1-linear-static-mitc4-rebaseline/step11.md @@ -0,0 +1,52 @@ +# Sprint Contract: MITC4 Patch Benchmark Tests + +## Objective +Add element-level and small-mesh MITC4 patch and benchmark tests before integrating stored Abaqus references. + +## Required Reading +- /AGENTS.md +- /docs/MITC4_FORMULATION.md +- /docs/VERIFICATION_PLAN.md +- /docs/NUMERICAL_CONVENTIONS.md + +## Scope +- Add constant membrane, pure bending, pure shear, pure twist, rigid-body, and drilling sensitivity tests. +- Add a thin cantilever or plate strip test to expose shear locking. +- Add benchmark scaffolding for Scordelis-Lo after flat tests pass. + +## Allowed Files +- `tests/` +- `include/` +- `src/` only for minimal fixes required by tests +- `docs/VERIFICATION_PLAN.md` only for clarifying benchmark notes +- `PLAN.md` +- `PROGRESS.md` + +## Explicit Non-Goals +- Do not require Abaqus execution. +- Do not add pressure loads for Scordelis-Lo in Phase 1. +- Do not hide failing element behavior by loosening tolerances without rationale. + +## Tests To Write First +- The patch and benchmark tests are the sprint output; write them before any fixes. +- Include at least one negative or sensitivity test for drilling scale effects. + +## Reference Artifacts +- Local analytic or hand-check benchmark data only. +- Stored Abaqus CSV regression is reserved for step 14. + +## Acceptance Commands +```bash +python scripts/validate_workspace.py +``` + +## Evaluator Checklist +- Tests cover locking-sensitive behavior, not only shape functions. +- Tolerances are scale-aware and documented. +- Any implementation fixes remain minimal and within MITC4 scope. + +## Handoff Requirements +- Record benchmark coverage and remaining gaps in `PROGRESS.md` and `PLAN.md`. + +## Do Not +- Do not implement new load types to force a benchmark into Phase 1. diff --git a/phases/1-linear-static-mitc4-rebaseline/step12.md b/phases/1-linear-static-mitc4-rebaseline/step12.md new file mode 100644 index 0000000..fa1411d --- /dev/null +++ b/phases/1-linear-static-mitc4-rebaseline/step12.md @@ -0,0 +1,55 @@ +# Sprint Contract: Assembly Sparse Solver Path + +## Objective +Rebuild or verify full-space assembly, reduced free-DOF solve path, solver adapter boundary, and full-vector reaction recovery using the rebuilt MITC4 kernel. + +## Required Reading +- /AGENTS.md +- /docs/ARCHITECTURE.md +- /docs/ADR.md +- /docs/NUMERICAL_CONVENTIONS.md +- /docs/MITC4_FORMULATION.md + +## Scope +- Assemble global stiffness and external load vectors. +- Preserve full-space data for `RF = K_full * U_full - F_full`. +- Apply constrained DOF elimination via `DofManager`. +- Use the current deterministic test solver or adapter boundary; keep MKL behind a future adapter. + +## Allowed Files +- `include/` +- `src/` +- `tests/` +- `PLAN.md` +- `PROGRESS.md` + +## Explicit Non-Goals +- Do not expose MKL or TBB APIs directly in solver core. +- Do not compare stored Abaqus references yet. +- Do not compute reactions from reduced equations. + +## Tests To Write First +- Small assembled system tests with known displacement. +- Full-vector `RF` recovery tests. +- Constrained/free projection tests through assembly. +- Singular solve diagnostic tests. +- Sparse pattern deterministic ordering tests if sparse structure exists. + +## Reference Artifacts +- None. + +## Acceptance Commands +```bash +python scripts/validate_workspace.py +``` + +## Evaluator Checklist +- Full-space stiffness/load/displacement are available or reconstructable for reactions. +- Solver adapter boundary is preserved. +- Singular failures remain actionable. + +## Handoff Requirements +- Record assembly and reaction readiness in `PROGRESS.md`. + +## Do Not +- Do not let elements own global equation ids. diff --git a/phases/1-linear-static-mitc4-rebaseline/step13.md b/phases/1-linear-static-mitc4-rebaseline/step13.md new file mode 100644 index 0000000..7a9d7c8 --- /dev/null +++ b/phases/1-linear-static-mitc4-rebaseline/step13.md @@ -0,0 +1,56 @@ +# Sprint Contract: Linear Static Workflow + +## Objective +Rebuild or verify the full linear static workflow from parsed `Domain` to `AnalysisModel`, `AnalysisState`, solve, `U` and `RF` result fields. + +## Required Reading +- /AGENTS.md +- /docs/ARCHITECTURE.md +- /docs/ADR.md +- /docs/RESULTS_SCHEMA.md +- /docs/NUMERICAL_CONVENTIONS.md +- /docs/MITC4_FORMULATION.md + +## Scope +- Build the active `AnalysisModel` for one linear static step. +- Run the template workflow: build DOF map, assemble, apply constraints, solve, reconstruct full vectors, recover RF, write results. +- Keep `Domain` immutable and `AnalysisState` mutable. + +## Allowed Files +- `include/` +- `src/` +- `tests/` +- `PLAN.md` +- `PROGRESS.md` + +## Explicit Non-Goals +- Do not implement nonlinear, dynamic, pressure, or thermal behavior. +- Do not add multiple-step execution unless already trivial and tested. +- Do not make HDF5 dependency mandatory if the current minimal writer remains the accepted Phase 1 path. + +## Tests To Write First +- Input-to-analysis-model activation test. +- End-to-end small linear static solve with `U` and `RF`. +- Result schema field label and frame tests. +- Full-vector reaction balance test. +- Missing/unsupported input negative tests routed through the workflow. + +## Reference Artifacts +- Normalized small `.inp` fixtures may be used. +- Stored Abaqus CSV regression is reserved for step 14. + +## Acceptance Commands +```bash +python scripts/validate_workspace.py +``` + +## Evaluator Checklist +- Workflow follows architecture boundaries. +- `AnalysisState` owns mutable vectors. +- Results use documented step/frame/field structure. + +## Handoff Requirements +- Record end-to-end workflow readiness in `PROGRESS.md`. + +## Do Not +- Do not bypass validators to make a model solve. diff --git a/phases/1-linear-static-mitc4-rebaseline/step14.md b/phases/1-linear-static-mitc4-rebaseline/step14.md new file mode 100644 index 0000000..2748362 --- /dev/null +++ b/phases/1-linear-static-mitc4-rebaseline/step14.md @@ -0,0 +1,61 @@ +# Sprint Contract: Stored Reference Regression + +## Objective +Run automated stored-reference displacement regression against accepted Phase 1-compatible S4 cases, starting with the `quad_02` compatibility path chosen in step 1. + +## Required Reading +- /AGENTS.md +- /docs/VERIFICATION_PLAN.md +- /docs/ABAQUS_INPUT_SUBSET.md +- /docs/RESULTS_SCHEMA.md +- /docs/MITC4_FORMULATION.md +- /references/ + +## Scope +- Wire accepted Phase 1-compatible reference inputs into automated tests. +- Compare FESA `U` against `*_displacements.csv` using documented tolerances. +- Keep original unsupported Abaqus files as provenance and negative/compatibility tests. +- Record pass/fail comparison details. + +## Allowed Files +- `references/` +- `tests/` +- `include/` +- `src/` only for minimal fixes needed by reference regression +- `docs/VERIFICATION_PLAN.md` +- `PLAN.md` +- `PROGRESS.md` + +## Explicit Non-Goals +- Do not require Abaqus execution. +- Do not accept `S4R`, `Part/Assembly/Instance`, `*Density`, or `NLGEOM=YES` through the parser without a prior parser contract. +- Do not mark Phase 1 complete with only one reference case unless `PLAN.md` records the remaining PRD gap. + +## Tests To Write First +- Reference manifest or fixture discovery tests. +- `quad_02` accepted derivative input regression test if normalized in step 1. +- Original `quad_02.inp` unsupported-provenance test if parser scope still excludes `Part/Assembly/Instance`. +- CSV displacement comparison test with absolute and relative tolerances. + +## Reference Artifacts +- `references/quad_02.inp` +- `references/quad_02_displacements.csv` +- Any normalized Phase 1-compatible derivative files from step 1. + +## Acceptance Commands +```bash +python scripts/validate_workspace.py +``` + +## Evaluator Checklist +- Regression uses stored artifacts only. +- Original reference provenance is preserved. +- Comparison is node-id-based and reports errors clearly. +- Remaining PRD requirement for three stored references is recorded if not satisfied. + +## Handoff Requirements +- Record reference pass/fail, tolerances, and residual risks in `PROGRESS.md`. +- Update `PLAN.md` with additional reference cases still needed. + +## Do Not +- Do not tune solver formulas to one CSV without element-level tests remaining green. diff --git a/phases/1-linear-static-mitc4-rebaseline/step15.md b/phases/1-linear-static-mitc4-rebaseline/step15.md new file mode 100644 index 0000000..2d9eeb8 --- /dev/null +++ b/phases/1-linear-static-mitc4-rebaseline/step15.md @@ -0,0 +1,65 @@ +# Sprint Contract: Phase 1 Evaluator Closeout + +## Objective +Perform an independent Phase 1 evaluation against the rebaseline contracts, docs, tests, reference artifacts, and validation commands. + +## Required Reading +- /AGENTS.md +- /PROGRESS.md +- /PLAN.md +- /docs/README.md +- /docs/HARNESS_ENGINEERING.md +- /docs/PRD.md +- /docs/ARCHITECTURE.md +- /docs/ADR.md +- /docs/NUMERICAL_CONVENTIONS.md +- /docs/ABAQUS_INPUT_SUBSET.md +- /docs/VERIFICATION_PLAN.md +- /docs/RESULTS_SCHEMA.md +- /docs/MITC4_FORMULATION.md +- /phases/1-linear-static-mitc4-rebaseline/index.json + +## Scope +- Review all completed rebaseline steps. +- Run validation. +- Produce pass/fail findings. +- Update phase status, `PLAN.md`, and `PROGRESS.md` with final Phase 1 state. + +## Allowed Files +- `PLAN.md` +- `PROGRESS.md` +- `phases/index.json` +- `phases/1-linear-static-mitc4-rebaseline/index.json` +- Optional evaluator feedback artifact under `phases/1-linear-static-mitc4-rebaseline/` + +## Explicit Non-Goals +- Do not implement missing solver behavior during evaluation. +- Do not approve unresolved reference gaps silently. +- Do not mark old superseded phase steps as evidence for new MITC4 formulation compliance unless they were revalidated. + +## Tests To Write First +- None. This is an evaluator sprint. + +## Reference Artifacts +- All accepted Phase 1 reference artifacts under `references/`. + +## Acceptance Commands +```bash +python scripts/validate_workspace.py +``` + +## Evaluator Checklist +- All CRITICAL `AGENTS.md` rules are satisfied. +- TDD expectations are met for implementation steps. +- MITC4 implementation follows `docs/MITC4_FORMULATION.md`. +- Parser has not silently expanded unsupported Abaqus features. +- `RF` is recovered from full vectors. +- At least one stored displacement reference regression passes, and remaining PRD reference gaps are explicit. +- `PLAN.md` and `PROGRESS.md` are synchronized. + +## Handoff Requirements +- If passed, mark the rebaseline phase complete and move remaining Phase 2 or reference tasks to `PLAN.md`. +- If failed, write a concise feedback artifact with required fixes and commands to rerun. + +## Do Not +- Do not self-approve implementation without evidence from tests and reference comparisons. diff --git a/phases/1-linear-static-mitc4-rebaseline/step2.md b/phases/1-linear-static-mitc4-rebaseline/step2.md new file mode 100644 index 0000000..876db5c --- /dev/null +++ b/phases/1-linear-static-mitc4-rebaseline/step2.md @@ -0,0 +1,58 @@ +# Sprint Contract: Core Harness Guardrails + +## Objective +Refresh the build, validation, core numeric aliases, DOF enum, and diagnostic guardrails so later MITC4 work has stable test foundations. + +## Required Reading +- /AGENTS.md +- /docs/ARCHITECTURE.md +- /docs/ADR.md +- /docs/NUMERICAL_CONVENTIONS.md +- /docs/HARNESS_ENGINEERING.md +- /scripts/validate_workspace.py + +## Scope +- Preserve or repair CMake/CTest validation. +- Verify `double` and signed int64 aliases are centralized. +- Verify `UX`, `UY`, `UZ`, `RX`, `RY`, `RZ` mapping to Abaqus DOF `1..6`. +- Improve diagnostics only where needed for later steps. + +## Allowed Files +- `CMakeLists.txt` +- `include/` +- `src/` +- `tests/` +- `scripts/validate_workspace.py` +- `PLAN.md` +- `PROGRESS.md` + +## Explicit Non-Goals +- Do not implement parser features. +- Do not implement MITC4 stiffness. +- Do not introduce MKL, TBB, or HDF5 APIs into solver core. + +## Tests To Write First +- DOF enum and Abaqus DOF number mapping tests. +- Numeric alias compile-time or runtime tests for `double` and int64 paths. +- Validation script smoke test through `python scripts/validate_workspace.py`. + +## Reference Artifacts +- None. + +## Acceptance Commands +```bash +python scripts/validate_workspace.py +``` + +## Evaluator Checklist +- Core aliases and DOF mapping are not duplicated across modules. +- Diagnostics include enough context for later parser, model, and singular errors. +- Validation remains a real build plus test command. + +## Handoff Requirements +- Record changed guardrails and test coverage in `PROGRESS.md`. +- Leave future parser/MITC4 tasks in later step files. + +## Do Not +- Do not weaken validation to make tests pass. +- Do not add external library dependencies in this step. diff --git a/phases/1-linear-static-mitc4-rebaseline/step3.md b/phases/1-linear-static-mitc4-rebaseline/step3.md new file mode 100644 index 0000000..9912a7c --- /dev/null +++ b/phases/1-linear-static-mitc4-rebaseline/step3.md @@ -0,0 +1,58 @@ +# Sprint Contract: Parser Domain Subset + +## Objective +Revalidate and repair the Phase 1 Abaqus parser and `Domain` model against the documented subset while preserving strict rejection of unsupported reference features. + +## Required Reading +- /AGENTS.md +- /docs/ARCHITECTURE.md +- /docs/ADR.md +- /docs/ABAQUS_INPUT_SUBSET.md +- /docs/VERIFICATION_PLAN.md +- /docs/MITC4_FORMULATION.md + +## Scope +- Parse Phase 1 keywords into immutable `Domain` objects. +- Preserve node, element, set, material, shell section, boundary, load, and step definitions. +- Reject `S4R`, `Part/Assembly/Instance`, `*Include`, `NLGEOM=YES`, nonzero prescribed displacement, and unsupported material/section modes. + +## Allowed Files +- `include/` +- `src/` +- `tests/` +- `docs/ABAQUS_INPUT_SUBSET.md` only for clarifying parser contract +- `PLAN.md` +- `PROGRESS.md` + +## Explicit Non-Goals +- Do not implement analysis or assembly. +- Do not add `Part/Assembly/Instance` support because `quad_02` contains it. +- Do not normalize reference files in parser code. + +## Tests To Write First +- Parser acceptance tests for every Phase 1 keyword. +- Generated and explicit `*Nset` and `*Elset` tests. +- Unsupported feature rejection tests for `S4R`, `Part`, `Assembly`, `Instance`, `*Density`, and `NLGEOM=YES`. +- Line-numbered diagnostic tests for malformed numeric and DOF fields. + +## Reference Artifacts +- `references/quad_01.inp` as unsupported provenance. +- `references/quad_02.inp` as unsupported original provenance until normalized or parser scope changes. + +## Acceptance Commands +```bash +python scripts/validate_workspace.py +``` + +## Evaluator Checklist +- Parser behavior matches `docs/ABAQUS_INPUT_SUBSET.md`. +- `TYPE=S4` maps to internal MITC4. +- Unsupported stored references are not silently accepted. +- Domain objects do not own equation numbers. + +## Handoff Requirements +- Update `PROGRESS.md` with parser status. +- Update `PLAN.md` for unresolved reference compatibility work. + +## Do Not +- Do not broaden the parser subset without ADR and doc updates. diff --git a/phases/1-linear-static-mitc4-rebaseline/step4.md b/phases/1-linear-static-mitc4-rebaseline/step4.md new file mode 100644 index 0000000..b2c4093 --- /dev/null +++ b/phases/1-linear-static-mitc4-rebaseline/step4.md @@ -0,0 +1,56 @@ +# Sprint Contract: Validation Singular Diagnostics + +## Objective +Strengthen domain and analysis-model validation so invalid inputs and singular-prone models fail before or during solve with actionable diagnostics. + +## Required Reading +- /AGENTS.md +- /docs/ARCHITECTURE.md +- /docs/NUMERICAL_CONVENTIONS.md +- /docs/ABAQUS_INPUT_SUBSET.md +- /docs/VERIFICATION_PLAN.md + +## Scope +- Validate missing nodes, properties, materials, sets, boundary targets, load targets, active elements, and non-positive thickness. +- Add singular-prone diagnostics for no free DOFs, untouched free DOFs, missing loads where expected, and unconstrained drilling/rotational risks. +- Keep mesh quality diagnostics out of Phase 1. + +## Allowed Files +- `include/` +- `src/` +- `tests/` +- `PLAN.md` +- `PROGRESS.md` + +## Explicit Non-Goals +- Do not implement mesh quality metrics such as aspect ratio, skew, or warpage. +- Do not solve the global system in this step. +- Do not hide singular checks in element kernels. + +## Tests To Write First +- Missing node/property/material diagnostics. +- Missing set used by shell section, boundary, or load. +- No active elements. +- No free DOFs. +- Free DOFs untouched by any active element connectivity. +- Rotational/drilling weak-constraint diagnostic smoke test. + +## Reference Artifacts +- Negative inline test inputs may be used. + +## Acceptance Commands +```bash +python scripts/validate_workspace.py +``` + +## Evaluator Checklist +- Diagnostics include node id, element id, property id, material id, set name, DOF component, and source line where available. +- Mesh quality remains explicitly deferred. +- Validation does not mutate `Domain`. + +## Handoff Requirements +- Record validation coverage in `PROGRESS.md`. +- Note any remaining singular-diagnostic gaps in `PLAN.md`. + +## Do Not +- Do not classify poor element shape as a Phase 1 mesh quality failure. diff --git a/phases/1-linear-static-mitc4-rebaseline/step5.md b/phases/1-linear-static-mitc4-rebaseline/step5.md new file mode 100644 index 0000000..113e3e9 --- /dev/null +++ b/phases/1-linear-static-mitc4-rebaseline/step5.md @@ -0,0 +1,57 @@ +# Sprint Contract: Dof Manager Reaction Foundation + +## Objective +Rebuild or verify the six-DOF `DofManager`, constrained/free mapping, equation numbering, sparse-pattern inputs, and full-vector reconstruction needed for reaction recovery. + +## Required Reading +- /AGENTS.md +- /docs/ARCHITECTURE.md +- /docs/ADR.md +- /docs/NUMERICAL_CONVENTIONS.md +- /docs/RESULTS_SCHEMA.md + +## Scope +- Manage active six-DOF shell nodes. +- Apply fixed constraints by constrained DOF elimination. +- Own equation numbering and sparse connectivity inputs. +- Reconstruct full vectors in original global DOF order. +- Provide data needed for `RF = K_full * U_full - F_full`. + +## Allowed Files +- `include/` +- `src/` +- `tests/` +- `PLAN.md` +- `PROGRESS.md` + +## Explicit Non-Goals +- Do not assemble MITC4 stiffness. +- Do not store equation ids in `Node` or `Element`. +- Do not compute `RF` from reduced vectors only. + +## Tests To Write First +- DOF activation and Abaqus component order. +- Constrained/free partition tests. +- Equation numbering stability with noncontiguous node ids. +- Full/reduced vector reconstruction tests. +- Sparse-pattern connectivity input tests. +- Full-vector reaction formula unit test with a small known matrix. + +## Reference Artifacts +- None. + +## Acceptance Commands +```bash +python scripts/validate_workspace.py +``` + +## Evaluator Checklist +- `DofManager` owns all equation numbering. +- Full-space order is deterministic and matches `UX,UY,UZ,RX,RY,RZ`. +- Reaction foundation preserves constrained DOF information. + +## Handoff Requirements +- Record DOF and reaction foundation status in `PROGRESS.md`. + +## Do Not +- Do not bypass `DofManager` from elements or analysis code. diff --git a/phases/1-linear-static-mitc4-rebaseline/step6.md b/phases/1-linear-static-mitc4-rebaseline/step6.md new file mode 100644 index 0000000..82b42dc --- /dev/null +++ b/phases/1-linear-static-mitc4-rebaseline/step6.md @@ -0,0 +1,57 @@ +# Sprint Contract: Results Comparator Foundation + +## Objective +Rebuild or verify the minimum Phase 1 results model and Abaqus displacement CSV comparator before using stored reference regressions. + +## Required Reading +- /AGENTS.md +- /docs/RESULTS_SCHEMA.md +- /docs/VERIFICATION_PLAN.md +- /docs/NUMERICAL_CONVENTIONS.md + +## Scope +- Store minimum result model data for nodes, elements, `U`, and `RF`. +- Preserve step/frame/field structure even if HDF5 writing is deferred. +- Load Abaqus `*_displacements.csv` by node id and component label. +- Compare using absolute and relative tolerances. + +## Allowed Files +- `include/` +- `src/` +- `tests/` +- `docs/RESULTS_SCHEMA.md` only for clarifying schema text +- `docs/VERIFICATION_PLAN.md` only for clarifying tolerance/reference text +- `PLAN.md` +- `PROGRESS.md` + +## Explicit Non-Goals +- Do not make `S`, `E`, or `SF` mandatory. +- Do not require Abaqus execution. +- Do not rely on CSV row order. + +## Tests To Write First +- `U` and `RF` field component labels and basis tests. +- CSV required-header tests. +- Duplicate/missing/non-numeric node row tests. +- Node-id-based comparison tests with absolute and relative tolerance paths. +- Result frame metadata tests for Phase 1 linear static frame 0. + +## Reference Artifacts +- `references/quad_02_displacements.csv` +- `references/quad_01_displacements.csv` + +## Acceptance Commands +```bash +python scripts/validate_workspace.py +``` + +## Evaluator Checklist +- Result component order matches docs. +- Comparator maps Abaqus columns to FESA `U` labels exactly. +- `RF` exists as a result field even if Abaqus RF CSV is unavailable. + +## Handoff Requirements +- Record comparator readiness and remaining RF artifact decision in `PROGRESS.md` and `PLAN.md`. + +## Do Not +- Do not add undocumented CSV formats. diff --git a/phases/1-linear-static-mitc4-rebaseline/step7.md b/phases/1-linear-static-mitc4-rebaseline/step7.md new file mode 100644 index 0000000..ff3666d --- /dev/null +++ b/phases/1-linear-static-mitc4-rebaseline/step7.md @@ -0,0 +1,55 @@ +# Sprint Contract: MITC4 Geometry Directors + +## Objective +Implement or rebuild MITC4 shape functions, natural-coordinate node order, element-center director policy, local director axes, and integration-point local bases. + +## Required Reading +- /AGENTS.md +- /docs/MITC4_FORMULATION.md +- /docs/NUMERICAL_CONVENTIONS.md +- /docs/ADR.md + +## Scope +- Define `N1..N4` and derivatives for FESA natural coordinates. +- Define tying points `A`, `B`, `C`, and `D`. +- Build element-center director `Vn` from midsurface geometry. +- Build nodal `V1`, `V2`, `Vn` and integration local Cartesian basis. +- Add invalid/singular element diagnostics for near-zero normal, basis, Jacobian, and thickness. + +## Allowed Files +- `include/` +- `src/` +- `tests/` +- `PLAN.md` +- `PROGRESS.md` + +## Explicit Non-Goals +- Do not compute stiffness. +- Do not add Abaqus `*Orientation` or nodal normal parsing. +- Do not add mesh quality diagnostics. + +## Tests To Write First +- Shape function partition-of-unity and derivative tests. +- Node order and tying-point coordinate tests. +- Flat element normal and right-handed basis tests. +- Fallback axis tests when `EY x Vn` is near zero. +- Invalid geometry diagnostic tests. + +## Reference Artifacts +- None. + +## Acceptance Commands +```bash +python scripts/validate_workspace.py +``` + +## Evaluator Checklist +- Geometry matches `docs/MITC4_FORMULATION.md`. +- The old averaged-edge basis is not used as the binding formulation. +- No stress/strain or stiffness logic is slipped into this step. + +## Handoff Requirements +- Record MITC4 geometry readiness in `PROGRESS.md`. + +## Do Not +- Do not silently support strongly warped/nodal-director behavior beyond the documented Phase 1 policy. diff --git a/phases/1-linear-static-mitc4-rebaseline/step8.md b/phases/1-linear-static-mitc4-rebaseline/step8.md new file mode 100644 index 0000000..b26f842 --- /dev/null +++ b/phases/1-linear-static-mitc4-rebaseline/step8.md @@ -0,0 +1,54 @@ +# Sprint Contract: MITC4 Covariant Strain Tying + +## Objective +Implement or rebuild the degenerated-continuum displacement interpolation, direct covariant strain rows, and MITC transverse shear tying interpolation. + +## Required Reading +- /AGENTS.md +- /docs/MITC4_FORMULATION.md +- /docs/NUMERICAL_CONVENTIONS.md + +## Scope +- Implement five-DOF local displacement interpolation. +- Transform global rotations to local `alpha`, `beta`, and `gamma`. +- Compute direct covariant strain rows in documented internal strain order. +- Replace `eps_13` and `eps_23` with midside MITC tying interpolation. +- Add finite-difference tests for strain rows. + +## Allowed Files +- `include/` +- `src/` +- `tests/` +- `PLAN.md` +- `PROGRESS.md` + +## Explicit Non-Goals +- Do not integrate stiffness. +- Do not add material transform. +- Do not compute MITC shear from Cartesian `gamma_xz` and `gamma_yz` first. + +## Tests To Write First +- Local rotation transform tests for `alpha`, `beta`, `gamma`. +- Displacement interpolation tests at midsurface and through-thickness points. +- Direct covariant strain finite-difference tests. +- Tying-row tests at `A`, `B`, `C`, and `D`. +- Gauss-point MITC shear interpolation tests proving rows come from tying rows. + +## Reference Artifacts +- None. + +## Acceptance Commands +```bash +python scripts/validate_workspace.py +``` + +## Evaluator Checklist +- Strain vector ordering is documented or explicitly permuted. +- `gamma` does not contribute to physical continuum strain. +- FESA sign convention for `A/C/B/D` is tested. + +## Handoff Requirements +- Record strain/tying readiness in `PROGRESS.md`. + +## Do Not +- Do not reintroduce direct Gauss-point transverse shear for MITC rows. diff --git a/phases/1-linear-static-mitc4-rebaseline/step9.md b/phases/1-linear-static-mitc4-rebaseline/step9.md new file mode 100644 index 0000000..745d729 --- /dev/null +++ b/phases/1-linear-static-mitc4-rebaseline/step9.md @@ -0,0 +1,54 @@ +# Sprint Contract: MITC4 Material Integration + +## Objective +Implement or rebuild local plane-stress material behavior, shear correction, material transformation, and `2 x 2 x 2` Gauss integration scaffolding. + +## Required Reading +- /AGENTS.md +- /docs/MITC4_FORMULATION.md +- /docs/NUMERICAL_CONVENTIONS.md +- /docs/ARCHITECTURE.md + +## Scope +- Implement isotropic linear elastic shell material matrix with `sigma_33 = 0` and `kappa = 5/6`. +- Define material/strain ordering tests. +- Implement or verify convected-to-local material transformation for Phase 1 cases. +- Add `2 x 2 x 2` integration point and weight infrastructure. + +## Allowed Files +- `include/` +- `src/` +- `tests/` +- `PLAN.md` +- `PROGRESS.md` + +## Explicit Non-Goals +- Do not add composite sections. +- Do not add stress/strain output recovery as mandatory output. +- Do not switch to analytic thickness integration without equivalence tests and doc update. + +## Tests To Write First +- Isotropic matrix value tests for known `E`, `nu`, and `kappa`. +- Shear row ordering tests. +- Integration point count and weights tests. +- Flat element material transform identity/equivalence tests. +- Invalid material/thickness diagnostic tests if not covered earlier. + +## Reference Artifacts +- None. + +## Acceptance Commands +```bash +python scripts/validate_workspace.py +``` + +## Evaluator Checklist +- `2 x 2 x 2` integration is the active baseline. +- Material transform behavior is tested. +- No reduced integration or hourglass logic is introduced. + +## Handoff Requirements +- Record material and integration readiness in `PROGRESS.md`. + +## Do Not +- Do not make S4R assumptions in material or integration code. diff --git a/phases/index.json b/phases/index.json index f343c6e..432c3ed 100644 --- a/phases/index.json +++ b/phases/index.json @@ -3,7 +3,11 @@ { "dir": "1-linear-static-mitc4", "status": "blocked", - "blocked_reason": "P1-15 stored-reference regression needs at least one Phase 1-compatible Abaqus TYPE=S4 input and matching displacement CSV; quad_01 remains S4R/NLGEOM provenance only." + "blocked_reason": "Superseded by 1-linear-static-mitc4-rebaseline after the MITC4 formulation reset. Keep this phase as historical execution record; do not resume old P1-15/P1-16 without an explicit recovery decision." + }, + { + "dir": "1-linear-static-mitc4-rebaseline", + "status": "pending" } ] }