add euler beam uel phase
This commit is contained in:
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"phases": [
|
||||||
|
{
|
||||||
|
"dir": "uel-3d-euler-beam",
|
||||||
|
"status": "pending"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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.
|
||||||
@@ -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.
|
||||||
@@ -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.
|
||||||
@@ -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.
|
||||||
@@ -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.
|
||||||
@@ -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.
|
||||||
@@ -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.
|
||||||
@@ -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.
|
||||||
@@ -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.
|
||||||
Reference in New Issue
Block a user