modify documents
This commit is contained in:
@@ -0,0 +1,849 @@
|
||||
# 3D Euler–Bernoulli Beam 검증과 한계
|
||||
|
||||
본 문서는 당시 revision의 검증·판정 기록이다. 본문에 남긴 원본 보고서 이름과 SHA-256은
|
||||
통합 전 자료의 식별자이며 정리된 현재 파일의 byte hash를 뜻하지 않는다. 원문은 Git
|
||||
`858e87b`의 해당 기능 폴더에서 확인할 수 있다. 현재 진입점과 대응 기록은 [README](README.md)를 따른다.
|
||||
|
||||
아래 날짜·revision·명령·수치는 당시 실제 실행 기록이다. 문서 정리에서 solver를 다시 실행하지 않았다.
|
||||
현재 계약은 [요구사항](requirements.md), [정식화](formulation.md), [I/O](io.md), [공통 tolerance](../TOLERANCE.md)를 따른다. [과거 release 판정](release.md)의 재검증 경계도 유지한다.
|
||||
|
||||
<a id="build-test"></a>
|
||||
|
||||
<a id="build-test--linear-static-3d-euler-beam-buildtest-report"></a>
|
||||
## Linear Static 3D Euler Beam Build/Test Report
|
||||
|
||||
<a id="build-test--metadata"></a>
|
||||
### Metadata
|
||||
|
||||
- feature_id: `linear-static-3d-euler-beam`
|
||||
- source_commit: `400db191ce9f766ca6b34e5b609eaa13c54ccfa3`
|
||||
- source_implementation_report: `docs/linear-static-3d-euler-beam/lessons.md`
|
||||
- source_implementation_plan: `docs/linear-static-3d-euler-beam/README.md`
|
||||
- status: `pass-for-reference-verification`
|
||||
- date: `2026-08-09`
|
||||
- evidence_window: `2026-08-09T23:16:20.8670416+09:00` through `2026-08-09T23:20:15.7264584+09:00`
|
||||
|
||||
<a id="build-test--verdict"></a>
|
||||
### Verdict
|
||||
|
||||
Fresh Visual Studio 18 2026/MSVC x64 Debug configuration, a clean full rebuild,
|
||||
the exact Step 25 configure/build commands, nonzero JSON discovery, the feature-label
|
||||
CTest run, and the full CTest run all passed. CTest discovered the expected 83 tests
|
||||
and both executed suites passed 83/83. The clean rebuild emitted no compiler or linker
|
||||
warning line, and generated FESA product projects retain Level 4 plus warnings-as-errors.
|
||||
|
||||
The build/test gate therefore passes for handoff to Step 26 Reference Verification.
|
||||
This verdict does not approve reference tolerance, physics sanity, or release readiness.
|
||||
|
||||
<a id="build-test--execution-environment"></a>
|
||||
### Execution Environment
|
||||
|
||||
- os: `Microsoft Windows 11 Home 10.0.26200 build 26200; 64-bit`
|
||||
- source_head: `400db191ce9f766ca6b34e5b609eaa13c54ccfa3`
|
||||
- generator: `Visual Studio 18 2026`
|
||||
- Visual Studio: `Community 18.8.2` (`18.8.12023.21`)
|
||||
- MSBuild: `18.8.2+ce25c0108`
|
||||
- compiler: `MSVC 19.51.36252.0`
|
||||
- compiler_architecture: `x64`
|
||||
- Windows SDK: `10.0.26100.0`
|
||||
- language: `C++17`, required, extensions disabled
|
||||
- config: `Debug`
|
||||
- build_dir: `.harness/build`
|
||||
- harness_config: absent; repository auto-CMake defaults plus Step 25 explicit cache values
|
||||
- project_selection: auto CMake from root `CMakeLists.txt`
|
||||
- command_discovery_path: default CMake/MSVC x64 Debug with explicit local dependency paths
|
||||
- CMake / CTest: `4.4.0 / 4.4.0`
|
||||
|
||||
<a id="build-test--dependency-revisions"></a>
|
||||
#### Dependency Revisions
|
||||
|
||||
| dependency | resolved revision or version | evidence |
|
||||
| --- | --- | --- |
|
||||
| GoogleTest | `04ee1b4f2aefdffb0135d7cf2a2c519fe50dabe4` | clean `C:/git/googletest` checkout HEAD |
|
||||
| Intel oneMKL | `2026.1.0` | `MKLConfigVersion.cmake`; configure reported `MKL_VERSION: 2026.1.0`, dynamic ILP64, Intel threading |
|
||||
| Intel oneTBB | `2023.1.0` | `TBBConfigVersion.cmake` from the configured `2023.1` package |
|
||||
| HDF5 | `2.1.1` | `hdf5-config-version.cmake` from the configured `2.1.1` package |
|
||||
|
||||
<a id="build-test--freshness-and-configuration-resolution"></a>
|
||||
### Freshness and Configuration Resolution
|
||||
|
||||
The ignored generated build tree already existed. Fresh evidence was obtained without
|
||||
reusing its cache or products by running CMake `--fresh` with the generator explicitly
|
||||
fixed to Visual Studio 18 2026, then running the generated `clean` target before the
|
||||
full build. The literal no-`--fresh`, no-`-G` configure command from Step 25 was then
|
||||
run against that resolved VS18 cache and followed by the literal build, discovery,
|
||||
feature-label, and full-test commands.
|
||||
|
||||
Post-configure metadata recorded:
|
||||
|
||||
- `CMAKE_GENERATOR=Visual Studio 18 2026`
|
||||
- `CMAKE_GENERATOR_PLATFORM=x64`
|
||||
- `CMAKE_CXX_COMPILER_ID=MSVC`
|
||||
- `CMAKE_CXX_COMPILER_VERSION=19.51.36252.0`
|
||||
- `CMAKE_CXX_COMPILER_ARCHITECTURE_ID=x64`
|
||||
|
||||
<a id="build-test--command-log-summary"></a>
|
||||
### Command Log Summary
|
||||
|
||||
| order | command | start / end | exit code | duration | verdict and stdout/stderr tail |
|
||||
| ---: | --- | --- | ---: | ---: | --- |
|
||||
| 1 | `cmake --fresh -S . -B .harness/build -G "Visual Studio 18 2026" -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"` | `23:16:20.867+09:00` / `23:16:27.706+09:00` | 0 | `6.836 s` | pass; MKL 2026.1.0 and required runtime libraries resolved; `Configuring done`, `Generating done`, build files written to `.harness/build` |
|
||||
| 2 | `cmake --build .harness/build --config Debug --target clean` | `23:16:37.194+09:00` / `23:16:37.914+09:00` | 0 | `0.716 s` | pass; generated VS18 clean target completed |
|
||||
| 3 | `cmake --build .harness/build --config Debug` | `23:16:47.054+09:00` / `23:18:01.769+09:00` | 0 | `74.713 s` | pass; clean compile/link produced `fesa.exe` and all three test executables; warning scan count `0` |
|
||||
| 4 | `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"` | `23:19:10.210+09:00` / `23:19:10.861+09:00` | 0 | `0.649 s` | pass; exact Step 25 command selected Windows SDK 10.0.26100.0, retained VS18/x64, and completed configure/generate |
|
||||
| 5 | `cmake --build .harness/build --config Debug` | `23:19:25.404+09:00` / `23:19:28.969+09:00` | 0 | `3.562 s` | pass; exact Step 25 build confirmed `fesa_solver`, `fesa.exe`, and all test executables; warning scan count `0` |
|
||||
| 6 | `ctest --test-dir .harness/build -C Debug --show-only=json-v1` | `23:19:45.728+09:00` / `23:19:45.798+09:00` | 0 | `0.065 s` | pass; JSON kind `ctestInfo` version 1.0; 83 tests; every test has the feature label |
|
||||
| 7 | `ctest --test-dir .harness/build -C Debug -L linear-static-3d-euler-beam --output-on-failure` | `23:20:00.199+09:00` / `23:20:04.163+09:00` | 0 | `3.961 s` | pass; `100% tests passed out of 83`; real test time `3.92 s` |
|
||||
| 8 | `ctest --test-dir .harness/build -C Debug --output-on-failure` | `23:20:11.899+09:00` / `23:20:15.726+09:00` | 0 | `3.825 s` | pass; `100% tests passed out of 83`; real test time `3.79 s` |
|
||||
|
||||
An initial post-clean discovery/feature/full smoke was also run before the literal
|
||||
configure replay: discovery exit 0 in `0.068 s` with 83 tests, feature-label CTest
|
||||
exit 0 in `4.244 s` with 83/83, and full CTest exit 0 in `4.011 s` with 83/83.
|
||||
Rows 4 through 8 are the final canonical Step 25 acceptance chain.
|
||||
|
||||
<a id="build-test--validation-results"></a>
|
||||
### Validation Results
|
||||
|
||||
| validation_stage | result | evidence |
|
||||
| --- | --- | --- |
|
||||
| harness self-test | skipped | No Harness Python, Hook, or agent-config file is part of HEAD `400db19` verification scope. |
|
||||
| fresh configure | pass | Explicit VS18/x64 `--fresh` configure exit 0, followed by clean target exit 0. |
|
||||
| exact configure | pass | Literal Step 25 configure exit 0; generated metadata is MSVC/x64. |
|
||||
| clean full build | pass | Exit 0 after clean; all source and test translation units compiled and linked. |
|
||||
| exact build | pass | Exit 0; product and three test executables confirmed. |
|
||||
| compiler/warning policy | pass | `fesa_solver` and `fesa_cli` generated projects have `Level4` and `TreatWarningAsError=true`; clean and exact build scans found zero warning lines. |
|
||||
| CTest discovery | pass | Exit 0; 83 tests, greater than zero and equal to the expected inventory. |
|
||||
| feature-specific tests | pass | Label `linear-static-3d-euler-beam`: 83/83 passed. |
|
||||
| full CTest | pass | 83/83 passed with zero failed tests. |
|
||||
| reference immutability | pass | Pre/post `git diff --exit-code -- reference/` exit 0, status empty, and four exact SHA-256 values unchanged. |
|
||||
| source worktree before report | pass | `git status --short` empty at HEAD `400db19`. |
|
||||
|
||||
<a id="build-test--ctest-inventory"></a>
|
||||
### CTest Inventory
|
||||
|
||||
<a id="build-test--label-inventory"></a>
|
||||
#### Label Inventory
|
||||
|
||||
| label | count |
|
||||
| --- | ---: |
|
||||
| `linear-static-3d-euler-beam` | 83 |
|
||||
| `unit` | 73 |
|
||||
| `integration` | 5 |
|
||||
| `reference` | 5 |
|
||||
|
||||
<a id="build-test--suite-inventory-and-step-trace"></a>
|
||||
#### Suite Inventory and Step Trace
|
||||
|
||||
| implementation Step | CTest suite or suites | count | cumulative count | Step 7-24 report evidence audit |
|
||||
| ---: | --- | ---: | ---: | --- |
|
||||
| 7 | `BuildInfo` | 2 | 2 | pass |
|
||||
| 8 | `CoreDiagnostics` | 3 | 5 | pass |
|
||||
| 9 | `DenseMath` | 2 | 7 | pass |
|
||||
| 10 | `DomainModel` | 3 | 10 | pass |
|
||||
| 11 | `InpSyntax` | 4 | 14 | pass |
|
||||
| 12 | `InpDomainMapping` | 5 | 19 | pass |
|
||||
| 13 | `AnalysisModel` | 3 | 22 | pass |
|
||||
| 14 | `DofManager` | 4 | 26 | pass |
|
||||
| 15 | `AnalysisState` | 3 | 29 | pass |
|
||||
| 16 | `EulerBeam3D` | 10 | 39 | pass |
|
||||
| 17 | `ParallelFor` | 3 | 42 | pass |
|
||||
| 18 | `SparseAssembly` | 5 | 47 | pass |
|
||||
| 19 | `EssentialConstraints` | 4 | 51 | pass |
|
||||
| 20 | `MklPardisoSolver` | 6 | 57 | pass |
|
||||
| 21 | `LoadAssembly` | 5 | 62 | pass |
|
||||
| 22 | `ResultRecovery` | 6 | 68 | pass |
|
||||
| 23 | `Hdf5ResultsWriter` | 5 | 73 | pass |
|
||||
| 24 | `LinearStaticCli` (5), `ReferenceComparisonContract` (4), `B33ReferenceComparison` (1) | 10 | 83 | pass |
|
||||
|
||||
The JSON inventory contains every exact test name registered by GoogleTest discovery.
|
||||
No duplicate CTest name was observed; the label partition is exactly 73 unit + 5
|
||||
integration + 5 reference = 83.
|
||||
|
||||
<a id="build-test--step-7-24-implementation-evidence-audit"></a>
|
||||
### Step 7-24 Implementation Evidence Audit
|
||||
|
||||
The cumulative implementation report was checked block-by-block against the implementation
|
||||
plan and the phase index summaries. All 18 Step blocks are present and each records:
|
||||
|
||||
- its matching `TASK-07` through `TASK-24`, `status: completed`, changed files,
|
||||
requirement IDs, and test IDs;
|
||||
- at least one implementation-owned nonzero RED command with the expected missing API
|
||||
or named behavioral failure;
|
||||
- a zero-exit GREEN build/test for the Step's targeted CTest suite;
|
||||
- zero-exit MSVC x64 configure/build, nonzero JSON discovery, and zero-failure full CTest;
|
||||
- `/W4 /WX` or equivalent generated warning-policy evidence and reference-tree
|
||||
immutability evidence.
|
||||
|
||||
Step 20 and Step 22 additionally retain valid behavioral RED/GREEN correction evidence.
|
||||
Step 23 records its environment link incident separately from the valid missing-API RED,
|
||||
so the environment incident was not counted as TDD evidence. The cumulative counts in the
|
||||
implementation report and the Step 7-24 phase summaries progress exactly to the freshly
|
||||
discovered 83-test inventory above.
|
||||
|
||||
The implementation report's cumulative header still says `in-progress`; the audited
|
||||
step-local evidence contract and phase index nevertheless mark every implementation Step
|
||||
7-24 `completed`. This stale aggregate header is not a missing Step block, missing test,
|
||||
or failed build/test gate and was not modified by the independent executor.
|
||||
|
||||
<a id="build-test--w4-wx-and-warning-audit"></a>
|
||||
### `/W4 /WX` and Warning Audit
|
||||
|
||||
- `src/fesa/CMakeLists.txt` applies `/W4 /WX` privately to `fesa_solver` and `fesa_cli`.
|
||||
- Generated `fesa_solver.vcxproj` and `fesa_cli.vcxproj` contain
|
||||
`<WarningLevel>Level4</WarningLevel>` and
|
||||
`<TreatWarningAsError>true</TreatWarningAsError>` for Debug and the other generated
|
||||
configurations.
|
||||
- The clean 74.713-second build recompiled the product and all test translation units;
|
||||
its compiler/linker warning scan found `0` lines.
|
||||
- The exact post-configure build also exited 0 and found `0` warning lines.
|
||||
|
||||
Result: no product warning was emitted, and any MSVC product warning would have failed
|
||||
the build under `/WX`.
|
||||
|
||||
<a id="build-test--reference-read-only-audit"></a>
|
||||
### Reference Read-Only Audit
|
||||
|
||||
The following SHA-256 values were identical before and after all configure/build/test
|
||||
commands, while both reference diff checks exited 0 and both reference status checks
|
||||
were empty:
|
||||
|
||||
| exact approved legacy path | SHA-256 |
|
||||
| --- | --- |
|
||||
| `reference/cantilever beam/cantilever beam.inp` | `E406EA9560321B791DB829E03BD24593B9875E0195D35B86BD931EDA122EF3` |
|
||||
| `reference/cantilever beam/cantilever beam displacements.csv` | `7B3312FBC8848E81D9A0FD4FF2B56BC1954636A2C14B5C1CBB269CB9477D3C31` |
|
||||
| `reference/cantilever beam/cantilever beam reactions.csv` | `BF30CDB0CD50106885DE14D63492737736C587426EBD787DE4F7EE6AA86DAA23` |
|
||||
| `reference/cantilever beam/cantilever beam elemental forces.csv` | `E5E77FEC0FA9482AE018DBF296E74D396335C7C711BD2E9AA2315247A34290BA` |
|
||||
|
||||
<a id="build-test--failure-classification"></a>
|
||||
### Failure Classification
|
||||
|
||||
- classification: `N/A`
|
||||
- primary_failure: `N/A`
|
||||
- first_failed_command: `N/A`
|
||||
- evidence_tail: All required configure, build, discovery, feature-label, and full-test
|
||||
commands exited 0; no failed test exists.
|
||||
- correction_handoff: `N/A`; no implementation-owned, environment, harness, or
|
||||
upstream-contract failure requires correction.
|
||||
|
||||
<a id="build-test--failed-test-inventory"></a>
|
||||
### Failed Test Inventory
|
||||
|
||||
None. Feature-label CTest and full CTest both passed 83/83.
|
||||
|
||||
<a id="build-test--handoff-recommendation"></a>
|
||||
### Handoff Recommendation
|
||||
|
||||
| target_agent | reason | required_input |
|
||||
| --- | --- | --- |
|
||||
| Reference Verification Agent | Step 25 build/test gate is `pass-for-reference-verification`. | This report, HEAD `400db19`, `.harness/build/tests/Debug/fesa_reference_tests.exe`, and the unchanged exact legacy bundle. |
|
||||
|
||||
The build-local Step 24 evidence exists at
|
||||
`.harness/build/reference/cantilever-beam-b33/results.h5` and
|
||||
`.harness/build/reference/cantilever-beam-b33/comparison.json`; the JSON is 128,118 bytes
|
||||
with SHA-256
|
||||
`258347AEA791D981AEA9B2BCAD85DE5344D4859ECA3692DC5E7AA01A848F8E0D`.
|
||||
Step 26 must independently rerun and inspect the approved comparison evidence. Its
|
||||
presence and CTest success here are not a reference-verification verdict.
|
||||
|
||||
<a id="build-test--open-issues"></a>
|
||||
### Open Issues
|
||||
|
||||
- None blocking Reference Verification.
|
||||
- The implementation report aggregate `in-progress` header is noted above but does not
|
||||
contradict its 18 completed Step blocks, the phase index, or the fresh build/test result.
|
||||
|
||||
<a id="reference-comparison"></a>
|
||||
|
||||
<a id="reference-comparison--linear-static-3d-euler-beam-reference-verification-report"></a>
|
||||
## Linear Static 3D Euler Beam Reference Verification Report
|
||||
|
||||
<a id="reference-comparison--metadata"></a>
|
||||
### Metadata
|
||||
|
||||
- feature_id: `linear-static-3d-euler-beam`
|
||||
- model_id: `cantilever-beam-b33`
|
||||
- source_head: `451d9077ea70e3087454db3760e677da0095d27f`
|
||||
- source_build_test_report: `docs/linear-static-3d-euler-beam/verification.md`
|
||||
- source_reference_models: `docs/linear-static-3d-euler-beam/reference-model.md`
|
||||
- source_io_definition: `docs/linear-static-3d-euler-beam/io.md`
|
||||
- source_implementation_plan: `docs/linear-static-3d-euler-beam/README.md`
|
||||
- source_implementation_report: `docs/linear-static-3d-euler-beam/lessons.md`
|
||||
- historical_status: `pass-for-physics-evaluation`
|
||||
- current_status: `pass-for-physics-evaluation`
|
||||
- superseded_on: `2026-08-18`
|
||||
- revalidated_on: `2026-08-18`
|
||||
- date: `2026-08-09`
|
||||
- review_fix_date: `2026-08-10`
|
||||
|
||||
The 2026-08-09 evidence below is preserved as a historical record of the former 11-station,
|
||||
component-scale comparison. ADR-022 and the regenerated 20-row element-endpoint CSV supersede
|
||||
that identity and tolerance. The following revalidation is the current reference-gate evidence.
|
||||
|
||||
<a id="reference-comparison--2026-08-18-common-policy-revalidation"></a>
|
||||
### 2026-08-18 Common-policy Revalidation
|
||||
|
||||
`cmake --build .harness/build --config Debug` passed, followed by
|
||||
`ctest --test-dir .harness/build -C Debug --output-on-failure`: 214/214 tests passed.
|
||||
The B33 reference test generated
|
||||
`.harness/build/reference/cantilever-beam-b33/comparison.json` from the exact read-only
|
||||
reference paths.
|
||||
|
||||
- exact canonical rows: 212 = 66 displacement + 66 reaction + 80 direct element-endpoint
|
||||
section-resultant rows
|
||||
- exact families: 6; all row gates and family RMS gates passed
|
||||
- direct section identity: 20 endpoint rows, 10 B33 elements x 2 connectivity-matched endpoints
|
||||
- warnings, identity/schema/nonfinite failures: 0
|
||||
- overall verdict: `passed=true`
|
||||
|
||||
| family | rows | scale | near-zero rows | max absolute error | scale-relative RMS |
|
||||
| --- | ---: | ---: | ---: | ---: | ---: |
|
||||
| translation `UX/UY/UZ` | 33 | `1.90476272e-2` | 23 | `5.333229170789711e-10` | `8.459623217000381e-9` |
|
||||
| rotation `URX/URY/URZ` | 33 | `2.85714399e-3` | 23 | `1.000013943180944e-10` | `1.1723557271997219e-8` |
|
||||
| reaction force `RF1/RF2/RF3` | 33 | `1.0e6` | 32 | `8.195638656616211e-7` | `2.0922817757699256e-13` |
|
||||
| reaction moment `RM1/RM2/RM3` | 33 | `1.0e7` | 32 | `5.0514936447143555e-6` | `8.811160558471221e-14` |
|
||||
| section force `N` | 20 | `0` | 20 | `0` | `0` |
|
||||
| section moment `T/My/Mz` | 60 | `1.0e7` | 41 | `1.2499958951957524e-1` | `2.2910664449287597e-9` |
|
||||
|
||||
All values above come from the generated JSON ledger. The historical report body starts below
|
||||
and must not be read as the current identity/tolerance evidence.
|
||||
|
||||
The prerequisite build/test report has status
|
||||
`pass-for-reference-verification`. This report applies only the approved Abaqus
|
||||
B33 reference tolerance. It does not approve physics sanity or release readiness.
|
||||
|
||||
<a id="reference-comparison--artifact-inventory"></a>
|
||||
### Artifact Inventory
|
||||
|
||||
The approved B33 exception overrides the generic new-bundle inventory. The exact
|
||||
four legacy files with spaces are the complete read-only reference bundle;
|
||||
`metadata.json` is absent-allowed under project-wide policy, while `README.md` and a
|
||||
stress CSV are contractually N/A and are not missing artifacts.
|
||||
|
||||
| item | exact path | status | direct audit evidence |
|
||||
| --- | --- | --- | --- |
|
||||
| reference directory | `reference/cantilever beam/` | present, exact inventory | Four regular files only; no extra entry. |
|
||||
| reference input | `reference/cantilever beam/cantilever beam.inp` | present, valid | 2,330 bytes; exactly one `*ELEMENT, TYPE=B33` declaration at line 21. |
|
||||
| displacement CSV | `reference/cantilever beam/cantilever beam displacements.csv` | present, valid | Exact 9-column CAE header; 11 unique rows; 66 finite values. |
|
||||
| reaction CSV | `reference/cantilever beam/cantilever beam reactions.csv` | present, valid | Exact 9-column CAE header; 11 unique rows; 66 finite values. |
|
||||
| elemental-force CSV | `reference/cantilever beam/cantilever beam elemental forces.csv` | present, valid | Exact 7-column CAE header; 11 unique rows; 44 finite values. |
|
||||
| optional metadata | `reference/cantilever beam/metadata.json` | absent-allowed | Approved design, ADR-010, I/O definition, and reference-model contract supply provenance; absence is not a missing artifact. |
|
||||
| legacy README | `reference/cantilever beam/README.md` | N/A | Approved B33 legacy exception. |
|
||||
| reference stress CSV | N/A | N/A | Abaqus beam-stress comparison is outside the approved V0 scope. |
|
||||
| authoritative solver output | `.harness/build/reference/cantilever-beam-b33/results.h5` | present, valid | 25,336 bytes; generated by the fresh exact CTest; HDF5 schema inspected read-only with HDF5 2.1.1 utilities. |
|
||||
| comparison ledger | `.harness/build/reference/cantilever-beam-b33/comparison.json` | present, valid | 128,118 bytes; 176 row decisions, 16 component metrics, and `passed=true`. |
|
||||
| solver debug CSV view | N/A | N/A | No derived FESA CSV was generated or used. |
|
||||
|
||||
<a id="reference-comparison--reference-hashes"></a>
|
||||
#### Reference hashes
|
||||
|
||||
Fresh pre-comparison and post-comparison SHA-256 values were identical:
|
||||
|
||||
| exact approved legacy path | SHA-256 |
|
||||
| --- | --- |
|
||||
| `reference/cantilever beam/cantilever beam.inp` | `E406EA9560321B791DBDB829E03BD24593B9875E0195D35B86BD931EDA122EF3` |
|
||||
| `reference/cantilever beam/cantilever beam displacements.csv` | `7B3312FBC8848E81D9A0FD4FF2B56BC1954636A2C14B5C1CBB269CB9477D3C31` |
|
||||
| `reference/cantilever beam/cantilever beam reactions.csv` | `BF30CDB0CD50106885DE14D63492737736C587426EBD787DE4F7EE6AA86DAA23` |
|
||||
| `reference/cantilever beam/cantilever beam elemental forces.csv` | `E5E77FEC0FA9482AE018DBF296E74D396335C7C711BD2E9AA2315247A34290BA` |
|
||||
|
||||
`git diff --exit-code -- reference/` exited 0 and
|
||||
`git status --short -- reference/` was empty after both comparison runs.
|
||||
|
||||
<a id="reference-comparison--authoritative-hdf5-audit"></a>
|
||||
#### Authoritative HDF5 audit
|
||||
|
||||
`h5ls` and `h5dump` opened `results.h5` read-only and established:
|
||||
|
||||
- schema version `0`, solver version `0.1.0`, feature
|
||||
`linear-static-3d-euler-beam`, formulation `B33-3D-Euler-Bernoulli`,
|
||||
`Step-1`, and frame `0`;
|
||||
- metadata unit label `user-consistent-unspecified`, as required for ordinary
|
||||
`.inp` interpretation; the approved reference-model contract supplies the
|
||||
external SI provenance used by this comparison;
|
||||
- coordinate convention
|
||||
`global-cartesian; beam-local=(t,n1,t-cross-n1)`;
|
||||
- source identity
|
||||
`path=C:/Users/baram/orca/workspaces/FESADev/LinearStatic/reference/cantilever beam/cantilever beam.inp;content_identity=fnv1a64:04543464cc970405`;
|
||||
a fresh FNV-1a calculation of the input bytes reproduced
|
||||
`04543464cc970405`;
|
||||
- 11 nodes with stable internal IDs 0 through 10, source labels 1 through 11,
|
||||
instance `PART-1_1-1`, global coordinates `(0..10,0,0)`;
|
||||
- 10 elements with stable IDs 0 through 9, source labels 1 through 10,
|
||||
consecutive connectivity and identity local axes;
|
||||
- displacement and reaction shapes `[11,6]`, section-resultant shape
|
||||
`[10,2,4]`, exact component/unit/coordinate/location attributes, and finite
|
||||
float64 values;
|
||||
- mandatory `stress_s11` compound schema with 20 finite rows (10 elements x 2
|
||||
Gauss points), `S11`, `force/length^2`, beam-local section-point attributes,
|
||||
and the required `fesa-default` centroid identity.
|
||||
|
||||
Only `results.h5` and `comparison.json` exist in the build-local evidence
|
||||
directory.
|
||||
|
||||
<a id="reference-comparison--comparison-contract"></a>
|
||||
### Comparison Contract
|
||||
|
||||
- reference_csv_schema_version: `abaqus-cae-report-csv-v0`
|
||||
- hdf5_schema_version: `0`
|
||||
- model / frame normalization: CSV
|
||||
`Increment 1: Step Time = 1.000` -> `(cantilever-beam-b33, Step-1, frame 0)`
|
||||
- id_matching: exact preserved `instance_name` plus source node label;
|
||||
section-resultant endpoints project to an eligible source-node station
|
||||
- row-set policy: expected canonical keys are all 11 nodes crossed with 6
|
||||
displacement, 6 reaction, and 4 section-resultant components
|
||||
- displacement normalization:
|
||||
`U-U1/U-U2/U-U3/UR-UR1/UR-UR2/UR-UR3` ->
|
||||
`UX/UY/UZ/URX/URY/URZ`
|
||||
- reaction normalization:
|
||||
`RF-RF1/RF-RF2/RF-RF3/RM-RM1/RM-RM2/RM-RM3` ->
|
||||
`RF1/RF2/RF3/RM1/RM2/RM3`
|
||||
- section normalization: `SF-SF1 -> N`, `SM-SM1 -> My`,
|
||||
`SM-SM2 -> Mz`, `SM-SM3 -> T`
|
||||
- coordinates: global Cartesian for nodal quantities; beam local for section
|
||||
resultants
|
||||
- output locations: nodal displacement/reaction and positive-local-x endpoint
|
||||
section cut projected to node station
|
||||
- interior-node policy: both incident endpoints must first pass the approved
|
||||
component tolerance; the smaller stable element ID is selected without
|
||||
averaging
|
||||
- tolerance source: requirements 036-039, ADR-014, approved I/O definition,
|
||||
and reference-model contract
|
||||
- tolerance policy: `absolute_floor + 1e-6 * reference_scale`
|
||||
- reference scale: maximum absolute value from read-only Abaqus rows in the
|
||||
same model, step/frame, quantity, and component only
|
||||
- SI floors: `1e-9` for displacement/rotation and `1e-3` for force/moment;
|
||||
zero scale uses the floor alone
|
||||
- fail-before-tolerance conditions: missing, extra, duplicate, nonfinite,
|
||||
schema-mismatched, or identity-mismatched row
|
||||
- zero-reference policy: no zero clamp, deletion, substitution, or omission
|
||||
|
||||
The complete expected set of 176 canonical keys was reconstructed independently
|
||||
from the contract and matched the 176 unique ledger rows exactly. The 16 expected
|
||||
quantity/component keys matched the 16 unique metrics. Every serialized absolute
|
||||
error, tolerance, pass decision, Abaqus-only reference scale, maximum error,
|
||||
maximum tolerance-normalized error, RMS error, norm error, and worst-row index was
|
||||
recalculated from the row ledger and matched exactly. Missing rows, extra rows,
|
||||
duplicate rows, nonfinite rows, and failed rows were all zero.
|
||||
|
||||
The authoritative TASK-24 `ComparisonReport`, test contract, serialized JSON, and
|
||||
Step 26 acceptance probe all define the verdict as the boolean `passed`. Final
|
||||
review reproduced that the former `$metrics.status` sample failed against the valid
|
||||
artifact, corrected the phase probe to `$metrics.passed -eq $true`, and reran the
|
||||
exact acceptance chain successfully. The generated JSON has `passed=true`.
|
||||
|
||||
<a id="reference-comparison--execution-evidence"></a>
|
||||
### Execution Evidence
|
||||
|
||||
The exact command was run twice after the artifact precheck:
|
||||
|
||||
```powershell
|
||||
ctest --test-dir .harness/build -C Debug -R B33ReferenceComparison -V --output-on-failure
|
||||
```
|
||||
|
||||
Both executions passed the single exact test
|
||||
`B33ReferenceComparison.GeneratesAuthoritativeHdf5AndComparisonEvidence` 1/1.
|
||||
Each run reset only `.harness/build/reference/cantilever-beam-b33/` and regenerated
|
||||
the same two build-local files. The comparison ledger was byte deterministic on
|
||||
both runs:
|
||||
|
||||
- size: `128118` bytes
|
||||
- SHA-256: `258347AEA791D981AEA9B2BCAD85DE5344D4859ECA3692DC5E7AA01A848F8E0D`
|
||||
- verdict: `passed=true`
|
||||
|
||||
`results.h5` remains the authoritative solver output. The JSON is deterministic
|
||||
review evidence derived directly from HDF5 and the read-only Abaqus CSV rows.
|
||||
|
||||
<a id="reference-comparison--quantity-results"></a>
|
||||
### Quantity Results
|
||||
|
||||
`maximum_relative_error` below is calculated only where the Abaqus reference is
|
||||
nonzero. It is reported for audit completeness, but it is not the acceptance
|
||||
rule: near-zero Abaqus residues make row-relative error ill-conditioned. The
|
||||
approved component-scale normalized error is `absolute_error / row_tolerance`.
|
||||
|
||||
| quantity | FESA HDF5 dataset | reference CSV | compared | missing | extra | nonfinite | max abs error | max relative error | max tolerance-normalized error | RMS error | norm error | worst ID/component by abs error | result |
|
||||
| --- | --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | --- | --- |
|
||||
| displacement | `/steps/Step-1/frames/0/nodal/displacement` | `reference/cantilever beam/cantilever beam displacements.csv` | 66 | 0 | 0 | 0 | `5.333229170789711e-10` | `1.0` | `0.026602795021994977` | `1.1637590907608428e-10` | `9.454423547085314e-10` | node 11 / `UZ` | pass |
|
||||
| reaction | `/steps/Step-1/frames/0/nodal/reaction` | `reference/cantilever beam/cantilever beam reactions.csv` | 66 | 0 | 0 | 0 | `5.0514936447143555e-6` | `8.195638656616211e-13` | `8.187451205410801e-7` | `6.403678373262425e-7` | `5.202372903532068e-6` | node 1 / `RM2` | pass |
|
||||
| section resultant | `/steps/Step-1/frames/0/element/section_resultant` | `reference/cantilever beam/cantilever beam elemental forces.csv` | 44 | 0 | 0 | 0 | `1.5600242861189492e-2` | `1.0000155680249674` | `0.0015598682992890203` | `0.0023518254339534184` | `0.015600245073676508` | node station 11 / `My` | pass |
|
||||
| stress | `/steps/Step-1/frames/0/element/stress_s11` | N/A | N/A | N/A | N/A | 0 in 20 mandatory HDF5 rows | N/A | N/A | N/A | N/A | N/A | N/A | N/A for Abaqus comparison; HDF5 requirement passed |
|
||||
|
||||
The displacement row-relative maximum occurs at node 1 `UZ`, where the stored
|
||||
reference residue is `-1e-30`; the section row-relative maximum occurs at free-end
|
||||
`My`, where the stored reference residue is `-1.56e-2`. Neither row was clamped or
|
||||
omitted. Their approved mixed-tolerance decisions pass.
|
||||
|
||||
<a id="reference-comparison--component-metrics"></a>
|
||||
#### Component metrics
|
||||
|
||||
Each group contains 11 matched rows. `worst_row` is the zero-based index in the
|
||||
deterministic JSON row ledger.
|
||||
|
||||
| quantity | component | reference scale | row tolerance | max abs error | max normalized error | RMS error | norm error | worst row | worst identity | result |
|
||||
| --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | --- | --- |
|
||||
| displacement | `UX` | `0` | `1e-9` | `0` | `0` | `0` | `0` | 0 | node 1 / `UX` | pass |
|
||||
| displacement | `UY` | `0` | `1e-9` | `0` | `0` | `0` | `0` | 1 | node 1 / `UY` | pass |
|
||||
| displacement | `UZ` | `0.0190476272` | `2.00476272e-8` | `5.333229170789711e-10` | `0.026602795021994977` | `2.790953046857666e-10` | `9.256544063926071e-10` | 62 | node 11 / `UZ` | pass |
|
||||
| displacement | `URX` | `0` | `1e-9` | `0` | `0` | `0` | `0` | 3 | node 1 / `URX` | pass |
|
||||
| displacement | `URY` | `0.00285714399` | `3.85714399e-9` | `1.000013943180944e-10` | `0.025926279801157852` | `5.801658540511775e-11` | `1.924192454063848e-10` | 52 | node 9 / `URY` | pass |
|
||||
| displacement | `URZ` | `0` | `1e-9` | `0` | `0` | `0` | `0` | 5 | node 1 / `URZ` | pass |
|
||||
| reaction | `RF1` | `0` | `1e-3` | `0` | `0` | `0` | `0` | 66 | node 1 / `RF1` | pass |
|
||||
| reaction | `RF2` | `0` | `1e-3` | `0` | `0` | `0` | `0` | 67 | node 1 / `RF2` | pass |
|
||||
| reaction | `RF3` | `1e6` | `1.001` | `8.195638656616211e-7` | `8.187451205410801e-7` | `3.6239383393839433e-7` | `1.2019243735120167e-6` | 68 | node 1 / `RF3` | pass |
|
||||
| reaction | `RM1` | `0` | `1e-3` | `0` | `0` | `0` | `0` | 69 | node 1 / `RM1` | pass |
|
||||
| reaction | `RM2` | `1e7` | `10.001` | `5.0514936447143555e-6` | `5.05098854585977e-7` | `1.5261377760919117e-6` | `5.061626381684292e-6` | 70 | node 1 / `RM2` | pass |
|
||||
| reaction | `RM3` | `0` | `1e-3` | `0` | `0` | `0` | `0` | 71 | node 1 / `RM3` | pass |
|
||||
| section resultant | `N` | `0` | `1e-3` | `0` | `0` | `0` | `0` | 132 | node 1 / `N` | pass |
|
||||
| section resultant | `T` | `0` | `1e-3` | `0` | `0` | `0` | `0` | 133 | node 1 / `T` | pass |
|
||||
| section resultant | `My` | `1e7` | `10.001` | `0.015600242861189492` | `0.0015598682992890203` | `0.004703650867906837` | `0.015600245073676508` | 174 | node 11 / `My` | pass |
|
||||
| section resultant | `Mz` | `0` | `1e-3` | `0` | `0` | `0` | `0` | 135 | node 1 / `Mz` | pass |
|
||||
|
||||
The largest normalized comparison error across all 176 rows is
|
||||
`0.026602795021994977` at node 11 `UZ`, below the pass boundary of `1.0`.
|
||||
|
||||
<a id="reference-comparison--row-decision-ledger"></a>
|
||||
#### Row decision ledger
|
||||
|
||||
Every row decision is recorded in the deterministic build-local
|
||||
`comparison.json` identified above. Its stable row order is displacement nodes
|
||||
1-11 x six components, reaction nodes 1-11 x six components, then section node
|
||||
stations 1-11 x `[N,T,My,Mz]`. Independent parsing confirmed:
|
||||
|
||||
- rows: 176
|
||||
- unique canonical row keys: 176
|
||||
- row decisions with `passed=true`: 176
|
||||
- row decisions with `passed=false`: 0
|
||||
- finite FESA/reference/error/tolerance records: 176
|
||||
- missing / extra / duplicate / identity-mismatched rows: 0 / 0 / 0 / 0
|
||||
- metrics: 16 unique expected component groups
|
||||
|
||||
<a id="reference-comparison--stress-reference-status"></a>
|
||||
### Stress Reference Status
|
||||
|
||||
- Abaqus stress reference comparison: N/A
|
||||
- reason: the approved V0 reference contract excludes beam-stress CSV
|
||||
comparison and substitutes analytical/unit plus HDF5 schema evidence
|
||||
- mandatory solver stress output: pass
|
||||
- direct evidence: `stress_s11` exists with the exact compound schema, exact
|
||||
unit/coordinate/location attributes, two Gauss rows for each of ten elements,
|
||||
finite `S11`, and deterministic element/Gauss ordering
|
||||
|
||||
No stress reference row was synthesized, and mandatory HDF5 stress was not
|
||||
treated as optional.
|
||||
|
||||
<a id="reference-comparison--physics-evidence-handoff"></a>
|
||||
### Physics Evidence Handoff
|
||||
|
||||
The comparator serialized the following evidence for independent Step 27 review:
|
||||
|
||||
| evidence | value |
|
||||
| --- | --- |
|
||||
| free residual norm | `9.356339321107032e-7` |
|
||||
| applied force | `[0, 0, -1000000]` |
|
||||
| reaction force | `[0, 0, 999999.9999998808]` |
|
||||
| applied moment about origin | `[0, 10000000, 0]` |
|
||||
| reaction moment about origin | `[0, -9999999.999997258, 0]` |
|
||||
| endpoint consistency | `passed=true` |
|
||||
|
||||
These values are handed off as evidence only. This Step does not interpret them
|
||||
as a physics-sanity verdict.
|
||||
|
||||
<a id="reference-comparison--failure-classification"></a>
|
||||
### Failure Classification
|
||||
|
||||
- classification: `N/A`
|
||||
- primary_failure: `N/A`
|
||||
- evidence: artifact precheck passed; exact comparison CTest passed twice;
|
||||
176/176 rows and 16/16 metric groups passed; no schema, identity, unit,
|
||||
coordinate, nonfinite, missing/extra, or tolerance failure was found
|
||||
- correction_handoff: `N/A`
|
||||
|
||||
<a id="reference-comparison--handoff-recommendation"></a>
|
||||
### Handoff Recommendation
|
||||
|
||||
| target_agent | reason | required input |
|
||||
| --- | --- | --- |
|
||||
| Physics Evaluation Agent | All required reference comparisons passed the exact approved tolerance. | This report, authoritative build-local `results.h5`, deterministic `comparison.json`, and its `physics_evidence`. |
|
||||
|
||||
The handoff status is `pass-for-physics-evaluation` only. Physics sanity remains
|
||||
responsible for global force/moment equilibrium, reaction sign, displacement
|
||||
direction, symmetry, section-force consistency, residual interpretation, and
|
||||
model-coverage adequacy.
|
||||
|
||||
<a id="reference-comparison--open-issues"></a>
|
||||
### Open Issues
|
||||
|
||||
- Non-blocking evidence typo: the Step 25 build/test report prints the input
|
||||
SHA-256 without the second `DB` after `...1DB`; the fresh 64-character pre/post
|
||||
value in this report matches the unchanged working-tree file. Reference Git
|
||||
diff/status and the end-to-end reference snapshot check are clean.
|
||||
- Resolved final-review finding: the Step 26 acceptance probe now reads the
|
||||
authoritative boolean `passed`, and its exact command passes on the current artifact.
|
||||
- No issue blocks Physics Evaluation.
|
||||
|
||||
<a id="physics-evaluation"></a>
|
||||
|
||||
<a id="physics-evaluation--linear-static-3d-euler-beam-physics-evaluation-report"></a>
|
||||
## Linear Static 3D Euler Beam Physics Evaluation Report
|
||||
|
||||
<a id="physics-evaluation--metadata"></a>
|
||||
### Metadata
|
||||
|
||||
- feature_id: `linear-static-3d-euler-beam`
|
||||
- model_id: `cantilever-beam-b33`
|
||||
- evaluated_head: `d76d052456ec134a98bcd5aa3b3c18a6b0ad6ba4`
|
||||
- source_reference_verification_report: `docs/linear-static-3d-euler-beam/verification.md`
|
||||
- source_reference_model: `docs/linear-static-3d-euler-beam/reference-model.md`
|
||||
- source_requirement: `docs/linear-static-3d-euler-beam/requirements.md`
|
||||
- source_formulation: `docs/linear-static-3d-euler-beam/formulation.md`
|
||||
- source_numerical_review: `docs/linear-static-3d-euler-beam/numerical-review.md`
|
||||
- source_io_definition: `docs/linear-static-3d-euler-beam/io.md`
|
||||
- status: `pass-for-release-agent`
|
||||
- date: `2026-08-09`
|
||||
|
||||
This verdict means that the documented physical checks pass and the Release Agent may audit
|
||||
release readiness. It does not approve release readiness and does not re-evaluate the Step 26
|
||||
reference tolerance decision.
|
||||
|
||||
<a id="physics-evaluation--input-evidence"></a>
|
||||
### Input Evidence
|
||||
|
||||
The reference-verification prerequisite has status `pass-for-physics-evaluation`. Its checked
|
||||
artifact identity was reproduced before the physics checks and again after the targeted CTest.
|
||||
|
||||
| evidence | exact path or identity | status | notes |
|
||||
| --- | --- | --- | --- |
|
||||
| reference verification | `docs/linear-static-3d-euler-beam/verification.md` | pass-for-physics-evaluation | Required gate satisfied. |
|
||||
| solver HDF5 | `.harness/build/reference/cantilever-beam-b33/results.h5` | present and readable | 25,336 bytes; post-acceptance-run SHA-256 `13ECCF68262C14BBDE0F63667C0F10896ACD40EFEC56E8C9121C298333FD9B6D`. |
|
||||
| comparison evidence | `.harness/build/reference/cantilever-beam-b33/comparison.json` | present and passing | 128,118 bytes; SHA-256 `258347AEA791D981AEA9B2BCAD85DE5344D4859ECA3692DC5E7AA01A848F8E0D`; `passed=true`, 176 rows, 16 metrics. |
|
||||
| reference input | `reference/cantilever beam/cantilever beam.inp` | exact read-only artifact | SHA-256 `E406EA9560321B791DB829E03BD24593B9875E0195D35B86BD931EDA122EF3`; `TYPE=B33`. |
|
||||
| reference displacement | `reference/cantilever beam/cantilever beam displacements.csv` | exact read-only artifact | SHA-256 `7B3312FBC8848E81D9A0FD4FF2B56BC1954636A2C14B5C1CBB269CB9477D3C31`. |
|
||||
| reference reaction | `reference/cantilever beam/cantilever beam reactions.csv` | exact read-only artifact | SHA-256 `BF30CDB0CD50106885DE14D63492737736C587426EBD787DE4F7EE6AA86DAA23`. |
|
||||
| reference elemental force | `reference/cantilever beam/cantilever beam elemental forces.csv` | exact read-only artifact | SHA-256 `E5E77FEC0FA9482AE018DBF296E74D396335C7C711BD2E9AA2315247A34290BA`. |
|
||||
| solver CSV views | N/A | not used | No derived FESA CSV was generated or used. |
|
||||
| stress reference CSV | N/A by approved contract | not applicable | `S11` is evaluated from HDF5 schema, formulation, and analytical/unit evidence only. |
|
||||
| targeted physics tests | `.harness/build`, MSVC x64 Debug | pass | Exact Step 27 CTest passed 17/17: EulerBeam3D 10, ResultRecovery 6, B33ReferenceComparison 1. |
|
||||
|
||||
Read-only HDF5 inspection confirmed schema `0`, solver `0.1.0`, feature identity, `Step-1` frame
|
||||
`0`, formulation `B33-3D-Euler-Bernoulli`, source content identity
|
||||
`fnv1a64:04543464cc970405`, and coordinate convention
|
||||
`global-cartesian; beam-local=(t,n1,t-cross-n1)`. The file contains 11 nodes at
|
||||
`(x,y,z)=(0..10,0,0)` m and 10 consecutive one-metre elements. Every element has identity local
|
||||
axes, so local `(x,y,z)` equals global `(X,Y,Z)` for this model.
|
||||
|
||||
The documented physical model is a 10 m cantilever with node 1 fixed in all six DOFs and a
|
||||
free-end global/local `FZ=-1.0e6 N` at node 11. The section and material are SI:
|
||||
`E=2.1e11 Pa`, `Iy=I11=0.0833333 m^4`, and the only expected deformation mode is local-`z`
|
||||
translation with bending about local `y`.
|
||||
|
||||
<a id="physics-evaluation--physics-checks"></a>
|
||||
### Physics Checks
|
||||
|
||||
All normalized physics criteria below come from the approved `1e-10` residual/equilibrium,
|
||||
`1e-12` matrix/transform/end-sign, or `1e-9` analytical contracts. They are independent checks of
|
||||
physical meaning, not a second application of the Abaqus row tolerance.
|
||||
|
||||
<a id="physics-evaluation--1-global-equilibrium"></a>
|
||||
#### 1. global equilibrium
|
||||
|
||||
In global Cartesian coordinates, force equilibrium is
|
||||
|
||||
`r_F = sum(F_applied) + sum(R)`,
|
||||
|
||||
with criterion
|
||||
|
||||
`||r_F|| / max(||sum(F_applied)||, ||sum(R)||) <= 1e-10`.
|
||||
|
||||
The comparison physics evidence records `sum(F_applied)=[0,0,-1000000] N` and
|
||||
`sum(R)=[0,0,999999.9999998808] N`. Therefore
|
||||
`r_F=[0,0,-1.1920928955078125e-7] N`, its norm is
|
||||
`1.1920928955078125e-7 N`, and the normalized value is
|
||||
`1.1920928955078125e-13`. Verdict: **pass**.
|
||||
|
||||
Moment equilibrium about the global origin is
|
||||
|
||||
`r_M = sum(M_applied) + sum(X cross F_applied) + sum(M_reaction) + sum(X cross R_force)`.
|
||||
|
||||
The free-end force gives `[0,1.0e7,0] N*m`; the complete HDF5 reaction field gives
|
||||
`[0,-9999999.999997258,0] N*m`. Thus `r_M=[0,2.7418136596679688e-6,0] N*m`,
|
||||
with normalized norm `2.7418136596679688e-13` against `1.0e7 N*m`. Verdict: **pass**.
|
||||
|
||||
<a id="physics-evaluation--2-reaction-consistency-and-true-free-residual"></a>
|
||||
#### 2. reaction consistency and true free residual
|
||||
|
||||
The constrained reaction contract is `R_c=(K*d-F)_c`. At fixed node 1 the observed global row is
|
||||
`[RF1,RF2,RF3,RM1,RM2,RM3] = [0,0,1000000.0000008196,0,-10000000.000005051,0]`
|
||||
in `[N,N,N,N*m,N*m,N*m]`. It opposes the applied `-Z` force and balances its positive origin
|
||||
moment. Differences from the physical closed-form reactions are `8.195638656616211e-7 N` and
|
||||
`5.0514936447143555e-6 N*m`, normalized to `8.195638656616211e-13` and
|
||||
`5.0514936447143555e-13`. Verdict: **pass**.
|
||||
|
||||
The reaction dataset intentionally preserves free residuals. The implementation uses
|
||||
|
||||
`rho_f = ||(K*d-F)_f||_2 / max(||K*d||_f, ||F||_f)`
|
||||
|
||||
with no artificial unit floor. The serialized true free residual norm is
|
||||
`9.356339321107032e-7 N-equivalent`; the physical free scale is `1.0e6 N`, so
|
||||
`rho_f=9.356339321107032e-13 <= 1e-10`. The largest observed free force-residual component is
|
||||
`5.9604644775390625e-7 N`, and the largest free moment-residual component is
|
||||
`2.0861625671386719e-7 N*m`. Verdict: **pass**.
|
||||
|
||||
<a id="physics-evaluation--3-displacement-direction-and-rotation-sign"></a>
|
||||
#### 3. displacement direction and rotation sign
|
||||
|
||||
For free-end local `Pz=-1.0e6 N`, the documented Euler-Bernoulli solution is
|
||||
|
||||
`w(L)=Pz*L^3/(3*E*Iy)`, `theta_y(L)=-Pz*L^2/(2*E*Iy)`.
|
||||
|
||||
The expected values are `-0.0190476266666697 m` and `+0.00285714400000046 rad`.
|
||||
HDF5 gives tip `UZ=-0.019047626666677083 m` and `URY=+0.0028571440000013902 rad`, with relative
|
||||
errors `3.87e-13` and `3.27e-13`, below the analytical `1e-9` criterion. All non-root `UZ` values
|
||||
are negative and monotonically increase in magnitude toward the loaded tip; all non-root `URY`
|
||||
values are positive, as required by `theta_y=-dw/dx`. Verdict: **pass**.
|
||||
|
||||
<a id="physics-evaluation--4-expected-zero-and-uncoupled-symmetry"></a>
|
||||
#### 4. expected zero and uncoupled symmetry
|
||||
|
||||
The fixed-root displacement row is exactly zero in all six components. Across all nodes,
|
||||
`UX`, `UY`, `URX`, and `URZ` are exactly zero. The only nonzero kinematic components are `UZ` and
|
||||
`URY`, and the only physical constrained reactions are `RF3` and `RM2`. In the element recovery,
|
||||
`epsilon0`, `kappa_x`, and `kappa_z`, and the corresponding `N`, `T`, and `Mz`, are exactly zero.
|
||||
This is the documented uncoupled local-`z` bending symmetry, with no axial, torsional, or
|
||||
cross-plane leakage. Verdict: **pass**.
|
||||
|
||||
<a id="physics-evaluation--5-element-force-adjacent-endpoints-and-boundary-balance"></a>
|
||||
#### 5. element force, adjacent endpoints, and boundary balance
|
||||
|
||||
The HDF5 `end_force_local` rows are outward endpoint actions in
|
||||
`[FX,FY,FZ,MX,MY,MZ]`; `section_resultant` rows are positive-local-`x` section cuts in
|
||||
`[N,T,My,Mz]`. With no distributed load,
|
||||
|
||||
`F_X=n*N`, `M_X=n*T`, `M_Y=n*My`, `M_Z=n*Mz`,
|
||||
`F_Y=-n*dMz/dx`, and `F_Z=n*dMy/dx`, where `n=-1` at `xi=-1` and `n=+1` at `xi=+1`.
|
||||
|
||||
Observed section `My` is positive and decreases linearly from
|
||||
`10000000.000005048 N*m` at the root to `2.4286118949223834e-7 N*m` at the free end. The maximum
|
||||
positive-face `My` mismatch between adjacent unloaded endpoints is
|
||||
`2.73110345005989e-7 N*m`, normalized to `2.73110345005989e-14` against the model moment scale.
|
||||
The comparison ledger independently records `endpoint_consistency_passed=true` without averaging.
|
||||
|
||||
Adjacent outward actions cancel. The maximum interior `FZ_right+FZ_left` magnitude is
|
||||
`5.364418029785156e-7 N` (`5.364418029785156e-13` normalized); the maximum interior
|
||||
`MY_right+MY_left` magnitude is `2.682209014892578e-7 N*m`
|
||||
(`2.682209014892578e-14` normalized). Both satisfy the documented end-sign/residual criteria.
|
||||
|
||||
At the root, the first element action is exactly the constrained reaction evidence:
|
||||
`FZ=+1000000.0000008196 N`, `MY=-10000000.000005051 N*m`. At the free boundary, the last element
|
||||
has `FZ=-999999.9999998808 N` and `MY=-5.9604644775390625e-8 N*m`, balancing the applied end force
|
||||
and the zero applied end moment to normalized residual scale. Verdict: **pass**.
|
||||
|
||||
<a id="physics-evaluation--6-localglobal-mapping-and-section-force-signs"></a>
|
||||
#### 6. local/global mapping and section-force signs
|
||||
|
||||
Every stored local-axis matrix is the identity. Therefore the global `-Z` load is local
|
||||
`Pz=-1.0e6 N`, `UZ=w<0`, `URY=theta_y>0`, and the positive-face section resultant is
|
||||
`My=-Pz*(L-x)>0`. The observed outward signs are `FZ>0, MY<0` at left endpoints and
|
||||
`FZ<0, MY>0` at right endpoints, except for the physically zero free-end moment residue. These
|
||||
values satisfy the documented `theta_y=-w'`, `My=-E*Iy*w''`, outward-normal, and
|
||||
positive-face-section-cut conventions. Verdict: **pass**.
|
||||
|
||||
<a id="physics-evaluation--7-stress-location-unit-and-sign-sanity"></a>
|
||||
#### 7. stress location, unit, and sign sanity
|
||||
|
||||
The stress contract is
|
||||
|
||||
`S11(xi,y,z)=E*(epsilon0 + z*kappa_y - y*kappa_z)`,
|
||||
|
||||
where `x1=y`, `x2=z`, the coordinate system is beam local, the unit is `force/length^2`, and the
|
||||
location is a section point at each of two Gauss points. The reference input has no section
|
||||
points, so HDF5 correctly contains 20 ordered `fesa-default` centroid rows
|
||||
`(x1,x2)=(0,0)`, one at each Gauss point of ten elements. This model has pure bending with
|
||||
`epsilon0=0`; consequently all 20 observed centroid `S11` values are exactly `0 Pa`.
|
||||
|
||||
Nonzero location/sign evidence comes only from the approved analytical/unit portfolio, not from
|
||||
an Abaqus stress comparison. `EulerBeam3D.RecoversSectionPointAndDefaultCentroidS11` passed with
|
||||
`epsilon0=0.01`, `kappa_y=0.02 1/m`, `kappa_z=-0.03 1/m`, `E=2.1e11 Pa`: the formula gives
|
||||
`1.575e9 Pa` at `(y,z)=(0.25,-0.5)`, `8.4e8 Pa` at `(-0.4,0.3)`, and `2.1e9 Pa` at the default
|
||||
centroid. The test enforces the formula at both Gauss points with normalized `1e-12` evidence.
|
||||
Abaqus beam stress comparison remains explicitly N/A. Verdict: **pass**.
|
||||
|
||||
<a id="physics-evaluation--8-nonfinite-rigid-body-abnormal-magnitude-and-energy-symptoms"></a>
|
||||
#### 8. nonfinite, rigid-body, abnormal-magnitude, and energy symptoms
|
||||
|
||||
All mandatory numeric HDF5 rows inspected here are finite; `comparison.json` also records no
|
||||
nonfinite row among the 176 compared rows and the 20 stress rows are finite. The fixed root is
|
||||
exactly zero, factorization/solution completed, the normalized free residual is `9.36e-13`, and
|
||||
the displacement field is smooth, so there is no rigid-body-mode symptom.
|
||||
|
||||
For this one-load linear case, the recoverable strain energy is
|
||||
`U=0.5*F^T*d=9523.81333333854 N*m`, which is finite and positive. The ratios
|
||||
`|UZ_tip|/L=0.00190476266666771` and `|URY_tip|=0.00285714400000139 rad` agree with the analytical
|
||||
solution and show no abnormal magnitude relative to the documented small-displacement/rotation
|
||||
model. The targeted rank/energy test also passed the six-rigid-mode, rank-six, and positive
|
||||
deformation-energy checks. Verdict: **pass**.
|
||||
|
||||
<a id="physics-evaluation--9-model-coverage"></a>
|
||||
#### 9. model coverage
|
||||
|
||||
The approved B33 bundle is one identity-axis local-`z` bending cantilever. It directly covers the
|
||||
end-to-end parser/solver/HDF5 path, global equilibrium, reaction sign, `UZ/URY`, `My/FZ`, endpoint
|
||||
continuity, and the centroid stress fallback. It does not by itself cover axial, torsion, local-`y`
|
||||
bending, rotated space, nonzero fiber stress, prescribed displacement, or the formulation-only
|
||||
line-load kernel. The targeted analytical/unit portfolio supplies the documented complementary
|
||||
coverage:
|
||||
|
||||
| coverage | targeted passing evidence | criterion |
|
||||
| --- | --- | --- |
|
||||
| axial, torsion, both bending planes | `EulerBeam3D.AnalyticalAxialTorsionAndTwoPlaneBendingRecover` and `ResultRecovery.MatchesAxialTorsionAndTwoPlaneEndSigns` | analytical relative `1e-9`; signed recovery contract |
|
||||
| rotated local/global mapping | `EulerBeam3D.RotatedTransformPreservesWorkAndEnergy` | transform/work/energy normalized `1e-12` |
|
||||
| constant local line-load kernel | `EulerBeam3D.ConstantLineLoadMatchesAllSignedComponents` | all 12 signed components normalized `1e-12`; `*DLOAD` remains outside CLI scope |
|
||||
| rigid modes, rank, and energy | `EulerBeam3D.HasSixRigidModesRankSixAndPositiveDeformationEnergy` | rigid residual `1e-10`, rank six, positive deformation energy |
|
||||
| prescribed displacement and residual | `ResultRecovery.ComputesResidualReactionForNonzeroPrescription`, `ResultRecovery.EnforcesNormalizedFreeResidual` | partition/reaction and normalized residual `1e-10` |
|
||||
| result identity and continuity | `ResultRecovery.KeepsEndActionSectionAndGaussResultsDistinct`, `ResultRecovery.RequiresInteriorEndpointConsistencyWithoutAveraging` | distinct locations and no-average consistency |
|
||||
| S11 location/sign/default | `EulerBeam3D.RecoversSectionPointAndDefaultCentroidS11`, `ResultRecovery.OrdersStressPointsAndDefaultCentroid` | formula/schema normalized `1e-12` |
|
||||
|
||||
The exact acceptance command passed all 17 selected tests. The single reference model plus this
|
||||
analytical portfolio covers every documented physical expectation without attributing unsupported
|
||||
coverage to the legacy CSV bundle. Verdict: **pass**.
|
||||
|
||||
<a id="physics-evaluation--failure-classification"></a>
|
||||
### Failure Classification
|
||||
|
||||
- classification: `N/A`
|
||||
- primary_failure: `N/A`
|
||||
- evidence: all documented physics checks passed; no equilibrium, reaction, displacement,
|
||||
symmetry, element-force, stress-location, rigid-body, nonfinite, coverage, contract, or
|
||||
environment failure was found
|
||||
- correction_handoff: `N/A`
|
||||
|
||||
<a id="physics-evaluation--evaluation-verdict"></a>
|
||||
### Evaluation Verdict
|
||||
|
||||
- verdict: `pass-for-release-agent`
|
||||
- reason: the exact reference gate and artifact identity are valid; force and origin-moment
|
||||
equilibrium, constrained reaction consistency, true free residual, deformation signs, expected
|
||||
zeros, element force balance, local/global and section-force signs, S11 schema/analytical sanity,
|
||||
finite/energy/mode checks, and complementary model coverage all satisfy their documented criteria
|
||||
- release_approval: `not granted by this report`
|
||||
|
||||
<a id="physics-evaluation--handoff-recommendation"></a>
|
||||
### Handoff Recommendation
|
||||
|
||||
| target_agent | reason | required_input |
|
||||
| --- | --- | --- |
|
||||
| Release Agent | All documented physical checks passed. | This report, the Step 26 reference-verification report, exact build-local HDF5/comparison identities, targeted CTest evidence, and the limitations below. |
|
||||
|
||||
<a id="physics-evaluation--open-issues"></a>
|
||||
### Open Issues
|
||||
|
||||
- Non-blocking coverage limitation: the approved Abaqus bundle is one identity-axis local-`z`
|
||||
bending cantilever. Axial, torsion, local-`y`, rotated, prescribed-displacement, line-load, and
|
||||
nonzero stress checks rely on the approved analytical/unit portfolio; no broader Abaqus reference
|
||||
coverage is claimed.
|
||||
- Non-blocking stress limitation: the B33 bundle has no section points, so its physical `S11`
|
||||
evidence is the correct zero centroid result. Nonzero fiber location/sign evidence is analytical;
|
||||
Abaqus beam stress comparison remains N/A.
|
||||
- Non-blocking output limitation: HDF5 has no strain-energy dataset by contract. The positive energy
|
||||
value in this report is calculated from `0.5*F^T*d` and is supported by the rank/energy unit test.
|
||||
- Known formulation limitations remain: Euler-Bernoulli deep-beam applicability, transverse and
|
||||
torsional shear stress, warping, `I12!=0`, B31/Timoshenko behavior, and CLI `*DLOAD` are outside V0.
|
||||
- No open issue blocks Release Agent review.
|
||||
Reference in New Issue
Block a user