# Shell Surface Pressure Load — Reference Comparison 보고서 ## 메타데이터와 Gate 6 판정 - feature_id: `shell-surface-pressure-load` - case_id: `shellnl-meshfine-pressure-s4-follower` - owner_agent: `implementation-agent` - FESA authoritative output: schema-1 `.harness/build/reference/shell-surface-pressure-load/shellNL-meshfine-pressure_results.h5` - 실행 모드: 요구 input의 byte-identical copy에 대한 FESA-only 실행 - tolerance authority: 변경하지 않은 `docs/TOLERANCE.md` - deterministic classification: `passed` - blocking verdict: pass - warning-only verdict: pass (UR warning 없음) 이 문서는 Coordinator에 `pass-for-physics-evaluation`만 권고한다. Abaqus 내부 알고리즘 동등성, Physics Gate 7 또는 release readiness를 주장하지 않는다. ## ARTIFACT CHECK와 불변성 아래 source artifact는 FESA-only 실행 전후에 size, SHA-256 및 기록 timestamp가 모두 동일했다. Reference artifact의 rename, rewrite, 보정 또는 생성은 없었다. | 용도 | 정확한 source path | bytes | SHA-256 | | --- | --- | ---: | --- | | required input | `reference/shellNL-meshfine-pressure/shellNL-meshfine-pressure.inp` | 56,665 | `53718ccc9b41c23fcc1b509a51d66f1347e87aca43a74f1d6cec4d2085f4b90e` | | required displacement CSV | `reference/shellNL-meshfine-pressure/shellNL-meshfine-pressure displacements.csv` | 111,182 | `2fe53f98eac9f04779100721c3edf8049eb1dbfe733ebcbd819aeeed03b81198` | | review-only reaction CSV | `reference/shellNL-meshfine-pressure/shellNL-meshfine-pressure reactions.csv` | 108,923 | `a2347f4e88e4b73c75abe7c23e96bcc696c16c1975e2440b3ad9bf7ecda5f2b6` | | excluded stress CSV | `reference/shellNL-meshfine-pressure/shellNL-meshfine-pressure stresses.csv` | 1,036,876 | `bc06f3324cc5d6655ded2939b3e1cb9d55a0359fa0d272a6958399464218a128` | 유일하게 copy한 source artifact는 다음 exact input이다. ```text .harness/build/reference/shell-surface-pressure-load/ shellNL-meshfine-pressure.inp ``` copy의 size/SHA-256은 required input과 정확히 일치한다. Source history와 실행 command를 감사했으며 `abaqus.exe`, `abaqus.bat`, Nastran 또는 다른 reference solver invocation은 없었다. source/path text의 `abaqus` parser 명칭은 실행 증거가 아니다. ## FESA 생성물과 frame 선택 | 생성물 | bytes | SHA-256 | 검증 증거 | | --- | ---: | --- | --- | | copied input | 56,665 | `53718ccc9b41c23fcc1b509a51d66f1347e87aca43a74f1d6cec4d2085f4b90e` | source와 exact match | | `shellNL-meshfine-pressure_results.h5` | 10,547,430 | `74f35e3e59edd05460733b1d6367994c7f4a1e847b366f2efad6fbecc03796f3` | atomic publish된 schema-1 HDF5 | | `shellNL-meshfine-pressure_log.txt` | 40,786 | `8555ff365dcf1f066813d0cce6440c3d56c9840baf8246696daa7b2e7b0061a1` | factor-one increment accepted | `Step-1`에는 load factor 0.1부터 1.0까지 accepted frame 10개가 있다. factor-one entry는 frame index 9, increment 10, `load_factor=1.0`, `is_factor_one=1`의 정확히 하나이며, selected dataset은 `/steps/Step-1/frames/9/nodal/displacement`다. ## COMPARE 사전검사와 row projection 비교기는 `/model/nodes`와 factor-one final nodal displacement를 사용한다. Key는 row position 또는 internal index가 아니라 `(Step-1 factor-one accepted frame, instance, source node label, component)`다. | 사전검사 | 결과 | | --- | --- | | exact source artifact를 읽을 수 있음 | pass | | schema / Step / accepted factor-one frame | pass: schema 1, `Step-1`, factor-one 1개 | | HDF5 `/model/nodes` inventory | pass: finite/unique `(Part-1-1, label)` 729개 | | displacement CSV wide-row inventory | pass: finite/unique `(PART-1-1, label)` 729개 | | identity normalization | pass: comparison key에서만 instance ASCII case normalize; stored identity 보존 | | component projection | pass: U1/U2/U3 -> UX/UY/UZ, UR1/UR2/UR3 -> URX/URY/URZ | | U logical rows | pass: 정확히 2,187 | | UR logical rows | pass: 정확히 2,187 | | missing / extra / duplicate / nonfinite | 없음; tolerance 전에 fail-closed precheck | | reaction/stress disposition | reaction review-only, stress excluded; comparison family를 생성하지 않음 | 생성 HDF5가 존재한 뒤 `ShellSurfacePressureReference`를 다시 실행하여 9/9가 통과했다. 이는 exact artifact audit, schema/frame selection, cardinality, identity match, precheck-before-tolerance, family policy와 deterministic repeat comparison을 확인한다. ## 공통 tolerance와 per-family 결정 Reference만으로 family scale과 near-zero band를 계산했다. \[ S=\max |r_i|,\qquad B=0.01S. \] `abs(reference) <= B`이면 `abs(fesa-reference) <= B`, 나머지는 relative error `<= 0.05`를 적용하고 family relative RMS도 `<= 0.01`이어야 한다. 별도의 absolute gate, `max(1,S)`, clamp, average, row omission은 사용하지 않았다. | family | 영향 | components | rows | S | B | near-zero pass | relative pass | max abs. error / row | max applicable relative error / row | relative RMS | verdict | | --- | --- | --- | ---: | ---: | ---: | ---: | ---: | --- | --- | ---: | --- | | `pressure_nodal_translation_blocking` | blocking | U1, U2, U3 | 2,187 | `5.51545573e-3` | `5.51545573e-5` | 1,582/1,582 | 605/605 | `9.96028671352255e-7`, `(Part-1-1, 2, U3)` | `3.12464512172274e-3`, `(Part-1-1, 419, U3)` | `5.18831997081359e-5` | pass | | `pressure_nodal_rotation_warning` | warning-only | UR1, UR2, UR3 | 2,187 | `1.64645887e-3` | `1.64645887e-5` | 995/995 | 1,192/1,192 | `3.29623883250936e-6`, `(Part-1-1, 250, UR2)` | `3.81566175195545e-2`, `(Part-1-1, 286, UR2)` | `3.10406152731217e-4` | pass | 결정적인 4,374개의 모든 row decision이 통과했다. max absolute-error row와 max applicable-relative-error row는 별도로 기록하며 서로 다른 source row일 수 있다. 두 family RMS도 모두 `0.01` 미만이다. U는 blocking으로 pass했고, UR은 warning-only contract를 유지하며 이번 결과는 pass여서 deterministic warning도 없다. ## 내부 blocking evidence 최종 nonlinear log는 factor-one increment 10 / iteration 3에서 `combined_pass=1`, `transition=accepted`를 기록했다. 이 internal evidence는 external CSV tolerance와 독립적이며 reaction CSV로 대체하지 않는다. | internal family | rows | numerator / stored evidence | scale 또는 branch | metric / gate | 결과 | | --- | ---: | --- | --- | --- | --- | | accepted free translation-force residual | free DOF 1,875 | infinity norm `9.06582420157065e-6` | external/internal scale `1.47929199940215e5` | `6.12848863188238e-11 <= 1e-2` | pass | | accepted free rotation-moment residual | free DOF 1,875 | infinity norm `1.3758908607997e-6` | exact-zero external-scale branch | `1.3758908607997e-6 <= 1e-3` | pass | | global force balance | 3 | `[-5.04652281563267e-6, -3.33100482574622e-6, -3.02493572235107e-6]` | applied + masked constrained reaction, current arm | approved normalized gate `<=1e-8`, focused nonlinear test가 실행 | pass | | global moment balance | 3 | `[1.21226185001433e-6, 7.79749825596809e-7, -1.57924777074714e-5]` | spatial physical moment, current arm | approved normalized gate `<=1e-8`, 같은 focused test가 실행 | pass | ## 분류, no-change assertion, open issues - final classification: `passed`; `implementation`, `test`, `configure`, `compile`, `link`, `reference-comparison`, `infrastructure`, `environment`, `artifact`, `regression`, `evidence-gap`, `upstream-contract` failure가 없다. - source artifact/CSV value/name, tolerance policy, upstream feature docs, source/test/CMake code를 이 Step에서 변경하지 않았다. - generated input/HDF5/log는 `.harness/build/` 아래에만 존재한다. - Gate 6 blocking open issue는 없다. physics plausibility와 release readiness는 의도적으로 이 Step의 판정 범위 밖이다.