Files
FESADev/docs/linear-static-mitc4-shell/reference-comparison.md
T
2026-08-18 02:29:26 +09:00

15 KiB

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/build-test.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
  • owner_agent: reference-verification-agent
  • 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.

No-Change Assertion

  • source_files_modified: false
  • test_files_modified: false
  • cmake_files_modified: false
  • requirements_modified: false
  • formulation_modified: false
  • numerical_review_modified: false
  • io_contract_modified: false
  • reference_model_contract_modified: false
  • phase_files_modified: false
  • tolerance_policies_modified: false
  • reference_artifacts_modified: false
  • Abaqus_or_other_reference_solver_executed: false
  • owned_report_created: true
  • generated_build_local_evidence: true, ignored under .harness/build/
  • pre_existing_untracked_build_test_report_preserved: true

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.