Files
FESADev/docs/linear-static-mitc4-shell/verification.md
T
2026-10-04 03:32:59 +09:00

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 in phases/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 scan 0; error scan 0
  • focused kernel/model/assembly/recovery regex: 87/87 passed
  • focused linear-static lifecycle regex: 10/10 passed
  • focused MITC4 reference-test regex: 8/8 passed
  • CTest discovery: 144 tests, including 32 names containing Mitc4
  • full CTest after clean rebuild: 144/144 passed
  • Harness Python self-test: 7/7 passed
  • 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; oneMKL 2026.1.0; oneTBB package path 2023.1; HDF5 package path 2.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 version 0, feature linear-static-mitc4-shell, solver version 0.1.0, Step-1, frame 0, internal formulation FESA-MITC4, and integration rule 2x2x2-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 fields internal_node_id, instance_name, source_label, and coordinates;
  • /model/elements: 36 compound rows, source element type S4, and internal formulation FESA-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_name and /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, and UR-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-058 through 064, 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,349 bytes
  • 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 error 1.90378534915144e-7, tolerance 1.0e-5, normalized error 0.0190378534915144, within tolerance;
  • worst warning-only row: shell-s4, Part-1-1, node 44, UR1; FESA 1.39850632037260e-6, Abaqus 1.46733487e-6, absolute error 6.88285496274043e-8, normalized error 0.00688285496274043, within tolerance;
  • maximum per-node displacement-vector error: 1.90378534915144e-7 at Part-1-1, node 2;
  • maximum per-node rotation-vector error: 7.21144690026432e-8 at Part-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 -Z force;
  • total force and moment about the global origin balance within the approved normalized 1e-10 limit;
  • 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 S4R maps 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.