49 KiB
3D Euler–Bernoulli Beam 검증과 한계
본 문서는 당시 revision의 검증·판정 기록이다. 본문에 남긴 원본 보고서 이름과 SHA-256은
통합 전 자료의 식별자이며 정리된 현재 파일의 byte hash를 뜻하지 않는다. 원문은 Git
858e87b의 해당 기능 폴더에서 확인할 수 있다. 현재 진입점과 대응 기록은 README를 따른다.
아래 날짜·revision·명령·수치는 당시 실제 실행 기록이다. 문서 정리에서 solver를 다시 실행하지 않았다. 현재 계약은 요구사항, 정식화, I/O, 공통 tolerance를 따른다. 과거 release 판정의 재검증 경계도 유지한다.
Linear Static 3D Euler Beam Build/Test Report
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:00through2026-08-09T23:20:15.7264584+09:00
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.
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
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 |
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 2026CMAKE_GENERATOR_PLATFORM=x64CMAKE_CXX_COMPILER_ID=MSVCCMAKE_CXX_COMPILER_VERSION=19.51.36252.0CMAKE_CXX_COMPILER_ARCHITECTURE_ID=x64
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.
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. |
CTest Inventory
Label Inventory
| label | count |
|---|---|
linear-static-3d-euler-beam |
83 |
unit |
73 |
integration |
5 |
reference |
5 |
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.
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-07throughTASK-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 /WXor 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.
/W4 /WX and Warning Audit
src/fesa/CMakeLists.txtapplies/W4 /WXprivately tofesa_solverandfesa_cli.- Generated
fesa_solver.vcxprojandfesa_cli.vcxprojcontain<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
0lines. - The exact post-configure build also exited 0 and found
0warning lines.
Result: no product warning was emitted, and any MSVC product warning would have failed
the build under /WX.
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 |
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.
Failed Test Inventory
None. Feature-label CTest and full CTest both passed 83/83.
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.
Open Issues
- None blocking Reference Verification.
- The implementation report aggregate
in-progressheader is noted above but does not contradict its 18 completed Step blocks, the phase index, or the fresh build/test result.
Linear Static 3D Euler Beam Reference Verification Report
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.
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.
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. |
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.
Authoritative HDF5 audit
h5ls and h5dump opened results.h5 read-only and established:
- schema version
0, solver version0.1.0, featurelinear-static-3d-euler-beam, formulationB33-3D-Euler-Bernoulli,Step-1, and frame0; - metadata unit label
user-consistent-unspecified, as required for ordinary.inpinterpretation; 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 reproduced04543464cc970405; - 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_s11compound schema with 20 finite rows (10 elements x 2 Gauss points),S11,force/length^2, beam-local section-point attributes, and the requiredfesa-defaultcentroid identity.
Only results.h5 and comparison.json exist in the build-local evidence
directory.
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_nameplus 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-9for displacement/rotation and1e-3for 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.
Execution Evidence
The exact command was run twice after the artifact precheck:
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:
128118bytes - 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.
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.
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.
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
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_s11exists with the exact compound schema, exact unit/coordinate/location attributes, two Gauss rows for each of ten elements, finiteS11, and deterministic element/Gauss ordering
No stress reference row was synthesized, and mandatory HDF5 stress was not treated as optional.
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.
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
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.
Open Issues
- Non-blocking evidence typo: the Step 25 build/test report prints the input
SHA-256 without the second
DBafter...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.
Linear Static 3D Euler Beam Physics Evaluation Report
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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. |
Open Issues
- Non-blocking coverage limitation: the approved Abaqus bundle is one identity-axis local-
zbending 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
S11evidence 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*dand 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*DLOADare outside V0. - No open issue blocks Release Agent review.