feat(linear-static-3d-euler-beam): step 16 - euler-beam-element
This commit is contained in:
@@ -513,3 +513,70 @@
|
||||
- handoff: the exact backend-free result records and `AnalysisState` ledger API
|
||||
provide full-space mutable solution vectors, step/frame identity, and stable
|
||||
recovery-row collections to Step 16 and later result recovery/output tasks.
|
||||
|
||||
## Step 16 — euler-beam-element
|
||||
|
||||
- task_id: `TASK-16`
|
||||
- status: `completed`
|
||||
- changed_files: `include/fesa/elements/euler_beam_3d.hpp`,
|
||||
`src/fesa/elements/euler_beam_3d.cpp`,
|
||||
`tests/unit/elements/euler_beam_3d_test.cpp`, `src/fesa/CMakeLists.txt`,
|
||||
`tests/CMakeLists.txt`,
|
||||
`docs/implementation-plans/linear-static-3d-euler-beam-implementation-report.md`,
|
||||
`phases/linear-static-3d-euler-beam/index.json`,
|
||||
`.superpowers/sdd/linear-static-3d-euler-beam/task-16-report.md`
|
||||
- requirement_ids: `FESA-REQ-LS3DEB-002`, `FESA-REQ-LS3DEB-004`,
|
||||
`FESA-REQ-LS3DEB-008`, `FESA-REQ-LS3DEB-012`,
|
||||
`FESA-REQ-LS3DEB-013`, `FESA-REQ-LS3DEB-014`,
|
||||
`FESA-REQ-LS3DEB-031`, `FESA-REQ-LS3DEB-032`,
|
||||
`FESA-REQ-LS3DEB-035`, `FESA-REQ-LS3DEB-044`
|
||||
- test_ids: `T16-BEAM-001`, `T16-BEAM-002`, `T16-BEAM-003`,
|
||||
`T16-BEAM-004`, `T16-BEAM-005`, `T16-BEAM-006`, `T16-BEAM-007`,
|
||||
`T16-BEAM-008`, `T16-BEAM-009`, `T16-BEAM-010`
|
||||
|
||||
| stage | exact command | exit_code | expected_or_observed_result | evidence_tail |
|
||||
| --- | --- | ---: | --- | --- |
|
||||
| RED-build | `cmake --build .harness/build --config Debug --target fesa_tests` | 1 | Exactly ten planned tests were registered before production and the EulerBeam3D public API was absent | MSVC C1083 reported missing `fesa/elements/euler_beam_3d.hpp` from `euler_beam_3d_test.cpp` after successful CMake regeneration |
|
||||
| GREEN-build | `cmake --build .harness/build --config Debug --target fesa_tests` | 0 | The minimum beam kernel, ten tests, solver library, and unit executable compile and link | `euler_beam_3d.cpp`, `euler_beam_3d_test.cpp`, `fesa_solver.lib`, and `fesa_unit_tests.exe` built without a FESA warning under `/W4 /WX` |
|
||||
| GREEN-test | `ctest --test-dir .harness/build -C Debug -R EulerBeam3D --output-on-failure` | 0 | Reviewed signs, Gauss integration, rank, transform, loads, analytical modes, validation, recovery, patches, and negative control pass | 10/10 exact `EulerBeam3D` tests passed |
|
||||
| VERIFY-configure | `cmake -S . -B .harness/build -A x64 -DFESA_GTEST_SOURCE_DIR=C:/git/googletest "-DMKL_DIR=C:/Program Files (x86)/Intel/oneAPI/mkl/2026.1/lib/cmake/mkl" "-DTBB_DIR=C:/Program Files (x86)/Intel/oneAPI/tbb/2023.1/lib/cmake/tbb" "-DHDF5_DIR=C:/Program Files/HDF_Group/HDF5/2.1.1/cmake"` | 0 | Approved explicit-dependency MSVC x64 build tree generates | Windows SDK, oneMKL 2026.1, oneTBB, and HDF5 resolved; configure and generate completed |
|
||||
| VERIFY-build | `cmake --build .harness/build --config Debug` | 0 | Full Debug build passes without a new FESA warning | `fesa_solver.lib` and `fesa_unit_tests.exe` built under `/W4 /WX` |
|
||||
| VERIFY-targeted | `ctest --test-dir .harness/build -C Debug -R EulerBeam3D --output-on-failure` | 0 | Focused Step 16 suite remains green | 10/10 exact `EulerBeam3D` tests passed |
|
||||
| VERIFY-discovery | `ctest --test-dir .harness/build -C Debug --show-only=json-v1` | 0 | CTest discovers the accumulated suite and all ten exact EulerBeam3D names | 39 tests discovered, including 10 `EulerBeam3D` tests, with feature/unit labels |
|
||||
| VERIFY-full | `ctest --test-dir .harness/build -C Debug --output-on-failure` | 0 | Full accumulated C++ suite has zero failures | 39/39 tests passed |
|
||||
| VERIFY-contract-scans | Backend public-header, upward-dependency, out-of-scope formulation, production one-point path, two-point Gauss/invariant, exact-test-count, and CMake-registration scans using fail-on-match `rg` wrappers | 0 | The kernel implements only the approved exact ledger and numerical integration contract | backend leaks 0; upward dependencies 0; out-of-scope couplings 0; production one-point paths 0; two-point Gauss consumers 3; normalized closed-form invariant `1e-12`; tests 10; registrations 1/1 |
|
||||
| VERIFY-diff | `git diff --check` plus trailing-whitespace scan over the three new files | 0 | Tracked and untracked Step 16 files have no whitespace errors | Diff check exit 0; new-file trailing whitespace matches 0 |
|
||||
| VERIFY-reference | `git diff --exit-code -- reference/`; `git status --short -- reference/` | 0 | Approved legacy reference artifacts remain read-only and unchanged | Reference diff exit 0 and reference status empty |
|
||||
|
||||
- green_triage: the first implementation build passed and the first focused
|
||||
run was 9/10. The single failure was isolated to a large-coordinate test
|
||||
fixture whose requested equality rounded to a represented length above the
|
||||
threshold. The test fixture was replaced by an exactly representable unit
|
||||
threshold equality plus below/above large-coordinate cases; the production
|
||||
strict `>` comparison and formulation were unchanged before the 10/10 run.
|
||||
- contract_checks: local DOF order is exactly
|
||||
`[u1,v1,w1,rx1,ry1,rz1,u2,v2,w2,rx2,ry2,rz2]`. Rotation rows are
|
||||
`(ex,ey,ez)`, `dl=T*dg`, and `Kg=T^T*Kl*T`. The B-matrix follows the reviewed
|
||||
`theta_y=-w'`, `theta_z=v'` signs; two-point Gauss `B^T D B` is the sole
|
||||
production stiffness path and is checked against the independent closed
|
||||
matrix with normalized tolerance `1e-12`. The test-only one-point rule has
|
||||
rank four while the production rule has rank six and six rigid modes.
|
||||
- contract_checks: length and guide-vector tests use the exact scale-aware
|
||||
strict thresholds with no fallback axis. `E`, derived `G`, `A`, `Iy`, `Iz`,
|
||||
and `J` must be finite and positive and `I12` must be exactly zero. Constant
|
||||
local `px,py,pz,mx` receives the consistent signed load only; no parser,
|
||||
`*DLOAD`, B31, Timoshenko, shear correction, or transverse/torsional stress
|
||||
support was added.
|
||||
- contract_checks: recovery keeps local outward equilibrium end actions,
|
||||
endpoint section resultants, and two-Gauss generalized strain/resultants
|
||||
distinct. Axial stress is
|
||||
`S11=E(epsilon0+x2*kappa_y-x1*kappa_z)` in input section-point order; absent
|
||||
input points produce section point 0 at the centroid with source
|
||||
`fesa-default`.
|
||||
- generated_evidence: `.harness/build/src/fesa/Debug/fesa_solver.lib`,
|
||||
`.harness/build/tests/Debug/fesa_unit_tests.exe`
|
||||
- reference_diff: unchanged; `git diff --exit-code -- reference/` exit 0
|
||||
- handoff: the exact backend-free `EulerBeam3D` ledger API supplies global and
|
||||
local stiffness, constant local equivalent load, and distinct recovery data
|
||||
to Step 18 sparse assembly and Step 22 result recovery without owning element
|
||||
identity, equation numbering, parser coupling, or result persistence.
|
||||
|
||||
Reference in New Issue
Block a user