fix: add abaqus uel wrapper contract

This commit is contained in:
김경종
2026-06-12 09:08:25 +09:00
parent 44d4ebadf8
commit d455e0843e
16 changed files with 309 additions and 48 deletions
+16 -6
View File
@@ -5,8 +5,8 @@
- Active objective: 3D Euler-Bernoulli beam Abaqus/Standard `UEL`
- Active phase: `phases/uel-3d-euler-beam`
- Active owner: unassigned
- Current status: completed ad hoc UEL ABI research correction note after step 7 implementation review
- Next action: correct the Abaqus-facing UEL wrapper/interface mismatch before executing `phases/uel-3d-euler-beam/step8.md` validation-readiness step
- Current status: completed Abaqus-facing UEL wrapper/interface correction after step 7 implementation review
- Next action: execute `phases/uel-3d-euler-beam/step8.md` validation-readiness step with corrected `VARIABLES=1` / `NSVARS>=1` contract
## Completed
@@ -54,6 +54,11 @@
- Confirmed current source has no top-level Abaqus-callable `SUBROUTINE UEL(...)` wrapper under `src/fortran`.
- Confirmed `uel3deb_abi_static` is a no-Abaqus adapter, not the manual Abaqus UEL ABI.
- Identified a likely Abaqus input contract issue: documented `*USER ELEMENT, VARIABLES` must be greater than zero, so the current `NSVARS=0` / `VARIABLES=0` contract should be corrected before external Abaqus validation.
- Completed Abaqus-facing UEL ABI correction.
- Added `src/fortran/uel_3d_euler_beam_uel.for` with top-level fixed-form `SUBROUTINE UEL(...)`, `ABA_PARAM.INC`, manual Abaqus array dimensions, adapter delegation, and fatal `XIT` path.
- Updated `uel3deb_abi_static` to accept `NSVARS>=1`, use explicit/manual-style array bounds, and validate `LFLAGS(1)` and `LFLAGS(4)`.
- Updated no-Abaqus tests and wrapper source-smoke tests for the corrected contract.
- Updated `docs/io-definitions/uel-3d-euler-beam.md`, `docs/reference-models/uel-3d-euler-beam.md`, and `docs/corrections/uel-3d-euler-beam-uel-abi-correction.md`.
## In Progress
@@ -65,17 +70,21 @@
## Last Verification
Latest verification after creating the UEL ABI research document:
Latest verification after correcting the Abaqus-facing UEL wrapper/interface:
```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
git diff --check
```
Result: all passed.
- `python -m unittest discover -s scripts -p "test_*.py"`: 57 tests passed.
- `python scripts/validate_workspace.py`: reference artifact validation succeeded; six Fortran manifest executables compiled and passed with Intel `ifx`; workspace validation succeeded.
- `python -m unittest discover -s scripts -p "test_*.py"`: 60 tests passed.
- `python scripts/validate_reference_artifacts.py`: reference artifact metadata validation succeeded.
- `python scripts/validate_fortran.py`: six Fortran manifest executables compiled and passed with Intel `ifx`.
- `python scripts/validate_workspace.py`: reference validation and Fortran validation succeeded.
- `git diff --check`: passed with line-ending warnings only.
Previous verification after completing step 7 Fortran implementation:
@@ -98,5 +107,6 @@ Result: all passed.
- Read `AGENTS.md`, `PLAN.md`, `PROGRESS.md`, and `WORKNOTE.md`.
- Confirm no other owner is active in this file.
- Correct the Abaqus-facing `UEL` wrapper/interface mismatch before `phases/uel-3d-euler-beam/step8.md`.
- Proceed to `phases/uel-3d-euler-beam/step8.md`.
- Use `VARIABLES=1` in external Abaqus `*USER ELEMENT` examples; the adapter now requires `NSVARS>=1`.
- Update this file when step status changes or before handing off.