feat: implement phase 1 solver baseline
This commit is contained in:
@@ -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
|
||||
Execute the generated Phase 1 harness plan for a reference-verified linear static MITC4 shell solver using the documented architecture, numerical conventions, Abaqus input subset, HDF5 result schema, and stored reference artifacts.
|
||||
Resolve the remaining Phase 1 reference-artifact blockers after the P1-01 through P1-14 implementation pass: add Phase 1-compatible Abaqus `TYPE=S4` displacement references and decide the first RF reference path.
|
||||
|
||||
## Required Reading For New Agents
|
||||
1. `AGENTS.md`
|
||||
@@ -37,16 +37,11 @@ Execute the generated Phase 1 harness plan for a reference-verified linear stati
|
||||
- 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: blocked at P1-15 because no Phase 1-compatible Abaqus `TYPE=S4` reference input and matching displacement CSV are available yet.
|
||||
|
||||
## Phase 1 Readiness Tasks
|
||||
| ID | Status | Owner | Task | Source |
|
||||
|---|---|---|---|---|
|
||||
| R-004 | pending | MITC4 formulation agent | Finalize MITC4 transverse shear tying-point equations. | `docs/MITC4_FORMULATION.md` |
|
||||
| R-005 | pending | MITC4 formulation agent | Finalize MITC4 local shell basis algorithm for flat and non-flat quads. | `docs/MITC4_FORMULATION.md`, `docs/NUMERICAL_CONVENTIONS.md` |
|
||||
| R-006 | pending | MITC4 formulation agent | Finalize default artificial drilling stiffness scale and parameter name. | `docs/MITC4_FORMULATION.md` |
|
||||
| R-007 | pending | user + architecture agent | Decide whether Phase 1 outputs only `U` and `RF`, or also `S`, `E`, and `SF`. | `docs/RESULTS_SCHEMA.md`, `docs/MITC4_FORMULATION.md` |
|
||||
| R-008 | pending | user + phase planner | Decide build system; CMake is recommended unless project constraints say otherwise. | `README.md`, `docs/README.md` |
|
||||
| R-009 | pending | verification agent | Define and implement the automated loader/comparator contract for `references/*_displacements.csv`. | `docs/VERIFICATION_PLAN.md`, `docs/RESULTS_SCHEMA.md` |
|
||||
| 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 | pending | user + Abaqus compatibility agent | Add at least one Phase 1-compatible Abaqus `TYPE=S4` input case; keep `quad_01.inp` as stored S4R/NLGEOM reference provenance until S4R/nonlinear support is intentionally added. | `docs/ABAQUS_INPUT_SUBSET.md`, `docs/VERIFICATION_PLAN.md` |
|
||||
|
||||
@@ -75,34 +70,20 @@ Each gate should be satisfied before moving to the next implementation band unle
|
||||
|
||||
| Gate | Status | Requirement | Evidence |
|
||||
|---|---|---|---|
|
||||
| G0 - Planning readiness | pending | Readiness tasks R-004 through R-011 are completed or explicitly deferred. | Updated docs, PLAN.md, PROGRESS.md |
|
||||
| G1 - Build and validation | pending | Build system, test framework, and `scripts/validate_workspace.py` run real checks. | Validation command output |
|
||||
| G2 - Parser and domain | pending | Phase 1 `.inp` subset parses into `Domain`; unsupported features fail clearly. | Parser tests and diagnostics tests |
|
||||
| G3 - DOF/math/results infrastructure | pending | Core types, DofManager, sparse math adapters, minimal results writer, and CSV comparator are tested. | Unit tests and schema/comparator tests |
|
||||
| G4 - MITC4 element readiness | pending | MITC4 formulation open decisions are closed and element-level tests pass. | Updated formulation doc and element tests |
|
||||
| G5 - End-to-end solver | pending | Linear static path writes `U`/`RF` and passes stored-reference and negative tests. | Integration/reference regression output |
|
||||
| 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 | satisfied | MITC4 formulation open decisions are closed and element-level tests pass. | Updated formulation doc and element tests |
|
||||
| G5 - End-to-end solver | partial | Linear static path writes `U`/`RF`; stored Phase 1-compatible Abaqus reference regression is blocked by missing artifacts. | 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-01 | pending | build/system generator | Establish C++ project skeleton, build system, test framework, and validation script integration. | R-008 | `python scripts/validate_workspace.py` runs build/test checks |
|
||||
| P1-02 | pending | core generator | Add core numeric/id types, DOF enum, diagnostics primitives, and logging/error result conventions. | P1-01 | Tests for int64 aliases, DOF mapping, diagnostic payloads |
|
||||
| P1-03 | pending | domain generator | Implement immutable-ish `Domain` entities: nodes, elements, sets, materials, shell properties, loads, boundaries, steps. | P1-02 | Tests for construction, lookup, duplicate ids, label preservation |
|
||||
| P1-04 | pending | parser generator | Implement Abaqus lexical/keyword parser foundation and Phase 1 object factories/registries. | P1-03 | Parser smoke tests for supported keywords and line-numbered diagnostics |
|
||||
| P1-05 | pending | parser generator | Complete `*Nset`, `*Elset`, material, shell section, boundary, cload, step/static/end-step subset behavior. | P1-04 | Supported subset tests; reject `S4R`, `NLGEOM=YES`, Part/Assembly/Instance |
|
||||
| P1-06 | pending | validation generator | Implement domain validation and singular-prone pre-solve diagnostics. | P1-05 | Missing node/set/material/property/load/BC diagnostics and no-active-element tests |
|
||||
| P1-07 | pending | dof generator | Implement `AnalysisModelBuilder` and `DofManager` for 6-DOF nodes, constrained/free mapping, equation numbering, sparse pattern input, and full/reduced reconstruction. | P1-06 | Exact mapping tests, constrained elimination tests, reconstruction tests |
|
||||
| P1-08 | pending | math generator | Implement vector/sparse matrix/linear solver interfaces and a deterministic test solver adapter. | P1-07 | Sparse pattern tests, reduced-system solve tests, no MKL leakage into core APIs |
|
||||
| P1-09 | pending | results generator | Implement minimal result model and writer boundary for `U` and `RF` step/frame/field outputs. | P1-07, P1-08 | Schema tests for ids, component labels, frame metadata, int64/double storage |
|
||||
| P1-10 | pending | verification generator | Implement `references/*_displacements.csv` loader and comparator for FESA `U` output. | P1-09, R-009 | Column validation, node-id matching, abs/rel tolerance tests |
|
||||
| P1-11 | pending | MITC4 formulation agent | Finalize MITC4 transverse shear tying points, local basis, integration ordering, drilling stiffness default, and Phase 1 output scope. | R-004, R-005, R-006, R-007 | `docs/MITC4_FORMULATION.md` updated and reviewed |
|
||||
| P1-12 | pending | element generator | Implement MITC4 shape functions, local basis utility, element stiffness skeleton, and drilling stiffness parameter path. | P1-11, P1-08 | Shape function, derivative, 24x24 dimension, symmetry, rigid body, drilling sensitivity tests |
|
||||
| P1-13 | pending | assembly generator | Implement assembly of element stiffness/load contributions into full and reduced system data while preserving full-space data for reactions. | P1-12, P1-07, P1-08 | Assembly tests and full-vector reaction recovery test |
|
||||
| P1-14 | pending | analysis generator | Implement `LinearStaticAnalysis` Template Method path: build model, DOFs, sparse pattern, assemble, constrain, solve, update state, write results. | P1-09, P1-13 | End-to-end small model test with `U` and `RF` |
|
||||
| P1-15 | pending | 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 | pending | 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 |
|
||||
| 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 |
|
||||
|
||||
## Phase 1 Sprint Contract Rules
|
||||
Every implementation milestone above must be decomposed into one or more contracts before code changes begin.
|
||||
@@ -135,7 +116,6 @@ Current reference state:
|
||||
|
||||
Required reference additions or decisions:
|
||||
- Add at least one Phase 1-compatible `TYPE=S4` linear static `.inp` case.
|
||||
- Decide first `quad_01_displacements.csv` tolerance for comparator testing.
|
||||
- Add `*_reactions.csv` or explicitly use internal equilibrium tests for Phase 1 `RF` until Abaqus RF output is available.
|
||||
- Add more small cases until Phase 1 can pass one single-element case, one simple multi-element plate/shell case, and one curved shell benchmark.
|
||||
|
||||
@@ -164,8 +144,4 @@ Required reference additions or decisions:
|
||||
|
||||
## Open Questions
|
||||
- Which Abaqus version will generate reference artifacts?
|
||||
- What is the default drilling stiffness scale?
|
||||
- Which MITC4 stress/strain/resultant outputs are mandatory in Phase 1?
|
||||
- Should CMake be adopted as the first build system?
|
||||
- What tolerance should be used for the first `quad_01_displacements.csv` comparison?
|
||||
- Will Phase 1 `RF` be checked from Abaqus reaction CSV or from internal equilibrium tests first?
|
||||
|
||||
Reference in New Issue
Block a user