47 KiB
MITC4 선형 정적 Shell 검증과 한계
본 문서는 당시 revision의 검증·판정 기록이다. 본문에 남긴 원본 보고서 이름과 SHA-256은
통합 전 자료의 식별자이며 정리된 현재 파일의 byte hash를 뜻하지 않는다. 원문은 Git
858e87b의 해당 기능 폴더에서 확인할 수 있다. 현재 진입점과 대응 기록은 README를 따른다.
아래 날짜·revision·명령·수치는 당시 실제 실행 기록이다. 문서 정리에서 solver를 다시 실행하지 않았다. 현재 계약은 요구사항, 정식화, I/O, 공통 tolerance를 따른다. 과거 release 판정의 재검증 경계도 유지한다.
Linear Static MITC4 Shell Build/Test Report
Metadata
- feature_id:
linear-static-mitc4-shell - source_commit:
820ba30c717b3d0e113775608e20dfd5fbc05d53 - source_implementation_report:
N/A; Harness completion evidence is recorded inphases/linear-static-mitc4-shell/index.json - source_implementation_plan:
docs/linear-static-mitc4-shell/README.md - status:
pass-for-reference-verification - date:
2026-08-13
Verdict
The formal build/test gate passes. A fresh Visual Studio 18 2026/MSVC x64 Debug configuration, clean full rebuild, three implementation-plan-focused CTest runs, nonzero JSON discovery, full CTest regression, and the required Harness Python self-test all completed successfully.
- clean full rebuild: exit
0; compiler/linker warning scan0; error scan0 - focused kernel/model/assembly/recovery regex:
87/87passed - focused linear-static lifecycle regex:
10/10passed - focused MITC4 reference-test regex:
8/8passed - CTest discovery:
144tests, including32names containingMitc4 - full CTest after clean rebuild:
144/144passed - Harness Python self-test:
7/7passed - failed tests:
0 - required S4 reference hash mismatches or Git changes:
0
This verdict authorizes handoff to Reference Verification only. It does not approve reference tolerance results, physics sanity, or release readiness.
Execution Environment
- os:
Microsoft Windows 11 Home 10.0.26200 build 26200 - branch:
feat-linear-static-mitc4-shell - source_head:
820ba30c717b3d0e113775608e20dfd5fbc05d53 - generator:
Visual Studio 18 2026 - MSBuild:
18.8.2+ce25c0108 - compiler:
MSVC 19.51.36252.0 - compiler_architecture:
x64 - Windows SDK:
10.0.26100.0 - language/config:
C++17 / Debug - CMake:
4.4.0 - build_dir:
.harness/build - harness_config: absent
- project_selection: auto CMake from root
CMakeLists.txt - command_discovery_path: default CMake/MSVC x64 Debug with implementation-plan generator and dependency paths
- resolved dependencies: GoogleTest
C:/git/googletest; oneMKL2026.1.0; oneTBB package path2023.1; HDF5 package path2.1.1
The generated compiler metadata at
.harness/build/CMakeFiles/4.4.0/CMakeCXXCompiler.cmake independently confirms
CMAKE_CXX_COMPILER_ID=MSVC and version 19.51.36252.0.
Command Log Summary
All durations below are wall-clock durations measured for the command. The initial green chain was retained as corroborating evidence; the later clean-rebuild chain is the canonical acceptance evidence.
| order | command | exit_code | duration | relevant stdout/stderr tail |
|---|---|---|---|---|
| 1 | git status --short --branch; git rev-parse HEAD |
0 | 0.8 s |
Clean feat-linear-static-mitc4-shell; HEAD matched 820ba30.... |
| 2 | Required dependency Test-Path precheck from the implementation plan |
0 | 0.215 s |
All four GoogleTest/MKL/TBB/HDF5 paths returned True. |
| 3 | 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" |
0 | 8.684 s |
MSVC 19.51.36252.0, MKL 2026.1.0; Configuring done, Generating done. The failed pthread probes were normal CMake feature probes; Found Threads: TRUE. |
| 4 | cmake --build .harness/build --config Debug |
0 | 4.382 s |
Initial incremental build produced fesa.exe and all three test executables; warning/error scan 0/0. |
| 5 | `ctest --test-dir .harness/build -C Debug -R "DomainModel | InpDomainMapping | Mitc4Geometry | Mitc4Shell |
| 6 | `ctest --test-dir .harness/build -C Debug -R "LinearStaticCli | Mitc4ShellCli" --output-on-failure` | 0 | 1.442 s |
| 7 | `ctest --test-dir .harness/build -C Debug -R "Mitc4ReferenceComparison | Mitc4S4Reference" --output-on-failure` | 0 | 1.377 s |
| 8 | ctest --test-dir .harness/build -C Debug --show-only=json-v1 |
0 | 0.208 s |
Discovered 144 tests; 32 test names contained Mitc4. |
| 9 | ctest --test-dir .harness/build -C Debug --output-on-failure |
0 | 9.789 s |
Initial full regression: 144/144 passed; failed 0. |
| 10 | First environment/reference audit helper | 1 | 0.9 s |
Non-gating report-generation error: it hardcoded nonexistent CMake internal directory CMakeFiles/4.3.0; both S4 hashes had already matched before the helper stopped. No build or test failed. |
| 11 | Corrected dynamic environment/reference audit helper | 0 | 0.583 s |
Located CMakeFiles/4.4.0/CMakeCXXCompiler.cmake; confirmed MSVC/version, both S4 hashes, no S4 diff, and clean worktree. |
| 12 | cmake --build .harness/build --config Debug --target clean |
0 | 1.251 s |
Generated Visual Studio clean target completed. |
| 13 | cmake --build .harness/build --config Debug |
0 | 94.616 s |
Canonical clean rebuild compiled/linked the solver, CLI, and all test executables; 89 output lines, warning scan 0, error scan 0. |
| 14 | cmake --build .harness/build --config Debug --target fesa_unit_tests |
0 | 1.943 s |
fesa_solver, GoogleTest, and fesa_unit_tests.exe confirmed. |
| 15 | Focused kernel/model/assembly/recovery regex from order 5 | 0 | 4.863 s |
Canonical focused run: 87/87 passed; failed 0. |
| 16 | cmake --build .harness/build --config Debug --target fesa_integration_tests |
0 | 1.712 s |
fesa_solver, GoogleTest, and fesa_integration_tests.exe confirmed. |
| 17 | Focused lifecycle regex from order 6 | 0 | 1.531 s |
Canonical focused run: 10/10 passed; failed 0. |
| 18 | cmake --build .harness/build --config Debug --target fesa_reference_tests |
0 | 1.769 s |
fesa_solver, GoogleTest, and fesa_reference_tests.exe confirmed. |
| 19 | Focused reference regex from order 7 | 0 | 1.511 s |
Canonical focused run: 8/8 passed; failed 0; S4 end-to-end tests were included. |
| 20 | ctest --test-dir .harness/build -C Debug --show-only=json-v1 |
0 | 0.080 s |
Canonical discovery: 144 total, 32 MITC4-named; unit/integration/reference labels 121/10/13. |
| 21 | ctest --test-dir .harness/build -C Debug --output-on-failure |
0 | 9.669 s |
Canonical full regression: 100% tests passed out of 144; failed 0; CTest real time 9.62 s. |
| 22 | Full reference/ Git scope and worktree audit |
0 | 0.362 s |
reference_diff_count=0, reference_status_count=0; branch and HEAD unchanged. |
| 23 | git merge-base dev HEAD plus changed-file scope audit |
0 | 0.321 s |
Merge base a058ef7...; detected scripts/execute.py, so Harness Python self-test was required. |
| 24 | uv run --with pytest python -m pytest -v -rs |
0 | 4.651 s |
Python 3.11.15, pytest 9.1.1; 7 passed in 0.11s; failed 0. |
Validation Results
| validation_stage | result | evidence |
|---|---|---|
| clean baseline | pass | Branch and HEAD matched the requested baseline; worktree was clean before report creation. |
| dependency precheck | pass | All four implementation-plan dependency paths existed. |
| fresh configure | pass | VS18/x64 configure exit 0; compiler metadata is MSVC x64. |
| clean full build | pass | Exit 0; solver, CLI, unit, integration, and reference targets compiled/linked. |
| compiler warning policy | pass | Clean rebuild emitted zero warning lines and zero compiler/linker error lines; product CMake uses warnings-as-errors. |
| feature-specific tests | pass | Approved focused regexes passed 87/87, 10/10, and 8/8. |
| CTest discovery | pass | Nonzero inventory: 144 tests, including 32 MITC4-named tests. |
| full CTest | pass | 144/144 passed after the clean rebuild. |
| Harness self-test | pass | Required because scripts/execute.py differs from the dev merge base; 7/7 passed. |
| reference immutability | pass | Required S4 SHA-256 values match; entire reference/ tree has no Git diff or status entry. |
CTest Inventory
| inventory | count |
|---|---|
| all discovered tests | 144 |
| unit label | 121 |
| integration label | 10 |
| reference label | 13 |
test names containing Mitc4 |
32 |
| failed tests | 0 |
The 32 MITC4-named tests comprise 30 tests in Mitc4* suites plus
DomainModel.Mitc4ShellRecordsPreserveSourceAndInternalIdentity and
InpDomainMapping.MapsS4AndS4rThroughOneMitc4Identity. The broader focused regex
also exercises shared Domain, DOF, constraints, assembly, recovery, and HDF5 seams.
CTest currently applies the target-wide legacy label
linear-static-3d-euler-beam to all 144 tests and has no separate MITC4 label.
The approved implementation plan explicitly permits exact suite regex filtering,
which was used here, so this labeling limitation is nonblocking.
Warning and Failure Audit
- Clean rebuild warning lines:
0. - Clean rebuild compiler/linker error lines:
0. - Focused CTest failures:
0. - Full CTest failures:
0. - Harness Python failures:
0. - Configure probes for POSIX pthread symbols reported expected negative probe
results on MSVC before CMake resolved
Threads: TRUE; this is not a configure warning or failure. - One report-generation helper failed because it assumed a CMake internal versioned directory. The corrected dynamic lookup passed. This incident did not affect configure, compile, link, test, reference artifacts, or the gate verdict.
Reference Read-Only Audit
| exact approved path | observed SHA-256 | expected match |
|---|---|---|
reference/shell/shell.inp |
4005851E1AB22FD3A16AC17A8D5DA3E051233F69F37419079F3553AD134ECFCF |
yes |
reference/shell/shell displacements.csv |
C81D94E0B4A849F87AA0F79C83A79B94D5661AC79E44ED826919AB432C87746B |
yes |
The post-test audit found zero changed paths anywhere under reference/. No Abaqus
or other reference solver was run.
Failure Classification
- classification:
N/A - primary_failure:
N/A - first_failed_build_or_test_command:
N/A - failed_target_or_test:
N/A - correction_handoff:
N/A - non_gating_incident: report-only environment metadata lookup used the wrong CMake internal directory and was rerun successfully; no product correction is required
Failed Test Inventory
None. All focused, full CTest, and Harness Python tests passed.
Handoff Recommendation
| target_agent | reason | required_input |
|---|---|---|
| Reference Verification Agent | Build/test status is pass-for-reference-verification. |
This report, source HEAD 820ba30..., .harness/build/tests/Debug/fesa_reference_tests.exe, and the unchanged declared S4 input/CSV pair. |
The focused reference CTest generated/used build-local comparison evidence, but the Build/Test Executor does not interpret that evidence as the formal reference tolerance verdict. Reference Verification must independently inspect and report it.
Open Issues
- None blocking Reference Verification.
- The target-wide legacy CTest label prevents a precise MITC4 label count; exact implementation-plan suite regexes provide the approved focused test entry point.
Linear Static MITC4 Shell Reference Verification Report
Metadata
- feature_id:
linear-static-mitc4-shell - model_id:
shell-s4 - source_head:
820ba30c717b3d0e113775608e20dfd5fbc05d53 - source_build_test_report:
docs/linear-static-mitc4-shell/verification.md - source_reference_models:
docs/linear-static-mitc4-shell/reference-model.md - source_io_definition:
docs/linear-static-mitc4-shell/io.md - source_requirements:
docs/linear-static-mitc4-shell/requirements.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-13
The fixed-absolute-tolerance evidence below is preserved as a historical record. ADR-022 supersedes that decision with the common family-scale row/RMS policy. 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 S4 reference test generated
.harness/build/reference/mitc4-shell-s4-comparison/comparison.json from the declared
read-only input/CSV pair.
- exact canonical rows: 294
- blocking translation family: 147 rows, all row/RMS gates passed
- warning-only rotation family: 147 rows, all row/RMS gates passed; warnings 0
- identity/schema/nonfinite failures: 0
- overall verdict:
passed=true
| family | rows | scale | near-zero rows | max absolute error | scale-relative RMS |
|---|---|---|---|---|---|
translation U1/U2/U3 |
147 | 2.37408203e-5 |
122 | 1.903785349151439e-7 |
1.0332756650397166e-3 |
rotation UR1/UR2/UR3 |
147 | 7.60725743e-6 |
107 | 6.882854962740428e-8 |
2.9771372973060382e-3 |
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 verifies only the approved full-integration S4 displacement case. It
does not compare S4R artifacts, claim Abaqus formulation equivalence, approve
physics sanity, or approve release readiness.
Verdict
The reference-comparison gate passes. The fresh FESA result has an exact
294-row identity match to the read-only Abaqus displacement CSV. All 147 blocking
U1/U2/U3 rows satisfy the fixed absolute tolerance 1.0e-5. All 147
warning-only UR1/UR2/UR3 rows also satisfy 1.0e-5, so no rotational warning
was emitted.
- declared cases compared:
1/1 - blocking rows passed:
147/147 - blocking failures:
0 - warning-only rows compared:
147/147 - warning-only exceedances and warnings:
0/0 - missing / extra / duplicate / nonfinite rows:
0 / 0 / 0 / 0 - largest blocking normalized error:
0.0190378534915144 - comparison verdict:
passed=true
Artifact Inventory
| item | exact path | status | direct evidence |
|---|---|---|---|
| declared S4 input | reference/shell/shell.inp |
present, unchanged | 4,770 bytes; SHA-256 4005851E1AB22FD3A16AC17A8D5DA3E051233F69F37419079F3553AD134ECFCF |
| required displacement CSV | reference/shell/shell displacements.csv |
present, unchanged | 5,592 bytes; SHA-256 C81D94E0B4A849F87AA0F79C83A79B94D5661AC79E44ED826919AB432C87746B; 49 wide rows and six finite components per row |
| authoritative solver output | .harness/build/reference/mitc4-shell-s4-comparison/results.h5 |
present, valid | 95,024 bytes after a fresh verification run; observed raw SHA-256 E88E5E5E1F83AB95CAE545AD1F28F896D3FCB82F3EA2B8006A3A703FED07A5CB (non-decision inventory only) |
| deterministic comparison ledger | .harness/build/reference/mitc4-shell-s4-comparison/comparison.json |
present, valid | 94,349 bytes; SHA-256 8E8DEA51B6F7C663BACC41FDA6103A4596DB26E02F1EAD6069D458F51E0102E6; passed=true |
| S4R reference artifacts | reference/shellR/ |
not consumed | Excluded from the approved acceptance comparison. |
| reaction and stress CSVs | other files under reference/shell/ |
not consumed | Optional inspection evidence only; not an equality gate. |
| FESA-derived CSV | N/A | not generated | HDF5 was compared directly to the Abaqus CSV. |
The input and required CSV had identical SHA-256 values and identical UTC
modification times (2026-08-11T11:44:40.9520527Z) before and after the fresh
comparison runs. git diff --name-only -- reference and
git status --short -- reference each returned zero paths.
The HDF5 hash above inventories one fresh generation, not a stable content identity. Raw HDF5 bytes changed across regenerations while the projected values and deterministic JSON ledger remained identical; concurrent executions of the same ignored build-local route may replace the file again. This report does not claim byte-identical HDF5 container output.
Authoritative HDF5 projection audit
The comparator and a read-only HDF5 2.1.1 inspection established:
/metadata: schema version0, featurelinear-static-mitc4-shell, solver version0.1.0,Step-1, frame0, internal formulationFESA-MITC4, and integration rule2x2x2-gauss; mitc4-edge-midpoint-shear;- source input identity:
path=C:/Users/baram/orca/workspaces/FESADev/MITC4/reference/shell/shell.inp;content_identity=fnv1a64:cf0795df753d377e; /model/nodes: 49 compound rows with ordered fieldsinternal_node_id,instance_name,source_label, andcoordinates;/model/elements: 36 compound rows, source element typeS4, and internal formulationFESA-MITC4;/steps/Step-1/frames/0/nodal/displacement: float64 shape[49,6], global nodal components[UX,UY,UZ,URX,URY,URZ], mapped to[U1,U2,U3,UR1,UR2,UR3];- all projected source identities and displacement values are unique and finite.
Comparison Contract
- case identity:
shell-s4 - authoritative FESA dataset:
/steps/Step-1/frames/0/nodal/displacement - HDF5 node identity source:
/model/nodes.instance_nameand/model/nodes.source_label - normalized key:
(case_id, instance_name, source_node_label, component) - observed instance:
Part-1-1 - observed source nodes: 49 unique labels
- CSV projection: trimmed
Part Instance Name,Node Label,U-U1,U-U2,U-U3,UR-UR1,UR-UR2, andUR-UR3 - stable component order:
[U1,U2,U3,UR1,UR2,UR3] - blocking inventory:
U1/U2/U3 - warning-only inventory:
UR1/UR2/UR3 - row precheck: exact key set, unique rows, finite HDF5/reference values, and exact required HDF5 schema before tolerance evaluation
- tolerance source: requirements
FESA-REQ-LSMITC4-058through064, the I/O definition Section 7, and the approved reference-model contract Section 5 - row tolerance:
abs(fesa-reference) <= 1.0e-5 - tolerance-normalized error:
absolute_error / 1.0e-5 reference_scale: diagnostic only; it does not alter the tolerance or verdict- zero policy: no clamp, substitution, omission, averaging, or row-order matching
Independent ledger reconstruction found 294 projected CSV keys, 294 comparison
keys, zero duplicate keys, and exact set equality. All 294 serialized row
tolerances equal 1.0e-5. The complete per-row decisions remain in the
identified deterministic comparison.json.
Execution Evidence
The existing FESA S4 reference route was used; Abaqus and other reference solvers were not executed. The first run regenerated the evidence after its test-owned output directory cleanup. Further exact reruns confirmed the ledger bytes and the final verification assertions.
| order | exact command | exit code | result |
|---|---|---|---|
| 1 | cmake --build .harness/build --config Debug --target fesa_reference_tests |
0 |
Reference test executable built; duration 1.830 s. |
| 2 | ctest --test-dir .harness/build -C Debug -R '^Mitc4S4Reference\.' --output-on-failure |
0 |
Fresh S4 E2E tests 2/2 passed; duration 0.760 s. |
| 3 | PowerShell CSV/JSON identity and metric audit | 0 |
294 exact keys; missing/extra/duplicate/nonfinite/nonfixed-tolerance counts all zero. |
| 4 | ctest --test-dir .harness/build -C Debug -R '^Mitc4S4Reference\.' --output-on-failure |
0 |
Repeat S4 E2E tests 2/2 passed; duration 0.911 s; JSON hash unchanged. |
| 5 | h5dump.exe -A -g '/metadata' <results.h5> with HDF5 and Intel oneAPI 2026.1 runtime directories prepended to PATH |
0 |
Required metadata values inspected read-only. |
| 6 | h5dump.exe -H -d '/model/nodes' <results.h5> |
0 |
Compound schema and shape [49] inspected. |
| 7 | h5dump.exe -H -d '/model/elements' <results.h5> |
0 |
Compound schema and shape [36] inspected. |
| 8 | h5dump.exe -H -d '/steps/Step-1/frames/0/nodal/displacement' <results.h5> |
0 |
Float64 displacement schema and shape [49,6] inspected. |
| 9 | Final ctest --test-dir .harness/build -C Debug -R '^Mitc4S4Reference\.' --output-on-failure plus report/metric assertion script |
0 |
S4 E2E tests 2/2; verification=PASS; final generated artifacts retained. |
| 10 | git diff --check |
0 |
Report patch has no whitespace errors. |
| 11 | target-only Git scope and reference no-change audit | 0 |
Only this owned report and the pre-existing untracked build/test report are visible; reference scope remains clean. |
An initial optional h5dump probe without the Intel runtime directory exited
-1073741515 because libmmd.dll was not on that process's PATH. The same
read-only inspection passed after adding the installed oneAPI runtime path. This
was an inspection-environment incident, not a solver, schema, comparison, or
reference-artifact failure.
The repeated JSON ledger was byte-identical:
- size:
94,349bytes - SHA-256 before and after repeat:
8E8DEA51B6F7C663BACC41FDA6103A4596DB26E02F1EAD6069D458F51E0102E6 - row decisions:
294 - component metrics:
6 - node vector metrics:
49 - warnings:
0 - verdict:
passed=true
Quantity Results
max_rel is calculated only for nonzero Abaqus values and is diagnostic. Tiny
reference residues make it ill-conditioned; the acceptance decision uses only
the fixed absolute tolerance and its fixed-tolerance-normalized error.
| quantity | components | behavior | compared | missing | extra | duplicate | nonfinite | max abs | max rel | max normalized | RMS | L2 norm | worst ID/component by abs error | result |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| displacement | U1/U2/U3 |
blocking | 147 | 0 | 0 | 0 | 0 | 1.90378534915144e-7 |
1.0 |
0.0190378534915144 |
2.45308118840709e-8 |
2.97420287738877e-7 |
Part-1-1, node 2, U3 |
pass |
| rotation | UR1/UR2/UR3 |
warning-only | 147 | 0 | 0 | 0 | 0 | 6.88285496274043e-8 |
35.7165926082675 |
0.00688285496274043 |
2.26478498250615e-8 |
2.74590586054375e-7 |
Part-1-1, node 44, UR1 |
pass, no warning |
The translational maximum relative error 1.0 occurs on near-zero reference
residue, including node 1 U3=-1.17769804e-32. The rotational maximum relative
error 35.7165926082675 occurs at node 2 UR2, where the reference is
1.3860685e-22 and the absolute error is only 4.95056439416524e-21.
Neither value was clamped or omitted, and neither relative diagnostic controls
the verdict.
Component metrics
Each component contains 49 matched rows. reference_scale is retained only as
diagnostic information. L2 norm is the comparator's component
vector_norm_error, and worst_row is the zero-based index in the JSON ledger.
| component | behavior | reference scale | tolerance | max abs | max rel | max normalized | RMS | L2 norm | worst row | worst identity | result |
|---|---|---|---|---|---|---|---|---|---|---|---|
U1 |
blocking | 3.11730945e-23 |
1.0e-5 |
3.11730945e-23 |
1.0 |
3.11730945e-18 |
1.13587076092006e-23 |
7.95109532644045e-23 |
66 | node 12 / U1 |
pass |
U2 |
blocking | 3.11730945e-23 |
1.0e-5 |
3.11730945e-23 |
1.0 |
3.11730945e-18 |
1.13587076092006e-23 |
7.95109532644045e-23 |
61 | node 11 / U2 |
pass |
U3 |
blocking | 2.37408203e-5 |
1.0e-5 |
1.90378534915144e-7 |
1.0 |
0.0190378534915144 |
4.24886125341252e-8 |
2.97420287738877e-7 |
8 | node 2 / U3 |
pass |
UR1 |
warning-only | 7.60725743e-6 |
1.0e-5 |
6.88285496274043e-8 |
11.9344619221920 |
0.00688285496274043 |
2.77378379212910e-8 |
1.94164865449037e-7 |
261 | node 44 / UR1 |
pass, no warning |
UR2 |
warning-only | 7.60725743e-6 |
1.0e-5 |
6.88285496273990e-8 |
35.7165926082675 |
0.00688285496273990 |
2.77378379212909e-8 |
1.94164865449036e-7 |
202 | node 34 / UR2 |
pass, no warning |
UR3 |
warning-only | 5.27113701e-25 |
1.0e-5 |
5.27113701e-25 |
1.0 |
5.27113701e-20 |
2.12986098533393e-25 |
1.49090268973375e-24 |
203 | node 34 / UR3 |
pass, no warning |
Worst rows and node-vector metrics
- global worst and worst blocking row:
shell-s4,Part-1-1, node 2,U3; FESA-2.35504417650849e-5, Abaqus-2.37408203e-5, absolute error1.90378534915144e-7, tolerance1.0e-5, normalized error0.0190378534915144, within tolerance; - worst warning-only row:
shell-s4,Part-1-1, node 44,UR1; FESA1.39850632037260e-6, Abaqus1.46733487e-6, absolute error6.88285496274043e-8, normalized error0.00688285496274043, within tolerance; - maximum per-node displacement-vector error:
1.90378534915144e-7atPart-1-1, node 2; - maximum per-node rotation-vector error:
7.21144690026432e-8atPart-1-1, node 39.
Failure Classification
- classification:
N/A - primary_failure:
N/A - evidence: declared artifacts exist; the authoritative HDF5 projection passed schema and identity checks; 294/294 exact row keys are unique and finite; 147/147 blocking rows pass; zero rotational exceedances or warnings occurred
- correction_handoff:
N/A
The optional first h5dump runtime-path incident is classified as a resolved
inspection-environment incident and does not affect this gate.
Handoff Recommendation
| target_agent | reason | required input |
|---|---|---|
| Physics Evaluation Agent | All declared blocking reference rows passed the exact approved tolerance, and the warning-only inventory has no exceedance. | This report, .harness/build/reference/mitc4-shell-s4-comparison/results.h5, and its deterministic comparison.json. |
The handoff status is pass-for-physics-evaluation only. Physics Evaluation
remains responsible for equilibrium, reaction sign, displacement direction,
symmetry, physical energy, result signs, and model-coverage adequacy.
Open Issues
- None blocking Physics Evaluation.
- Nonblocking audit note: raw HDF5 container hashes differed across fresh regenerations, while the authoritative projected rows and serialized comparison ledger were stable and the JSON was byte-identical. No HDF5 byte-determinism claim is made by this report.
Linear Static MITC4 Shell Physics Evaluation Report
Metadata
- feature_id:
linear-static-mitc4-shell - model_id:
shell-s4 - evaluated_head:
820ba30c717b3d0e113775608e20dfd5fbc05d53 - source_build_test_report:
docs/linear-static-mitc4-shell/verification.md - source_reference_verification_report:
docs/linear-static-mitc4-shell/verification.md - source_reference_model:
docs/linear-static-mitc4-shell/reference-model.md - source_requirement:
docs/linear-static-mitc4-shell/requirements.md - source_formulation:
docs/linear-static-mitc4-shell/formulation.md - source_numerical_review:
docs/linear-static-mitc4-shell/numerical-review.md - source_io_definition:
docs/linear-static-mitc4-shell/io.md - status:
pass-for-release-agent - date:
2026-08-13
This verdict means that the documented physical checks pass and the Release Agent may audit release readiness. It does not approve release readiness, re-approve the reference comparison, or change its tolerance decision.
Input Evidence
The prerequisite reference-verification report has status
pass-for-physics-evaluation. The existing S4 reference-test route was rebuilt and
executed to regenerate fresh FESA evidence. Abaqus and other reference solvers were
not executed.
| evidence | exact path or identity | status | notes |
|---|---|---|---|
| build/test report | docs/linear-static-mitc4-shell/verification.md |
pass-for-reference-verification |
Clean MSVC x64 Debug build, focused 87/87, lifecycle 10/10, reference 8/8, and full 144/144 CTest passed. |
| reference verification | docs/linear-static-mitc4-shell/verification.md |
pass-for-physics-evaluation |
Required prerequisite satisfied; 147/147 blocking U rows passed and no UR warning was emitted. |
| solver HDF5 | .harness/build/reference/mitc4-shell-s4-comparison/results.h5 |
present and readable | Freshly generated, 95,024 bytes; observed raw SHA-256 E102D80E82BA133EBDF1C5532F3A0A4FE9984AB6CC36D00264399F7308D9230F (inventory only). |
| comparison ledger | .harness/build/reference/mitc4-shell-s4-comparison/comparison.json |
present and passing | 94,349 bytes; SHA-256 8E8DEA51B6F7C663BACC41FDA6103A4596DB26E02F1EAD6069D458F51E0102E6; passed=true. |
| declared S4 input | reference/shell/shell.inp |
present, unchanged, read-only | SHA-256 4005851E1AB22FD3A16AC17A8D5DA3E051233F69F37419079F3553AD134ECFCF. |
| declared displacement CSV | reference/shell/shell displacements.csv |
present, unchanged, read-only | SHA-256 C81D94E0B4A849F87AA0F79C83A79B94D5661AC79E44ED826919AB432C87746B. |
| optional Abaqus reaction/stress CSVs | reference/shell/shell reactions.csv, reference/shell/shell stresses.csv |
not used as equality gates | Their presence did not expand the approved U-only blocking boundary. |
| solver CSV views | N/A | not generated | HDF5 was inspected directly. |
| fresh S4 route | .harness/build, MSVC x64 Debug |
pass | Mitc4S4Reference.* passed 2/2. |
The HDF5 contains 49 nodes, 36 source-S4 elements, internal formulation
FESA-MITC4, and the required full 2 x 2 x 2 result inventory. All inspected
numeric model and result values were finite. The diagnostics dataset contains four
approved warning rows for ignored PREPRINT, RESTART, and OUTPUT keywords and
no error diagnostic.
Raw HDF5 bytes are not a physics decision identity and may change across valid regenerations. The projected values and deterministic comparison ledger are the relevant evidence.
Documented model expectation
The reference input is a flat 10 x 10, thickness 0.5, homogeneous isotropic
square plate with E=2.1e11 and nu=0.3. Its 24 perimeter nodes are fully clamped
in all six global DOFs, and center node 2 at the global origin carries one
F3=-100000 concentrated force. The geometry, boundary, material, and load are
symmetric about both global x=0 and y=0 planes.
The documented physical expectations are therefore:
- total constrained reaction force opposes the applied
-Zforce; - total force and moment about the global origin balance within the approved
normalized
1e-10limit; - perimeter displacements are zero and the interior deflects in
-Z, with the largest magnitude at the center; - the displacement and rotation field obeys the polar/axial-vector reflection parity about both symmetry planes;
- a linear, flat transverse plate response has no membrane strain/resultant or middle-surface in-plane stress, while bottom and top in-plane stresses reverse;
- stored physical strain energy is finite, strictly positive, and consistent with
the recovered generalized fields and
0.5 F^T d; - free residual, finite results, rank/rigid-mode evidence, and the approved one-case coverage show no rigid-body or unsupported-mode symptom.
Physics Checks
| check | documented expectation | observed evidence | verdict | classification |
|---|---|---|---|---|
| global equilibrium | Applied plus constrained reaction force/moment about origin; normalized metrics <=1e-10 |
force residual [0,0,-1.12049747258425e-9]; moment residual [6.45741238258779e-10,-2.63753463514149e-10,0]; normalized force/moment 1.12049747258425e-14 / 2.35981341581908e-15 |
pass | N/A |
| reaction consistency | Perimeter-only reactions from full residual oppose F3=-100000; constrained motion is zero |
summed constrained force [0,0,99999.9999999989]; constrained displacement exactly zero |
pass | N/A |
| displacement direction | Interior bends in -Z; center is maximum; no in-plane or drilling leakage |
center U3=-2.35504417650849e-5; all 25 free-node U3 values nonpositive; U1/U2/UR3 exactly zero |
pass | N/A |
| symmetry | Correct polar/axial reflection parity about x=0 and y=0 |
max absolute reflection mismatch 4.27126230127111e-20 / 2.29087480670778e-20 |
pass | N/A |
| element force balance | No documented direct element-end-action output exists for shell GP resultants | Global assembled residual/equilibrium passed; direct element-end-action balance is skipped rather than inferred from mismatched locations | skipped | N/A |
| recovered resultant consistency | N=A*epsilon0, M=D*kappa, Q=As*gamma0 at each of 144 GP rows |
absolute L2 residual 9.9301874551584e-12; normalized L2 5.56240926027087e-17 |
pass | N/A |
| stress/location/sign sanity | Local [S11,S22,S12] at bottom/middle/top; middle zero and faces reverse for this linear flat bending field |
absolute L2 constitutive residual 1.29488994752188e-9; normalized 3.05323934859307e-16; middle stress exactly zero; face reversal exact |
pass | N/A |
| rigid body/nonfinite | Complete constraints, finite solution, acceptable residual, no abnormal uncontrolled mode | zero nonfinite values; FREE_RESIDUAL_NORMALIZED=1.07747756058988e-14; rank/rigid-mode tests passed upstream |
pass | N/A |
| physical energy | Positive and consistent physical-only energy; no drilling-energy gate | 1.17752208825422; independently recovered value identical to relative 1.88569375589575e-16; 0.5F^Td=1.17752208825424 |
pass | N/A |
| model coverage | Approved sole S4 case plus declared invariant/patch/common-path portfolio | S4 case covers end-to-end symmetric plate response; focused build/test portfolio passed; expanded models are explicitly nonblocking | pass | N/A |
1. Global force and moment equilibrium
The reaction dataset is the assembled full residual K*d-F. Applying the
constraint mask gives
sum constrained RF = [0, 0, 99999.9999999989]
sum applied F = [0, 0, -100000]
force residual = [0, 0, -1.12049747258425e-9]
The load acts at the global origin and therefore contributes no origin moment. The constrained force and moment rows give
moment residual = [ 6.45741238258779e-10,
-2.63753463514149e-10,
0 ]
These independently reconstructed values match the stored HDF5 equilibrium vector exactly. The serialized normalized metrics are:
| metric | value | threshold | result |
|---|---|---|---|
FREE_RESIDUAL_NORMALIZED |
1.07747756058988e-14 |
1.0e-10 |
pass |
FORCE_BALANCE_NORMALIZED |
1.12049747258425e-14 |
1.0e-10 |
pass |
MOMENT_BALANCE_NORMALIZED |
2.35981341581908e-15 |
1.0e-10 |
pass |
2. Reaction consistency and constrained/free meaning
The 24 perimeter nodes provide 144 constrained DOFs; the remaining 150 DOFs are free. The HDF5 constraint mask agrees with the input set exactly, all prescribed values are zero, and the maximum constrained displacement is exactly zero.
The total positive RF3=99999.9999999989 opposes the center F3=-100000. The
nearly zero total RF1/RF2 and origin RM1/RM2/RM3 are required by the centered
load and double symmetry. The largest raw free residual component is
7.62156560085714e-10; because translational and rotational entries have different
dimensions, the decision uses the documented normalized metric rather than this
raw maximum. The normalized free residual passes by more than three orders of
magnitude.
3. Displacement direction and deformation mode
Center node 2 has
[U1,U2,U3,UR1,UR2,UR3]
= [0, 0, -2.35504417650849e-5, 0, 0, 0]
Every free-node U3 is nonpositive, the center is the maximum-magnitude
translation, and every clamped boundary displacement is zero. Across the complete
model, maximum absolute U1, U2, and UR3 are exactly zero. Maximum absolute
UR1 and UR2 are 7.55060026636931e-6 and
7.55060026636933e-6, respectively. This is the expected symmetric plate-bending
mode under a negative transverse center load, with no in-plane or drilling
deformation leakage.
4. Reflection symmetry and expected zeros
For reflection through x=0, polar displacement components transform as
[-U1,+U2,+U3], while the axial rotation vector transforms as
[+UR1,-UR2,-UR3]. Reflection through y=0 similarly uses
[+U1,-U2,+U3,-UR1,+UR2,-UR3].
All 294 scalar nodal component comparisons per reflection were paired by source
coordinates. The maximum absolute mismatch was 4.27126230127111e-20 for the
x reflection and 2.29087480670778e-20 for the y reflection. The equality
evidence is numerical roundoff, not a new acceptance tolerance.
5. Shell generalized resultants and physical work signs
At every one of 36 elements times four midsurface Gauss locations, an independent constitutive reconstruction applied the documented centered-section identities:
N = A * epsilon0
M = D * kappa
Q = As * gamma0
The complete 1,152-component resultant comparison has absolute L2 residual
9.9301874551584e-12 and normalized L2 residual
5.56240926027087e-17. All membrane strains and N resultants are exactly zero,
as required for this linear flat plate bending response.
The generalized work density generalized_strain dot section_resultant is strictly
positive at all 144 locations: minimum 4.46321446508071e-4, maximum
1.27059464107458e-1, negative count 0. This supports the physical sign and
component-order interpretation.
The shell contract does not expose element-end nodal actions and explicitly forbids
averaging mismatched result locations. Consequently a separate GP-to-element-end
force-balance assertion is not documented and is marked skipped; the assembled
global residual and equilibrium checks provide the required force-balance evidence.
6. Stress component, location, and sign sanity
HDF5 stores local in-plane [S11,S22,S12] directly at each GP and ordered section
positions BOTTOM(-1), MIDDLE(0), TOP(+1). Independent reconstruction used
Cps*(epsilon0+z*kappa) at all 432 section locations. The absolute L2 residual is
1.29488994752188e-9, or normalized 3.05323934859307e-16, against a maximum
absolute stored stress of 313250.779137971.
All middle-surface in-plane stresses are exactly zero. For every component and GP,
bottom and top stresses are equal in magnitude and opposite in sign. This is the
documented curvature/stress-location convention for a centered homogeneous section.
No S33, S13, S23, nodal stress, or Abaqus stress equality was inferred.
7. Physical energy, residual, and rigid-body symptoms
The stored PHYSICAL_STRAIN_ENERGY is finite and positive:
HDF5 physical energy = 1.17752208825422
independent GP generalized energy = 1.17752208825422
0.5 * F^T * d = 1.17752208825424
The HDF5-versus-recovered normalized difference is
1.88569375589575e-16; the final fresh HDF5-versus-external-work normalized
difference is 9.14561471609432e-15. The HDF5 value excludes numerical drilling stabilization,
as required. No drilling-energy ratio, calibration, or warning criterion was
introduced.
The solution is finite, the full perimeter support is enforced, the expected
deformation mode is smooth and symmetric, all three normalized verification
metrics pass 1e-10, and the build/test evidence passes six-rigid-mode,
stabilized-rank, non-rigid positive-energy, and pure-drill separation tests. No
rigid-body, singular, nonfinite, or abnormal-mode symptom is present.
8. Approved model coverage
The sole approved reference model provides end-to-end evidence for the
full-integration S4 -> FESA-MITC4 path, a nonzero transverse bending response,
fully constrained reaction recovery, global force/moment balance, two-axis
symmetry, physical energy, and shell result recovery.
The prerequisite focused 87/87 build/test portfolio supplies the documented
complementary element evidence: membrane, bending, transverse-shear and twist patch
fields; six physical rigid modes; expected physical/stabilized rank; frame and
energy invariance; fixed numerical drilling and physical-recovery separation; and
S4/S4R common-kernel/source-metadata behavior. The reference verification supplies
the approved external displacement comparison.
This is the complete approved coverage for the feature. Pinched-cylinder,
hemisphere, Scordelis-Lo, locking/convergence sequences, drilling calibration,
expanded distorted/curved portfolios, and NR-O01 through NR-O04 are explicitly
nonblocking or out of scope and were not invented as new physics gates.
Execution Evidence
| order | exact command or read-only operation | exit code | result |
|---|---|---|---|
| 1 | cmake --build .harness/build --config Debug --target fesa_reference_tests |
0 |
Existing S4 reference route rebuilt. |
| 2 | ctest --test-dir .harness/build -C Debug -R '^Mitc4S4Reference\.' --output-on-failure |
0 |
Fresh S4 tests 2/2 passed; FESA HDF5 and ledger regenerated. |
| 3 | h5dump.exe -n .harness/build/reference/mitc4-shell-s4-comparison/results.h5 with HDF5/oneAPI runtime on PATH |
0 |
Required HDF5 inventory inspected read-only. |
| 4 | h5dump.exe -y -w 0 -m '%.17g' -d <dataset> .harness/build/reference/mitc4-shell-s4-comparison/results.h5 for model nodes/elements/mask/prescribed values, nodal U/R, shell frames/strain/resultant/stress, energy/equilibrium/metrics/diagnostics |
0 |
High-precision read-only numerical audit supplied all reported values. |
| 5 | PowerShell independent input/mask, reaction/equilibrium, reflection, constitutive recovery, stress-location, energy, finite, and diagnostics audit over the h5dump values |
0 |
All documented physics assertions passed. |
| 6 | cmake --build .harness/build --config Debug --target fesa_unit_tests fesa_reference_tests, then `ctest --test-dir .harness/build -C Debug -R 'Mitc4Shell(Kernel |
Patch | Drilling |
Three intermediate audit-helper incidents were diagnostic-only and did not alter
the product or verdict: a compound-record regular expression initially omitted the
last node, a PowerShell array-expression initially bound subtraction to an array,
and a final optional h5ls operand-order probe exited 1. The root causes were
confirmed as audit-command/parser usage, while successful high-precision HDF5
inspection established 49/49 nodes and the complete evidence above. They are not
solver, HDF5-schema, reference, or physics failures.
Failure Classification
- classification:
N/A - primary_failure:
N/A - evidence: all documented force/moment equilibrium, reaction, displacement, symmetry, recovery, stress-location, physical-energy, residual, finite-result, rigid-mode and approved coverage checks passed
- correction_handoff:
N/A - non_gating_incident: resolved read-only audit helper parsing/usage errors only
Evaluation Verdict
- verdict:
pass-for-release-agent - reason: the prerequisite reference status is valid and fresh FESA S4 evidence satisfies every documented physical expectation under its approved threshold; no implementation, formulation, I/O, model-coverage, nonfinite, rigid-body, or environment failure remains
- release_approval:
not granted by this report - reference_reapproval:
not performed by this report
Handoff Recommendation
| target_agent | reason | required_input |
|---|---|---|
| Release Agent | All documented MITC4 physics checks passed. | This report, the build/test and reference-verification reports, the fresh build-local HDF5/comparison evidence, and the nonblocking limitations below. |
Open Issues
- Nonblocking coverage limitation: the approved external reference inventory is one flat, symmetric, fully clamped S4 plate. The approved analytical/unit portfolio supplies membrane, shear, twist, rigid-mode, rank, drilling-separation and S4R common-path evidence. No broader Abaqus or benchmark portfolio is claimed.
- Known original-MITC4 limitations remain: transverse-shear locking is mitigated by the tying field, but distorted-curved membrane locking and broader thin/thick mesh convergence are not characterized by this release gate.
- Source
S4Rmaps to the same full-integration FESA kernel and is not compared to the optional Abaqus S4R artifacts. This is an approved boundary, not missing physics evidence. - The fixed numerical drilling stiffness is not a physical stress/resultant/energy channel. No drilling calibration, coefficient sweep, energy-ratio gate, or director-parallel moment support is claimed.
- Geometrically nonlinear execution remains outside the current feature even though future-only residual/tangent equations are documented. No nonlinear release claim is made.
- No open issue blocks Release Agent review.