add euler beam uel phase

This commit is contained in:
김경종
2026-06-11 11:08:44 +09:00
parent 986cc9888e
commit 3f6275201e
11 changed files with 625 additions and 0 deletions
+51
View File
@@ -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"
}
]
}
+63
View File
@@ -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.
+61
View File
@@ -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.
+59
View File
@@ -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.
+58
View File
@@ -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.
+59
View File
@@ -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.
+59
View File
@@ -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/<model-id>/`.
- 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.
+70
View File
@@ -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.
+69
View File
@@ -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.
+68
View File
@@ -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.