803 lines
47 KiB
Markdown
803 lines
47 KiB
Markdown
# MITC4 선형 정적 Shell 검증과 한계
|
|
|
|
본 문서는 당시 revision의 검증·판정 기록이다. 본문에 남긴 원본 보고서 이름과 SHA-256은
|
|
통합 전 자료의 식별자이며 정리된 현재 파일의 byte hash를 뜻하지 않는다. 원문은 Git
|
|
`858e87b`의 해당 기능 폴더에서 확인할 수 있다. 현재 진입점과 대응 기록은 [README](README.md)를 따른다.
|
|
|
|
아래 날짜·revision·명령·수치는 당시 실제 실행 기록이다. 문서 정리에서 solver를 다시 실행하지 않았다.
|
|
현재 계약은 [요구사항](requirements.md), [정식화](formulation.md), [I/O](io.md), [공통 tolerance](../TOLERANCE.md)를 따른다. [과거 release 판정](release.md)의 재검증 경계도 유지한다.
|
|
|
|
<a id="build-test"></a>
|
|
|
|
<a id="build-test--linear-static-mitc4-shell-buildtest-report"></a>
|
|
## Linear Static MITC4 Shell Build/Test Report
|
|
|
|
<a id="build-test--metadata"></a>
|
|
### 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`
|
|
|
|
<a id="build-test--verdict"></a>
|
|
### 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.
|
|
|
|
<a id="build-test--execution-environment"></a>
|
|
### 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`.
|
|
|
|
<a id="build-test--command-log-summary"></a>
|
|
### 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|DofManager|EssentialConstraints|SparseAssembly|LoadAssembly|ResultRecovery|Hdf5ResultsWriter" --output-on-failure` | 0 | `5.743 s` | `100% tests passed out of 87`; failed `0`. |
|
|
| 6 | `ctest --test-dir .harness/build -C Debug -R "LinearStaticCli|Mitc4ShellCli" --output-on-failure` | 0 | `1.442 s` | `100% tests passed out of 10`; failed `0`. |
|
|
| 7 | `ctest --test-dir .harness/build -C Debug -R "Mitc4ReferenceComparison|Mitc4S4Reference" --output-on-failure` | 0 | `1.377 s` | `100% tests passed out of 8`; failed `0`. |
|
|
| 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`. |
|
|
|
|
<a id="build-test--validation-results"></a>
|
|
### 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. |
|
|
|
|
<a id="build-test--ctest-inventory"></a>
|
|
### 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.
|
|
|
|
<a id="build-test--warning-and-failure-audit"></a>
|
|
### 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.
|
|
|
|
<a id="build-test--reference-read-only-audit"></a>
|
|
### 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.
|
|
|
|
<a id="build-test--failure-classification"></a>
|
|
### 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
|
|
|
|
<a id="build-test--failed-test-inventory"></a>
|
|
### Failed Test Inventory
|
|
|
|
None. All focused, full CTest, and Harness Python tests passed.
|
|
|
|
<a id="build-test--handoff-recommendation"></a>
|
|
### 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.
|
|
|
|
<a id="build-test--open-issues"></a>
|
|
### 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.
|
|
|
|
<a id="reference-comparison"></a>
|
|
|
|
<a id="reference-comparison--linear-static-mitc4-shell-reference-verification-report"></a>
|
|
## Linear Static MITC4 Shell Reference Verification Report
|
|
|
|
<a id="reference-comparison--metadata"></a>
|
|
### 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.
|
|
|
|
<a id="reference-comparison--2026-08-18-common-policy-revalidation"></a>
|
|
### 2026-08-18 Common-policy Revalidation
|
|
|
|
`cmake --build .harness/build --config Debug` passed, followed by
|
|
`ctest --test-dir .harness/build -C Debug --output-on-failure`: 214/214 tests passed.
|
|
The 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.
|
|
|
|
<a id="reference-comparison--verdict"></a>
|
|
### 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`
|
|
|
|
<a id="reference-comparison--artifact-inventory"></a>
|
|
### 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.
|
|
|
|
<a id="reference-comparison--authoritative-hdf5-projection-audit"></a>
|
|
#### 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.
|
|
|
|
<a id="reference-comparison--comparison-contract"></a>
|
|
### 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`.
|
|
|
|
<a id="reference-comparison--execution-evidence"></a>
|
|
### 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`
|
|
|
|
<a id="reference-comparison--quantity-results"></a>
|
|
### 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.
|
|
|
|
<a id="reference-comparison--component-metrics"></a>
|
|
#### 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 |
|
|
|
|
<a id="reference-comparison--worst-rows-and-node-vector-metrics"></a>
|
|
#### 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.
|
|
|
|
<a id="reference-comparison--failure-classification"></a>
|
|
### 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.
|
|
|
|
<a id="reference-comparison--handoff-recommendation"></a>
|
|
### 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.
|
|
|
|
<a id="reference-comparison--open-issues"></a>
|
|
### 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.
|
|
|
|
<a id="physics-evaluation"></a>
|
|
|
|
<a id="physics-evaluation--linear-static-mitc4-shell-physics-evaluation-report"></a>
|
|
## Linear Static MITC4 Shell Physics Evaluation Report
|
|
|
|
<a id="physics-evaluation--metadata"></a>
|
|
### 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.
|
|
|
|
<a id="physics-evaluation--input-evidence"></a>
|
|
### 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.
|
|
|
|
<a id="physics-evaluation--documented-model-expectation"></a>
|
|
#### 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.
|
|
|
|
<a id="physics-evaluation--physics-checks"></a>
|
|
### 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 |
|
|
|
|
<a id="physics-evaluation--1-global-force-and-moment-equilibrium"></a>
|
|
#### 1. Global force and moment equilibrium
|
|
|
|
The reaction dataset is the assembled full residual `K*d-F`. Applying the
|
|
constraint mask gives
|
|
|
|
```text
|
|
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
|
|
|
|
```text
|
|
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 |
|
|
|
|
<a id="physics-evaluation--2-reaction-consistency-and-constrainedfree-meaning"></a>
|
|
#### 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.
|
|
|
|
<a id="physics-evaluation--3-displacement-direction-and-deformation-mode"></a>
|
|
#### 3. Displacement direction and deformation mode
|
|
|
|
Center node 2 has
|
|
|
|
```text
|
|
[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.
|
|
|
|
<a id="physics-evaluation--4-reflection-symmetry-and-expected-zeros"></a>
|
|
#### 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.
|
|
|
|
<a id="physics-evaluation--5-shell-generalized-resultants-and-physical-work-signs"></a>
|
|
#### 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:
|
|
|
|
```text
|
|
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.
|
|
|
|
<a id="physics-evaluation--6-stress-component-location-and-sign-sanity"></a>
|
|
#### 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.
|
|
|
|
<a id="physics-evaluation--7-physical-energy-residual-and-rigid-body-symptoms"></a>
|
|
#### 7. Physical energy, residual, and rigid-body symptoms
|
|
|
|
The stored `PHYSICAL_STRAIN_ENERGY` is finite and positive:
|
|
|
|
```text
|
|
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.
|
|
|
|
<a id="physics-evaluation--8-approved-model-coverage"></a>
|
|
#### 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.
|
|
|
|
<a id="physics-evaluation--execution-evidence"></a>
|
|
### 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|PhysicalRecovery)|ResultRecovery\..*Shell|Mitc4S4Reference' --output-on-failure` | `0` | Final focused verification passed `17/17`; the regenerated ledger retained `passed=true`, 294 rows, and zero warnings. |
|
|
|
|
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.
|
|
|
|
<a id="physics-evaluation--failure-classification"></a>
|
|
### 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
|
|
|
|
<a id="physics-evaluation--evaluation-verdict"></a>
|
|
### 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`
|
|
|
|
<a id="physics-evaluation--handoff-recommendation"></a>
|
|
### 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. |
|
|
|
|
<a id="physics-evaluation--open-issues"></a>
|
|
### 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.
|