feat(linear-static-3d-euler-beam): step 16 - euler-beam-element-review-fix

This commit is contained in:
KOKO\Mimi
2026-08-09 18:37:41 +09:00
parent c4ffe13477
commit cfdac70756
3 changed files with 431 additions and 30 deletions
@@ -580,3 +580,53 @@
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.
### Root numerical review — Fix Round 1
- scope: all three `Important` findings addressed in
`src/fesa/elements/euler_beam_3d.cpp` and the existing exact T16 tests; the
two `Minor` findings were intentionally not changed in this round.
- defect_RED: after adding finite-positive derived-overflow,
derived-underflow, and length-scaled-underflow fixtures to existing
`T16-BEAM-007`,
`ctest --test-dir .harness/build -C Debug -R EulerBeam3D.RejectsInvalidGeometryAndProperties --output-on-failure`
exited 8. All three invalid fixtures were accepted; the diagnostic path
observed respectively a nonfinite stiffness with maximum `inf`, an all-zero
stiffness, and a stiffness with a required bending coefficient underflowed
to zero.
- defect_GREEN: `cmake --build .harness/build --config Debug --target fesa_tests`
exited 0 and the same focused CTest exited 0 with 1/1 passed. `create()` now
requires derived `EA`, `GJ`, `EIy`, `EIz` and all ten distinct positive
length-scaled axial/torsion/bending block magnitudes to be finite and
strictly positive. This rejects arithmetic overflow/underflow as
`invalid-beam-property` without a conditioning threshold.
- invariant_hardening: production `normalizedMatrixError` now returns infinite
error for any nonfinite operand, difference, scale, or quotient, so the
two-point/closed-form `1e-12` invariant fails closed.
- analytical_hardening: every nonzero reference in existing `T16-BEAM-006`
now checks `abs(actual-reference)/abs(reference) <= 1e-9`; only the explicitly
zero free-end resultants retain an absolute check. This evidence-only change
was expected to remain GREEN and its focused test passed without a production
correction.
- convergence_hardening: existing `T16-BEAM-005` directly assembles aligned
1/2/4-element `[v,rz]` cantilever systems from public `localStiffness()` and
`localEquivalentLoad()` only. It checks each exact signed constant transverse
element load, solves a test-only dense reduced system, and uses independent
five-point integration of interior cubic-Hermite displacement error against
the quartic uniform-load solution. Both refinements are monotone and each
observed order is 4 within `1e-8`. No `DLOAD`, parser, Domain, or production
assembly support was introduced. This evidence-only change was expected to
remain GREEN and the T16-005/T16-006 focused run passed 2/2.
| stage | exact command | exit_code | observed_result |
| --- | --- | ---: | --- |
| FIX1-RED | `ctest --test-dir .harness/build -C Debug -R EulerBeam3D.RejectsInvalidGeometryAndProperties --output-on-failure` | 8 | 0/1 passed; unexpected acceptance exposed nonfinite and zero stiffness outcomes |
| FIX1-GREEN-build | `cmake --build .harness/build --config Debug --target fesa_tests` | 0 | corrected source and unchanged ten test names compiled under `/W4 /WX` without a warning |
| FIX1-GREEN-defect | `ctest --test-dir .harness/build -C Debug -R EulerBeam3D.RejectsInvalidGeometryAndProperties --output-on-failure` | 0 | 1/1 passed |
| FIX1-GREEN-evidence | `ctest --test-dir .harness/build -C Debug -R 'EulerBeam3D.(ConstantLineLoadMatchesAllSignedComponents|AnalyticalAxialTorsionAndTwoPlaneBendingRecover)' --output-on-failure` | 0 | 2/2 analytical/convergence hardening tests passed without another production change |
| FIX1-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 | exact MSVC x64 Debug tree configured and generated |
| FIX1-VERIFY-build | `cmake --build .harness/build --config Debug` | 0 | full Debug build completed without a new warning |
| FIX1-VERIFY-targeted | `ctest --test-dir .harness/build -C Debug -R EulerBeam3D --output-on-failure` | 0 | exact 10/10 passed |
| FIX1-VERIFY-discovery | `ctest --test-dir .harness/build -C Debug --show-only=json-v1` | 0 | 39 total tests discovered, including the same ten EulerBeam3D names |
| FIX1-VERIFY-full | `ctest --test-dir .harness/build -C Debug --output-on-failure` | 0 | 39/39 passed |
| FIX1-VERIFY-scans | fail-on-match numerical invariant, dependency, scope, exact-test-count, reference, phase-index, and diff/whitespace scans | 0 | derived rigidity/coefficient and fail-closed checks present; tests 10; leaks 0; reference and phase index unchanged; diff clean |