diff --git a/phases/index.json b/phases/index.json new file mode 100644 index 0000000..b57bdea --- /dev/null +++ b/phases/index.json @@ -0,0 +1,8 @@ +{ + "phases": [ + { + "dir": "uel-3d-euler-beam", + "status": "pending" + } + ] +} diff --git a/phases/uel-3d-euler-beam/index.json b/phases/uel-3d-euler-beam/index.json new file mode 100644 index 0000000..c48c7dc --- /dev/null +++ b/phases/uel-3d-euler-beam/index.json @@ -0,0 +1,51 @@ +{ + "project": "Abaqus User Subroutine Development", + "phase": "uel-3d-euler-beam", + "steps": [ + { + "step": 0, + "name": "requirements", + "status": "pending" + }, + { + "step": 1, + "name": "research", + "status": "pending" + }, + { + "step": 2, + "name": "formulation", + "status": "pending" + }, + { + "step": 3, + "name": "numerical-review", + "status": "pending" + }, + { + "step": 4, + "name": "interface", + "status": "pending" + }, + { + "step": 5, + "name": "test-models", + "status": "pending" + }, + { + "step": 6, + "name": "tdd-tests", + "status": "pending" + }, + { + "step": 7, + "name": "fortran-implementation", + "status": "pending" + }, + { + "step": 8, + "name": "validation-readiness", + "status": "pending" + } + ] +} diff --git a/phases/uel-3d-euler-beam/step0.md b/phases/uel-3d-euler-beam/step0.md new file mode 100644 index 0000000..eb0618d --- /dev/null +++ b/phases/uel-3d-euler-beam/step0.md @@ -0,0 +1,63 @@ +# Step 0: requirements + +## Read First + +- `/AGENTS.md` +- `/docs/ABAQUS_SUBROUTINE_AGENT_DESIGN.md` +- `/docs/PRD.md` +- `/docs/ARCHITECTURE.md` +- `/docs/ADR.md` +- `/.codex/skills/abaqus-subroutine-requirements/SKILL.md` +- `/docs/requirements/README.md` + +## Task + +Create `/docs/requirements/uel-3d-euler-beam.md` for a 3D Euler-Bernoulli beam Abaqus/Standard `UEL`. + +Use `feature_id = uel-3d-euler-beam`. Start from these harness-test assumptions and make any remaining uncertainty explicit as a requirement decision: + +- Abaqus entry point: `UEL`. +- Element type: two-node, linear elastic, small-displacement 3D Euler-Bernoulli beam. +- Degrees of freedom: 12 total, 6 per node, ordered as `U1, U2, U3, UR1, UR2, UR3` at node 1 then node 2. +- Primary implementation target: static stiffness matrix `AMATRX` and internal force contribution `RHS`. +- Excluded from the first implementation unless requirements explicitly approve them: geometric nonlinearity, shear deformation, distributed loads, damping, mass matrix, thermal strain, warping torsion, plasticity, damage, and section offset. +- Material/section properties to decide in requirements: `E`, `G` or `nu`, `A`, `Iy`, `Iz`, `J`, element orientation definition, density if mass is later required. + +The requirements document must include: + +- Scope and non-scope. +- Must/should/could requirements. +- Requirement Verification Matrix with one verification method, acceptance criterion, and tolerance or decision owner for every must requirement. +- Required no-Abaqus evidence before Fortran production source changes. +- Required external Abaqus artifact evidence before solver-result comparison. +- Explicit decision list for unresolved physics or Abaqus keyword support. + +Do not create Fortran source, tests, reference artifacts, or implementation plans in this step. + +## Tests To Write First + +- None. This is a requirements artifact step. + +## Acceptance Criteria + +```bash +python -m unittest discover -s scripts -p "test_*.py" +python scripts/validate_reference_artifacts.py +python scripts/validate_workspace.py +``` + +The step is complete only when `/docs/requirements/uel-3d-euler-beam.md` exists and every must requirement has measurable verification. + +## Validation Notes + +- Use externally generated ODB-extracted CSV artifacts for solver-result validation evidence. +- Do not require this repository to run Abaqus analyses. +- Update `/phases/uel-3d-euler-beam/index.json` step 0 with `completed`, `error`, or `blocked` and a concrete summary or reason. + +## Forbidden + +- Do not add JavaScript/TypeScript/npm fallback. +- Do not run Abaqus analyses from this project. +- Do not generate reference CSVs. +- Do not create Fortran production source. +- Do not break existing tests. diff --git a/phases/uel-3d-euler-beam/step1.md b/phases/uel-3d-euler-beam/step1.md new file mode 100644 index 0000000..1076175 --- /dev/null +++ b/phases/uel-3d-euler-beam/step1.md @@ -0,0 +1,61 @@ +# Step 1: research + +## Read First + +- `/AGENTS.md` +- `/docs/ABAQUS_SUBROUTINE_AGENT_DESIGN.md` +- `/docs/ARCHITECTURE.md` +- `/docs/ADR.md` +- `/.codex/skills/abaqus-subroutine-research/SKILL.md` +- `/.codex/skills/fem-theory-query/SKILL.md` +- `/docs/requirements/uel-3d-euler-beam.md` +- `/docs/research/README.md` + +## Task + +Create `/docs/research/uel-3d-euler-beam-research.md`. + +Research only the evidence needed to support a two-node 3D Euler-Bernoulli beam `UEL` implementation and validation plan. Separate: + +- Source-backed facts. +- Inferences made from those facts. +- Applicability limits for this implementation. + +Cover at minimum: + +- Abaqus/Standard `UEL` responsibilities for `RHS`, `AMATRX`, `SVARS`, `ENERGY`, `NDOFEL`, `NNODE`, `MCRD`, `LFLAGS`, `PROPS`, `COORDS`, `U`, `DU`, and `JPROPS`. +- Euler-Bernoulli 3D beam stiffness matrix in local coordinates for axial, torsion, bending about local 2 and local 3 axes. +- Local-to-global transformation for two-node beam elements, including orientation-vector edge cases. +- Residual sign convention needed by Abaqus `UEL`. +- Verification benchmarks appropriate for no-Abaqus tests and external Abaqus CSV comparison. + +Prefer official Abaqus documentation and reliable FEM references. Public example repositories may be used only as learning references, not acceptance evidence, unless license/version/provenance are documented. + +Do not create or modify Fortran source, tests, reference artifacts, or implementation plans in this step. + +## Tests To Write First + +- None. This is a research artifact step. + +## Acceptance Criteria + +```bash +python -m unittest discover -s scripts -p "test_*.py" +python scripts/validate_reference_artifacts.py +python scripts/validate_workspace.py +``` + +The step is complete only when the research document cites sources and clearly marks facts, inferences, and applicability limits. + +## Validation Notes + +- Abaqus execution remains external to this repository. +- Update `/phases/uel-3d-euler-beam/index.json` step 1 with `completed`, `error`, or `blocked` and a concrete summary or reason. + +## Forbidden + +- Do not add JavaScript/TypeScript/npm fallback. +- Do not run Abaqus analyses from this project. +- Do not generate reference CSVs. +- Do not create Fortran production source. +- Do not break existing tests. diff --git a/phases/uel-3d-euler-beam/step2.md b/phases/uel-3d-euler-beam/step2.md new file mode 100644 index 0000000..aaf473b --- /dev/null +++ b/phases/uel-3d-euler-beam/step2.md @@ -0,0 +1,59 @@ +# Step 2: formulation + +## Read First + +- `/AGENTS.md` +- `/docs/ABAQUS_SUBROUTINE_AGENT_DESIGN.md` +- `/docs/ARCHITECTURE.md` +- `/docs/ADR.md` +- `/.codex/skills/abaqus-subroutine-formulation/SKILL.md` +- `/docs/requirements/uel-3d-euler-beam.md` +- `/docs/research/uel-3d-euler-beam-research.md` +- `/docs/formulations/README.md` + +## Task + +Create `/docs/formulations/uel-3d-euler-beam.md`. + +Define the implementable finite element formulation for the first 3D Euler-Bernoulli beam `UEL` scope. Include: + +- Element topology, node ordering, local axes, and DOF ordering. +- Required material and section parameters. +- Local 12x12 stiffness matrix terms for axial, torsion, bending about local 2, and bending about local 3. +- Transformation matrix from local to global coordinates and orientation-vector validation. +- Internal force/residual relation for static small-displacement analysis. +- `AMATRX` and `RHS` contribution rules by `LFLAGS` for the supported procedure subset. +- Numerical tolerances for zero length, near-parallel orientation vector, non-positive section/material properties, and matrix symmetry. +- State variable policy. If no persistent state is needed, state that `SVARS` is not used except optional diagnostics approved by requirements. +- Output recovery quantities that external CSV validation should compare. + +Do not define the full Abaqus ABI signature here unless needed to express formulation responsibilities; the interface step owns the ABI contract. + +Do not create or modify Fortran source, tests, reference artifacts, or implementation plans in this step. + +## Tests To Write First + +- None. This is a formulation artifact step. + +## Acceptance Criteria + +```bash +python -m unittest discover -s scripts -p "test_*.py" +python scripts/validate_reference_artifacts.py +python scripts/validate_workspace.py +``` + +The step is complete only when `/docs/formulations/uel-3d-euler-beam.md` has enough matrix, residual, and transformation detail for a later implementation step to code without inventing physics. + +## Validation Notes + +- Keep solver-result validation as externally generated ODB-extracted CSV evidence. +- Update `/phases/uel-3d-euler-beam/index.json` step 2 with `completed`, `error`, or `blocked` and a concrete summary or reason. + +## Forbidden + +- Do not add JavaScript/TypeScript/npm fallback. +- Do not run Abaqus analyses from this project. +- Do not generate reference CSVs. +- Do not create Fortran production source. +- Do not break existing tests. diff --git a/phases/uel-3d-euler-beam/step3.md b/phases/uel-3d-euler-beam/step3.md new file mode 100644 index 0000000..1eea3fa --- /dev/null +++ b/phases/uel-3d-euler-beam/step3.md @@ -0,0 +1,58 @@ +# Step 3: numerical-review + +## Read First + +- `/AGENTS.md` +- `/docs/ABAQUS_SUBROUTINE_AGENT_DESIGN.md` +- `/docs/ARCHITECTURE.md` +- `/docs/ADR.md` +- `/.codex/skills/abaqus-subroutine-numerical-review/SKILL.md` +- `/docs/requirements/uel-3d-euler-beam.md` +- `/docs/research/uel-3d-euler-beam-research.md` +- `/docs/formulations/uel-3d-euler-beam.md` +- `/docs/numerical-reviews/README.md` + +## Task + +Create `/docs/numerical-reviews/uel-3d-euler-beam.md`. + +Independently review the formulation before any implementation. Check: + +- Local stiffness matrix completeness, units, symmetry, and positive semidefiniteness before boundary conditions. +- Rigid-body mode count for a free two-node 3D beam. +- Correct association of `Iy`, `Iz`, local bending planes, and rotational DOFs. +- Transformation orthonormality and behavior for reversed node order. +- Residual sign convention for Abaqus `UEL`. +- Tolerance choices for degeneracy and floating-point checks. +- Patch, cantilever, axial, torsion, and orientation regression tests needed downstream. + +Record each finding as `pass`, `needs-change`, or `blocked`. If the formulation needs correction, update only the numerical review document with explicit required upstream changes and mark this phase step `blocked`; do not silently patch formulation content in this review step. + +Do not create or modify Fortran source, tests, reference artifacts, or implementation plans in this step. + +## Tests To Write First + +- None. This is a numerical review artifact step. + +## Acceptance Criteria + +```bash +python -m unittest discover -s scripts -p "test_*.py" +python scripts/validate_reference_artifacts.py +python scripts/validate_workspace.py +``` + +The step is complete only when `/docs/numerical-reviews/uel-3d-euler-beam.md` gives a clear proceed/block decision for implementation readiness. + +## Validation Notes + +- Downstream implementation must not override a blocked numerical finding. +- Update `/phases/uel-3d-euler-beam/index.json` step 3 with `completed`, `error`, or `blocked` and a concrete summary or reason. + +## Forbidden + +- Do not add JavaScript/TypeScript/npm fallback. +- Do not run Abaqus analyses from this project. +- Do not generate reference CSVs. +- Do not create Fortran production source. +- Do not break existing tests. diff --git a/phases/uel-3d-euler-beam/step4.md b/phases/uel-3d-euler-beam/step4.md new file mode 100644 index 0000000..565909d --- /dev/null +++ b/phases/uel-3d-euler-beam/step4.md @@ -0,0 +1,59 @@ +# Step 4: interface + +## Read First + +- `/AGENTS.md` +- `/docs/ABAQUS_SUBROUTINE_AGENT_DESIGN.md` +- `/docs/ARCHITECTURE.md` +- `/docs/ADR.md` +- `/.codex/skills/abaqus-subroutine-interface/SKILL.md` +- `/docs/requirements/uel-3d-euler-beam.md` +- `/docs/formulations/uel-3d-euler-beam.md` +- `/docs/numerical-reviews/uel-3d-euler-beam.md` +- `/docs/io-definitions/README.md` + +## Task + +Create `/docs/io-definitions/uel-3d-euler-beam.md`. + +Define the Abaqus `UEL` ABI and data contract for this feature. Include: + +- Exact `UEL` subroutine signature and include convention for Abaqus/Standard. +- Supported `NDOFEL`, `NNODE`, `MCRD`, `NPROPS`, `NJPROP`, and `MLVARX` assumptions. +- DOF ordering and mapping between Abaqus arrays and kernel arrays. +- `PROPS` and optional `JPROPS` schema, including units and validation rules. +- `COORDS` and orientation definition contract. +- `U`, `DU`, `V`, `A`, `TIME`, `DTIME`, `PARAMS`, `LFLAGS`, `KSTEP`, `KINC` responsibilities for supported static use. +- `RHS`, `AMATRX`, `SVARS`, `ENERGY`, and `PNEWDT` update responsibilities. +- CSV extraction schema for external solver-result validation, including required columns, units, coordinate systems, and tolerances. +- `model.inp` keyword subset expected by the reference model plan. +- Thin-wrapper boundary between Abaqus ABI code and no-Abaqus kernel code. + +Do not create or modify Fortran source, tests, reference artifacts, or implementation plans in this step. + +## Tests To Write First + +- None. This is an interface artifact step. + +## Acceptance Criteria + +```bash +python -m unittest discover -s scripts -p "test_*.py" +python scripts/validate_reference_artifacts.py +python scripts/validate_workspace.py +``` + +The step is complete only when `/docs/io-definitions/uel-3d-euler-beam.md` gives enough ABI and CSV detail for no-Abaqus tests and external artifact validation. + +## Validation Notes + +- Do not require this repository to parse ODB files. +- Update `/phases/uel-3d-euler-beam/index.json` step 4 with `completed`, `error`, or `blocked` and a concrete summary or reason. + +## Forbidden + +- Do not add JavaScript/TypeScript/npm fallback. +- Do not run Abaqus analyses from this project. +- Do not generate reference CSVs. +- Do not create Fortran production source. +- Do not break existing tests. diff --git a/phases/uel-3d-euler-beam/step5.md b/phases/uel-3d-euler-beam/step5.md new file mode 100644 index 0000000..322881b --- /dev/null +++ b/phases/uel-3d-euler-beam/step5.md @@ -0,0 +1,59 @@ +# Step 5: test-models + +## Read First + +- `/AGENTS.md` +- `/docs/ABAQUS_SUBROUTINE_AGENT_DESIGN.md` +- `/docs/ARCHITECTURE.md` +- `/docs/ADR.md` +- `/.codex/skills/abaqus-subroutine-test-models/SKILL.md` +- `/docs/requirements/uel-3d-euler-beam.md` +- `/docs/formulations/uel-3d-euler-beam.md` +- `/docs/io-definitions/uel-3d-euler-beam.md` +- `/docs/reference-models/README.md` + +## Task + +Create `/docs/reference-models/uel-3d-euler-beam.md`. + +Design the no-Abaqus test model plan and external reference artifact contract. Include: + +- No-Abaqus kernel tests for local stiffness terms, matrix symmetry, rigid-body modes, axial deformation, torsion, bending about both local axes, orientation transform, reversed node order, and invalid inputs. +- Wrapper or smoke-test strategy that verifies the Abaqus `UEL` array mapping without launching Abaqus. +- Planned `tests/fortran/manifest.json` entries and source file paths to be created in the next step. +- Expected production source layout, keeping the Abaqus wrapper thin and calculation logic testable outside Abaqus. +- External Abaqus `model.inp` reference cases to be created by a user on an Abaqus PC later. +- Required reference bundle layout under `references/uel-3d-euler-beam//`. +- Required extracted CSV files, schemas, units, coordinate systems, and tolerances. +- Required `.msg/.dat/.log/.sta` tail files and metadata provenance. + +The model plan may define draft artifact directories and metadata requirements, but must not create fake reference CSVs or claim solver evidence exists. + +Do not create or modify Fortran source or tests in this step. The next step owns test file creation and RED evidence. + +## Tests To Write First + +- None. This is a reference model and test design artifact step. + +## Acceptance Criteria + +```bash +python -m unittest discover -s scripts -p "test_*.py" +python scripts/validate_reference_artifacts.py +python scripts/validate_workspace.py +``` + +The step is complete only when `/docs/reference-models/uel-3d-euler-beam.md` names exact no-Abaqus tests, exact manifest entries, and exact external artifact contracts. + +## Validation Notes + +- Treat external Abaqus artifacts as future user-provided evidence. +- Update `/phases/uel-3d-euler-beam/index.json` step 5 with `completed`, `error`, or `blocked` and a concrete summary or reason. + +## Forbidden + +- Do not add JavaScript/TypeScript/npm fallback. +- Do not run Abaqus analyses from this project. +- Do not generate reference CSVs. +- Do not create Fortran production source. +- Do not break existing tests. diff --git a/phases/uel-3d-euler-beam/step6.md b/phases/uel-3d-euler-beam/step6.md new file mode 100644 index 0000000..5855df2 --- /dev/null +++ b/phases/uel-3d-euler-beam/step6.md @@ -0,0 +1,70 @@ +# Step 6: tdd-tests + +## Read First + +- `/AGENTS.md` +- `/docs/ABAQUS_SUBROUTINE_AGENT_DESIGN.md` +- `/docs/ARCHITECTURE.md` +- `/docs/ADR.md` +- `/.codex/skills/abaqus-fortran-tdd/SKILL.md` +- `/docs/requirements/uel-3d-euler-beam.md` +- `/docs/formulations/uel-3d-euler-beam.md` +- `/docs/io-definitions/uel-3d-euler-beam.md` +- `/docs/reference-models/uel-3d-euler-beam.md` + +## Task + +Create the no-Abaqus Fortran test files and manifest entries required before production Fortran implementation. + +Use the exact paths and test names approved in `/docs/reference-models/uel-3d-euler-beam.md`. If that document is missing exact paths, mark this step `blocked` and explain the missing contract. + +Expected files should include, unless the reference model document chooses better names: + +- `/tests/fortran/test_uel_3d_euler_beam_stiffness.f90` +- `/tests/fortran/test_uel_3d_euler_beam_transform.f90` +- `/tests/fortran/test_uel_3d_euler_beam_invalid_inputs.f90` +- `/tests/fortran/manifest.json` + +Write tests before implementation. The tests must encode the accepted formulation and interface contract, including: + +- Local stiffness matrix numerical checks. +- Matrix symmetry. +- Basic rigid-body mode or rank sanity where practical. +- Orientation transform checks. +- Invalid length, invalid orientation, and non-positive property checks. +- Wrapper mapping checks if the interface contract defines a no-Abaqus wrapper test. + +Run RED evidence. Because production source may not exist yet, the expected RED result is a compile/link failure or targeted failing assertion caused by missing/unimplemented production code. Record the RED command and failure reason in `/docs/build-test-reports/uel-3d-euler-beam-red.md`. + +Do not implement production Fortran in this step except for the minimum non-production test scaffolding needed to express the tests. Do not weaken tests to make RED easier. + +## Tests To Write First + +- `/tests/fortran/test_uel_3d_euler_beam_stiffness.f90` +- `/tests/fortran/test_uel_3d_euler_beam_transform.f90` +- `/tests/fortran/test_uel_3d_euler_beam_invalid_inputs.f90` +- `/tests/fortran/manifest.json` entry or entries for the above tests. + +## Acceptance Criteria + +```bash +python -m unittest discover -s scripts -p "test_*.py" +python scripts/validate_reference_artifacts.py +python scripts/validate_fortran.py +python scripts/validate_workspace.py +``` + +For this RED step, `python scripts/validate_fortran.py` may fail only for the expected missing/unimplemented production code reason. The step must still run the Python script tests and reference artifact validation successfully. Record exact RED evidence in `/docs/build-test-reports/uel-3d-euler-beam-red.md`. + +## Validation Notes + +- If no Intel Fortran compiler is available, use `HARNESS_FORTRAN_VALIDATION=detect` only to record compiler detection evidence, then mark the step `blocked` if RED compile evidence cannot be produced. +- Update `/phases/uel-3d-euler-beam/index.json` step 6 with `completed`, `error`, or `blocked` and a concrete summary or reason. + +## Forbidden + +- Do not add JavaScript/TypeScript/npm fallback. +- Do not run Abaqus analyses from this project. +- Do not generate reference CSVs. +- Do not create production Fortran implementation. +- Do not break existing Python harness tests. diff --git a/phases/uel-3d-euler-beam/step7.md b/phases/uel-3d-euler-beam/step7.md new file mode 100644 index 0000000..b72263a --- /dev/null +++ b/phases/uel-3d-euler-beam/step7.md @@ -0,0 +1,69 @@ +# Step 7: fortran-implementation + +## Read First + +- `/AGENTS.md` +- `/docs/ABAQUS_SUBROUTINE_AGENT_DESIGN.md` +- `/docs/ARCHITECTURE.md` +- `/docs/ADR.md` +- `/.codex/skills/abaqus-fortran-tdd/SKILL.md` +- `/docs/requirements/uel-3d-euler-beam.md` +- `/docs/research/uel-3d-euler-beam-research.md` +- `/docs/formulations/uel-3d-euler-beam.md` +- `/docs/numerical-reviews/uel-3d-euler-beam.md` +- `/docs/io-definitions/uel-3d-euler-beam.md` +- `/docs/reference-models/uel-3d-euler-beam.md` +- `/docs/build-test-reports/uel-3d-euler-beam-red.md` +- `/tests/fortran/manifest.json` + +## Task + +Implement the minimum Fortran production code needed to make the approved no-Abaqus tests pass. + +Use the production source layout approved in `/docs/reference-models/uel-3d-euler-beam.md`. If the layout is missing, prefer: + +- `/src/fortran/kernels/uel_3d_euler_beam_kernel.f90` for testable calculation logic. +- `/src/fortran/abaqus/UEL_3D_EULER_BEAM.for` for the thin Abaqus `UEL` wrapper. + +Implementation scope: + +- Build the 3D Euler-Bernoulli local stiffness matrix. +- Build and validate the local-to-global transformation. +- Compute static internal force/residual contribution according to the approved Abaqus `UEL` sign convention. +- Fill `AMATRX` and `RHS` for the supported `LFLAGS` subset. +- Validate element length, orientation, and material/section properties. +- Keep `SVARS` and `ENERGY` behavior consistent with the approved interface contract. +- Keep Abaqus ABI wrapper thin; testable logic belongs in the kernel or no-Abaqus driver layer. + +Follow RED -> GREEN -> VERIFY. Do not change the approved tests unless the upstream contract is objectively wrong; in that case mark the step `blocked` and explain which upstream document must change. + +After GREEN evidence, create `/docs/build-test-reports/uel-3d-euler-beam-green.md` with commands, compiler mode, and summarized results. + +## Tests To Write First + +- Tests were written in step 6 and must already exist. +- Add only narrowly scoped additional no-Abaqus tests if implementation uncovers an untested requirement. If added, run RED for the new test before code changes. + +## Acceptance Criteria + +```bash +python -m unittest discover -s scripts -p "test_*.py" +python scripts/validate_fortran.py +python scripts/validate_reference_artifacts.py +python scripts/validate_workspace.py +``` + +The step is complete only when the no-Abaqus Fortran validation passes, or the step is marked `blocked` with concrete environment evidence such as missing Intel Fortran compiler. + +## Validation Notes + +- Do not create or modify external reference CSVs in this implementation step. +- Update `/phases/uel-3d-euler-beam/index.json` step 7 with `completed`, `error`, or `blocked` and a concrete summary or reason. + +## Forbidden + +- Do not add JavaScript/TypeScript/npm fallback. +- Do not run Abaqus analyses from this project. +- Do not generate reference CSVs. +- Do not bypass or weaken TDD guard behavior. +- Do not break existing tests. diff --git a/phases/uel-3d-euler-beam/step8.md b/phases/uel-3d-euler-beam/step8.md new file mode 100644 index 0000000..a9d6554 --- /dev/null +++ b/phases/uel-3d-euler-beam/step8.md @@ -0,0 +1,68 @@ +# Step 8: validation-readiness + +## Read First + +- `/AGENTS.md` +- `/docs/ABAQUS_SUBROUTINE_AGENT_DESIGN.md` +- `/docs/ARCHITECTURE.md` +- `/docs/ADR.md` +- `/.codex/skills/abaqus-subroutine-validation/SKILL.md` +- `/.codex/skills/abaqus-subroutine-physics-sanity/SKILL.md` +- `/.codex/skills/abaqus-subroutine-readiness/SKILL.md` +- `/docs/requirements/uel-3d-euler-beam.md` +- `/docs/formulations/uel-3d-euler-beam.md` +- `/docs/io-definitions/uel-3d-euler-beam.md` +- `/docs/reference-models/uel-3d-euler-beam.md` +- `/docs/build-test-reports/uel-3d-euler-beam-green.md` +- `/tests/fortran/manifest.json` + +## Task + +Audit implementation readiness and define the handoff for external Abaqus validation. + +Create or update: + +- `/docs/reference-verifications/uel-3d-euler-beam.md` +- `/docs/physics-evaluations/uel-3d-euler-beam.md` +- `/docs/releases/uel-3d-euler-beam.md` + +The audit must include: + +- Traceability from must requirements to tests and evidence. +- No-Abaqus Fortran validation results. +- Reference artifact status for each planned external model. +- Exact files the user must provide from an Abaqus PC: `model.inp`, extracted CSV files, `.msg/.dat/.log/.sta` tails, metadata, source hashes, compiler version, Abaqus version, and extraction provenance. +- Physics sanity checks expected after CSV artifacts are supplied: displacement direction, reaction equilibrium, bending/torsion/axial trends, finite values, units, and coordinate systems. +- Known limitations from the requirements and formulation documents. +- Release readiness decision: `ready-for-external-reference`, `blocked`, or `not-ready`. + +If approved external reference artifacts already exist under `references/uel-3d-euler-beam/`, validate them using the scripts and summarize the result. If they do not exist, do not fabricate them; mark solver-result validation as waiting for user-provided external artifacts while still completing the no-Abaqus readiness audit. + +## Tests To Write First + +- None unless the audit finds a missing no-Abaqus requirement. If so, add a targeted test first and return to implementation only if needed. + +## Acceptance Criteria + +```bash +python -m unittest discover -s scripts -p "test_*.py" +python scripts/validate_fortran.py +python scripts/validate_reference_artifacts.py +python scripts/validate_workspace.py +``` + +The step is complete only when the release/readiness documents distinguish passed no-Abaqus evidence from pending external Abaqus CSV evidence. + +## Validation Notes + +- Use externally generated ODB-extracted CSV artifacts for solver-result validation evidence. +- Do not run Abaqus analyses from this project. +- Update `/phases/uel-3d-euler-beam/index.json` step 8 with `completed`, `error`, or `blocked` and a concrete summary or reason. + +## Forbidden + +- Do not add JavaScript/TypeScript/npm fallback. +- Do not run Abaqus analyses from this project. +- Do not generate reference CSVs. +- Do not mark solver-result validation complete without ready-for-comparison artifacts. +- Do not break existing tests.