From f1be807e40b98dddb961e62a4e97133c15a3f063 Mon Sep 17 00:00:00 2001 From: "KOKO\\Mimi" Date: Thu, 13 Aug 2026 10:06:45 +0900 Subject: [PATCH] docs: use fixed MITC4 reference tolerance --- AGENTS.md | 7 +++-- docs/ADR.md | 19 ++++++++++++ docs/ARCHITECTURE.md | 6 ++-- docs/PRD.md | 5 ++-- docs/formulations/mitc4-shell-formulation.md | 12 ++++---- ...-static-mitc4-shell-implementation-plan.md | 23 +++++++------- .../linear-static-mitc4-shell-io.md | 30 +++++++++---------- .../linear-static-mitc4-shell-review.md | 7 ++--- ...ear-static-mitc4-shell-reference-models.md | 18 +++++------ .../requirements/linear-static-mitc4-shell.md | 18 +++++------ .../linear-static-mitc4-shell-research.md | 6 ++-- ...independent-reference-validation-policy.md | 7 +++-- ...dent-reference-validation-policy-design.md | 19 ++++++------ phases/linear-static-mitc4-shell/step13.md | 13 ++++---- 14 files changed, 110 insertions(+), 80 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 8cc5b4b..0ef68ef 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -96,9 +96,10 @@ `reference/shell/`의 S4 input/displacement CSV만 현재 이름 그대로 사용한다. S4R source 지원은 parser/common-kernel/deterministic assembly/HDF5 metadata test로 검증하며 `reference/shellR/` artifact를 acceptance comparison에 사용하지 않는다. -- Global `U1/U2/U3`만 blocking reference quantity다. 각 case/component에 B33과 같은 - `1e-9 + 1e-6 * reference_scale`을 적용한다. `UR1/UR2/UR3`은 같은 기준을 초과하면 - warning만 남긴다. +- Global `U1/U2/U3`만 blocking reference quantity다. 모든 matched U row에는 고정 + 절대오차 `1.0e-5`를 적용한다. `UR1/UR2/UR3`도 고정 절대오차 `1.0e-5`로 비교하되 + 초과 시 warning만 남긴다. MITC4 tolerance 판정에는 `reference_scale`을 사용하지 않으며 + B33의 component-scale 혼합 tolerance는 변경하지 않는다. - MITC4 drilling calibration, coefficient sweep, energy-ratio threshold와 별도 geometry/director calibration(`NR-O01`~`NR-O04`)은 구현 범위가 아니다. 6-DOF 선형계에는 물리 회전 stiffness block의 양의 최소 대각항에 `1e-3`을 곱한 고정 numerical drilling diff --git a/docs/ADR.md b/docs/ADR.md index d43a67c..778d4c8 100644 --- a/docs/ADR.md +++ b/docs/ADR.md @@ -211,3 +211,22 @@ nonfinite required row는 tolerance 전에 실패한다. 대신 비교 대상과 source-row/component mapping, tolerance, artifact immutability는 유지해 false match와 결과 보정을 방지한다. 더 강한 provenance가 필요한 기능은 해당 요구조건이 명시적으로 추가할 수 있으나 프로젝트 기본 gate로 자동 승격하지 않는다. + +### ADR-020: MITC4 displacement reference는 고정 절대오차로 판정한다 + +**결정**: Full-integration FESA-MITC4의 sole S4 reference comparison은 matched global +`U1/U2/U3` row에 고정 절대오차 `1.0e-5`를 적용해 pass/fail을 판정한다. +`UR1/UR2/UR3`도 고정 절대오차 `1.0e-5`로 비교하지만 초과는 deterministic warning만 +생성한다. Reference scale은 보고용 통계로 남을 수 있으나 MITC4 row tolerance 또는 +normalized error의 분모를 결정하지 않는다. ADR-014의 B33 component-scale 혼합 +tolerance는 변경하지 않는다. + +**이유**: Abaqus S4는 FESA-MITC4와 동일한 요소 정식화가 아니므로 B33에서 승인한 매우 +엄격한 component-scale tolerance를 그대로 재사용하는 것은 독립 솔버의 observable +displacement 검증 목적에 맞지 않는다. 고정 절대오차는 현재 사용자 단위계에서 승인된 +차이를 명시적으로 제한하면서 zero clamp나 row omission 없이 모든 displacement row를 +동일하게 판정한다. + +**트레이드오프**: Model scale이 크게 달라지면 고정 절대오차의 상대적 엄격도가 달라질 수 +있다. 따라서 이 값은 현재 승인된 MITC4 S4 case의 기능 완료 기준이며 개발 완료 후 +별도 reference-verification evidence와 함께 재점검한다. diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index a44b8eb..ab11b20 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -375,7 +375,9 @@ stabilization만 둔다. Drilling calibration, artificial-energy policy와 별 dataset은 이 기능 범위가 아니다. Full-integration FESA-MITC4의 reference comparison은 `reference/shell/` S4의 기존 input 및 -displacement CSV만 사용한다. Global `U1/U2/U3`만 blocking이고 B33과 같은 component-scale -mixed tolerance를 적용한다. `UR1/UR2/UR3`은 같은 기준의 warning-only evidence다. S4R은 +displacement CSV만 사용한다. Global `U1/U2/U3`만 blocking이고 모든 matched row에 고정 +절대오차 `1.0e-5`를 적용한다. `UR1/UR2/UR3`도 고정 절대오차 `1.0e-5`로 비교하되 +warning-only evidence다. MITC4 판정에는 component scale을 사용하지 않으며 B33의 기존 +혼합 tolerance는 변경하지 않는다. S4R은 같은 kernel을 선택하는 source mapping과 metadata를 unit/integration tests로 검증하며 `reference/shellR/` artifact는 acceptance comparison에 포함하지 않는다. diff --git a/docs/PRD.md b/docs/PRD.md index 411d3ec..371131e 100644 --- a/docs/PRD.md +++ b/docs/PRD.md @@ -124,8 +124,9 @@ Parser keyword, element kernel, solver backend 또는 output dataset 중 하나 - B33 reference tolerance는 model, step/frame, quantity, component별 Abaqus scale만 사용한다. - 승인된 SI B33 bundle의 absolute floor는 displacement/rotation `1e-9`, force/moment `1e-3`이며 relative coefficient는 `1e-6`이다. -- MITC4 U/UR comparison은 같은 component-scale 형식을 사용한다. `U1/U2/U3`만 - blocking이고 `UR1/UR2/UR3` 초과는 warning-only다. +- MITC4 U/UR comparison은 고정 절대오차 `1.0e-5`를 사용한다. `U1/U2/U3`만 + blocking이고 `UR1/UR2/UR3` 초과는 warning-only다. B33의 component-scale 혼합 + tolerance는 별도 기존 계약으로 유지한다. - parser, solver, HDF5 writer는 실패 원인을 구조화된 diagnostic으로 보고한다. - oneMKL, oneTBB, HDF5는 CMake에서 명시 탐지하고 실패 원인을 분류한다. - 대규모 모델 성능 최적화보다 V0의 명확성, 테스트 가능성, 검증 traceability를 우선한다. diff --git a/docs/formulations/mitc4-shell-formulation.md b/docs/formulations/mitc4-shell-formulation.md index 33c0cff..96f20cc 100644 --- a/docs/formulations/mitc4-shell-formulation.md +++ b/docs/formulations/mitc4-shell-formulation.md @@ -1541,10 +1541,10 @@ or drilling-energy warning is part of this check. ### 17.5 Reference-comparison boundary Abaqus comparison uses only the declared full-integration S4 case and blocks only -on matched global `U1/U2/U3` rows under -`tolerance_c=1e-9+1e-6*reference_scale_c`, where `reference_scale_c` is the maximum -absolute finite Abaqus value for the same component. `UR1/UR2/UR3` uses the same -formula but an exceedance emits only a deterministic nonblocking warning. +on matched global `U1/U2/U3` rows under the fixed absolute criterion +`abs(fesa-reference) <= 1.0e-5`. `UR1/UR2/UR3` uses the same fixed absolute value but +an exceedance emits only a deterministic nonblocking warning. A reported reference +scale is diagnostic only and does not enter the MITC4 decision or normalization. FESA `S4` and `S4R` inputs must produce the same internal numerical rows for identical supported models while preserving distinct source metadata. This common-path property is verified without consuming an S4R Abaqus artifact; Abaqus S4R is not an acceptance @@ -1631,7 +1631,7 @@ research brief remain the project source of truth. | `024-029` | deterministic element buffers, partitioned linear lifecycle, full-residual reaction | planning | | `039-048` | nodal/global and shell/local recovery inventory, units, identities, physical shell energy | I/O schema | | `049-057` | normalized invariants, patches, fixed drilling, declared S4 reference and equilibrium | Numerical Review/reference/physics | -| `058-064` | exact B33 mixed tolerance; U blocking and UR warning-only | reference verification | +| `058-064` | fixed absolute `1.0e-5`; U blocking and UR warning-only | reference verification | | `065-072` | exact existing S4 paths, S4R reference non-consumption, immutability and displacement-only boundary | reference model | ### 20.1 Numerical Review revision traceability @@ -1685,7 +1685,7 @@ items or an expanded reference portfolio as missing evidence. without claiming element equivalence. - Do not consume `reference/shellR/` in acceptance comparison; preserve S4R support through source-mapping/common-kernel/metadata tests. -- Use the exact B33 mixed tolerance; do not add administrative metadata or portfolio gates. +- Use the fixed absolute MITC4 tolerance `1.0e-5`; do not alter the separate B33 tolerance or add administrative metadata or portfolio gates. - Do not create, repair, rename, or run reference artifacts during this formulation gate. diff --git a/docs/implementation-plans/linear-static-mitc4-shell-implementation-plan.md b/docs/implementation-plans/linear-static-mitc4-shell-implementation-plan.md index db173a6..202a9b2 100644 --- a/docs/implementation-plans/linear-static-mitc4-shell-implementation-plan.md +++ b/docs/implementation-plans/linear-static-mitc4-shell-implementation-plan.md @@ -277,8 +277,9 @@ order even when the minimal dependency set below is smaller. - Consume exactly one declared input and displacement CSV per case; map instance, source node and six displacement components directly to HDF5. - Precheck header/row set/duplicates/nonfinite/schema/identity before numeric work. -- Apply `1e-9+1e-6*reference_scale_c`; U blocks, UR only emits deterministic warning; - record all required metrics and worst row. +- Apply fixed absolute `1.0e-5` to every U/UR row without a scale-dependent decision + term; U blocks, UR only emits deterministic warning; record all required metrics + and worst row. - Tests: `MITC4-REF-001` through `MITC4-REF-006`. ### TASK-14: `shell-s4-end-to-end` @@ -364,7 +365,7 @@ order even when the minimal dependency set below is smaller. | MITC4-FLOW-004 | failed output may commit state | candidate state/output commits only after validation | `LinearStaticCli.*` | | MITC4-REF-001 | six-column CSV header unsupported | exact MITC4 header maps instance/node/U/UR | `Mitc4ReferenceComparison.*` | | MITC4-REF-002 | invalid row inventory may be ignored | missing/extra/duplicate/nonfinite/schema mismatch fails first | `Mitc4ReferenceComparison.*` | -| MITC4-REF-003 | tolerance could clamp/row-normalize | exact component group scale and mixed tolerance | `Mitc4ReferenceComparison.*` | +| MITC4-REF-003 | tolerance could remain scale-dependent or clamp/row-normalize | exact fixed absolute `1.0e-5` for every U/UR row | `Mitc4ReferenceComparison.*` | | MITC4-REF-004 | UR may block verdict | U blocks; UR only warns | `Mitc4ReferenceComparison.*` | | MITC4-REF-005 | report metrics/order incomplete | row decisions, max, normalized, RMS, vector, worst row deterministic | `Mitc4ReferenceComparison.*` | | MITC4-REF-006 | comparator may require administrative files | only declared input/CSV/HDF5 required | `Mitc4ReferenceComparison.*` | @@ -521,8 +522,8 @@ once without gap or overlapping requirement range. | 055 | TASK-16 | VERIFY scope audit | N/A | extra benchmark portfolio is explicitly nonblocking and absent from completion gate | | 056 | TASK-04, TASK-05, TASK-07, TASK-10 | KERNEL-005..007, PHYSREC-001, ASM-001/002, REC-003 | N/A | exact fixed drilling, deterministic rank/action and physical-output exclusion | | 057 | TASK-10, TASK-12, downstream Physics Evaluation | REC-002..004, FLOW-002, later physics report | `shell-s4` | implementation exposes equilibrium/sign/energy evidence; physical plausibility verdict is downstream | -| 058-060 | TASK-13, TASK-14 | REF-003 and S4 E2E comparison | `shell-s4` | exact U mixed tolerance without clamp | -| 061-062 | TASK-13, TASK-14 | REF-004/005 and S4 E2E test | `shell-s4` | UR same tolerance, deterministic warning only | +| 058-060 | TASK-13, TASK-14 | REF-003 and S4 E2E comparison | `shell-s4` | exact fixed absolute U tolerance `1.0e-5` without scale/clamp | +| 061-062 | TASK-13, TASK-14 | REF-004/005 and S4 E2E test | `shell-s4` | UR fixed absolute `1.0e-5`, deterministic warning only | | 063-064 | TASK-13 | REF-001/002/005 | `shell-s4` | schema/row failure before numeric comparison; full metrics | | 065-068 | TASK-13, TASK-14, TASK-15 | REF-001/002/006, S4 case precheck and S4R non-consumption/common-path evidence | `shell-s4` | exact two S4 paths; unique finite mapped rows; no S4R artifact consumption | | 069-071 | TASK-14, TASK-15 | S4 E2E suite and S4R common-path tests | `shell-s4` | S4 U blocks/UR warns; S4R mapping has no Abaqus equality gate | @@ -882,16 +883,18 @@ ctest --test-dir .harness/build -C Debug --output-on-failure - Scope ownership: this one test-only reference module owns TASK-13 comparator behavior plus TASK-14 declared-case tests; it owns no solver production module. - Prerequisite: Step 12 `completed` and valid MITC4 HDF5 fixture. -- RED: add REF-001..006 plus E2E-S4-001/002 before the comparator - implementation; build the reference target and run +- RED: update REF-003 first so the existing scale-dependent comparator fails against + literal fixed-boundary cases around `1.0e-5`; build the reference target and run `ctest --test-dir .harness/build -C Debug -R "Mitc4ReferenceComparison|Mitc4S4Reference" --output-on-failure`. - Record the missing comparator/declared-case failure. -- GREEN: minimally add test-only comparator for exact shell CSV/HDF5 contract. + Record the expected old-tolerance assertion failure. +- GREEN: minimally replace only the MITC4 comparator decision value with fixed absolute + `1.0e-5`; keep reference scale as diagnostic report data only. - If a declared case exposes a production defect outside this reference-test module, stop the Step and route a focused correction to the owning prior module; do not patch unrelated production layers inside this Step. - VERIFY: focused comparator and the declared S4 tests, then common full VERIFY. -- Prohibitions: no reference artifact writes/Abaqus run, no metadata/README gate, no UR blocking. +- Prohibitions: no reference artifact writes/Abaqus run, no metadata/README gate, no UR + blocking, no B33 comparator change, and no scale/clamp substitution for fixed `1.0e-5`. After explicit approval, planning may create only: diff --git a/docs/io-definitions/linear-static-mitc4-shell-io.md b/docs/io-definitions/linear-static-mitc4-shell-io.md index 434b672..82819f8 100644 --- a/docs/io-definitions/linear-static-mitc4-shell-io.md +++ b/docs/io-definitions/linear-static-mitc4-shell-io.md @@ -36,7 +36,8 @@ The user approved the following I/O-specific decisions on `2026-08-12`: retaining the existing common metadata, nodal-result, diagnostic, CLI, and failure-atomicity conventions. -The approved requirements fix the drilling rule and B33 mixed displacement tolerance. +The approved requirements fix the drilling rule and the MITC4 fixed absolute +displacement tolerance `1.0e-5`. Drilling calibration/output, `NR-O03`, `NR-O04`, bundle-administration metadata, and an expanded reference portfolio are outside this contract. @@ -514,22 +515,21 @@ Before tolerance evaluation: Only `U1/U2/U3` affect pass/fail. `UR1/UR2/UR3` are always compared and reported but can emit only an approved deterministic nonblocking warning. -For each model, step/frame, quantity, and component group: +For every matched displacement row: ```text -reference_scale_c = max(abs(reference_value_i)) -row_tolerance_c = 1e-9 + 1e-6 * reference_scale_c -row_pass = abs(fesa_value-reference_value) <= row_tolerance_c +row_tolerance = 1.0e-5 +row_pass = abs(fesa_value-reference_value) <= row_tolerance ``` -Reference scale uses finite Abaqus values only. A zero scale makes the relative term -zero. No reference or result value is zero-clamped and no row-specific relative -denominator replaces the component scale. The formula is the approved B33 rule: -the `1e-9` floor is in the user-consistent length unit for U and dimensionless for UR. -U exceedance fails; UR exceedance emits a deterministic warning only. +The `1.0e-5` value is in the user-consistent length unit for U and dimensionless for +UR. No reference or result value is zero-clamped and neither component scale nor a +row-specific denominator changes the fixed value. A reference scale may remain in the +report as diagnostic information only. U exceedance fails; UR exceedance emits a +deterministic warning only. The separate B33 mixed tolerance is unchanged. The report records every U/UR row, blocking/nonblocking decision, absolute error, -component-scale normalized error, RMS error, displacement/rotation vector-norm +fixed-tolerance-normalized error, RMS error, displacement/rotation vector-norm error, worst source row/component, and every UR warning. ## 8. CLI and Diagnostics Contract @@ -615,7 +615,7 @@ physics review, or release status follows from approval of this document alone. | `031-038` | source-independent MITC4 identity, fixed drilling stabilization and full-integration policy; no drilling output | Implementation Planning tests | | `039-048` | additive HDF5 v0 paths, mandatory quantities, location identity, atomic output | Reference Model and Implementation Planning | | `049-057` | diagnostic/schema hooks and required verification-metric/physical-energy evidence | Numerical Review and planning | -| `058-064` | normalized U/UR rows, exact B33 tolerance, blocking/warning behavior, report inventory | Reference Verification | +| `058-064` | normalized U/UR rows, fixed absolute `1.0e-5`, blocking/warning behavior, report inventory | Reference Verification | | `065-072` | exact current S4 paths, S4R reference non-consumption, immutability and displacement-only gate | Reference Model | ## 11. Open Issues and Downstream Handoff @@ -623,8 +623,8 @@ physics review, or release status follows from approval of this document alone. ### 11.1 Numerical Review boundary No I/O-owned calibration value remains open. Numerical Review shall verify the exact -fixed drilling rule, basic geometry predicates, required HDF5 inventory, and B33 -tolerance mapping. Drilling calibration/energy output, `NR-O03`, `NR-O04`, bundle +fixed drilling rule, basic geometry predicates, required HDF5 inventory, and fixed +absolute MITC4 tolerance mapping. Drilling calibration/energy output, `NR-O03`, `NR-O04`, bundle administration and reference-portfolio expansion are removed scope. ### 11.2 Reference Model Agent @@ -632,7 +632,7 @@ administration and reference-portfolio expansion are removed scope. - Write `docs/reference-models/linear-static-mitc4-shell-reference-models.md` using this exact keyword/HDF5/reference-row contract. - Record only the two exact existing input/displacement pairs, comparison components, - HDF5 projection, source-row identity, B33 tolerance and immutability rule. + HDF5 projection, source-row identity, fixed absolute MITC4 tolerance and immutability rule. - Treat reaction/stress artifacts as nonblocking review evidence and do not create location-equivalence claims absent from this contract. diff --git a/docs/numerical-reviews/linear-static-mitc4-shell-review.md b/docs/numerical-reviews/linear-static-mitc4-shell-review.md index 7e1275e..81cc4e9 100644 --- a/docs/numerical-reviews/linear-static-mitc4-shell-review.md +++ b/docs/numerical-reviews/linear-static-mitc4-shell-review.md @@ -75,7 +75,7 @@ confirmed mathematical defect는 없다. | `NR-O02` drilling-energy ratio | `removed from scope` | Drilling energy는 내부 quadratic identity일 뿐 physical energy나 mandatory output이 아니며 ratio/warning threshold도 요구하지 않는다. | | `NR-O03` smooth-director calibration | `removed from scope` | Pairwise positive incident-normal orientation, finite/nonzero averaging 및 duplicate-node fold modeling이 승인된 exact predicate다. 별도 angle calibration은 gate가 아니다. | | `NR-O04` distortion/warp calibration | `removed from scope` | Basic topology, finite/nonzero surface measure 및 required-point `J>0`가 승인된 predicate다. Quality sweep이나 cutoff는 gate가 아니다. | -| `NR-O05` U/UR tolerance | `resolved` | 모든 관련 문서가 sole S4 reference에 `1e-9+1e-6*reference_scale_c`, U blocking, UR warning-only를 동일하게 정의한다. S4R은 reference gate가 아닌 common-path evidence다. | +| `NR-O05` U/UR tolerance | `resolved` | 모든 관련 문서가 sole S4 reference에 고정 절대오차 `1.0e-5`, U blocking, UR warning-only를 동일하게 정의한다. Reference scale은 판정에 사용하지 않으며 S4R은 reference gate가 아닌 common-path evidence다. | 이전의 `needs-reference-model` 판정에 포함됐던 canonical naming, README, `metadata.json`, provenance, expanded portfolio 및 아직 없는 comparison result는 현재 @@ -223,9 +223,8 @@ confirmed mathematical defect는 없다. not emitted, and `S13/S23` point stress is not synthesized. Different natural or section locations are never averaged. - Reference comparison first rejects missing, extra, duplicate, nonfinite or - identity-mismatched rows. For each case/component, - `reference_scale_c=max(abs(finite Abaqus values))` and - `tolerance_c=1e-9+1e-6*reference_scale_c`; no zero clamp or row denominator is + identity-mismatched rows. Every U/UR row then uses fixed absolute tolerance + `1.0e-5`; no reference-scale decision term, zero clamp or row denominator is introduced. U1/U2/U3 is blocking and UR1/UR2/UR3 is warning-only. - Source S4 and S4R select the same FESA MITC4 kernel/quadrature/recovery path while preserving source type. This is an input mapping, not an Abaqus formulation, diff --git a/docs/reference-models/linear-static-mitc4-shell-reference-models.md b/docs/reference-models/linear-static-mitc4-shell-reference-models.md index 6c4ef84..a3a4517 100644 --- a/docs/reference-models/linear-static-mitc4-shell-reference-models.md +++ b/docs/reference-models/linear-static-mitc4-shell-reference-models.md @@ -80,26 +80,26 @@ zero-clamped and mismatched rows are not omitted, averaged, or synthesized. ## 5. Tolerance and decision rule -For each case and component `c` independently, using only finite Abaqus rows: +For every matched row: ```text -reference_scale_c = max(abs(abaqus_value_i)) -tolerance_c = 1e-9 + 1e-6 * reference_scale_c +tolerance = 1.0e-5 absolute_error_i = abs(fesa_value_i - abaqus_value_i) ``` -The `1e-9` floor is expressed in the model's user-consistent length unit for -`U1/U2/U3` and is dimensionless for `UR1/UR2/UR3`. A zero reference scale leaves only -the absolute floor; no alternate denominator is introduced. +The fixed `1.0e-5` value is expressed in the model's user-consistent length unit for +`U1/U2/U3` and is dimensionless for `UR1/UR2/UR3`. Neither a component reference scale +nor a row-specific denominator changes the value. Reference scale may be reported as +non-decision diagnostic information. The separate B33 mixed tolerance is unchanged. -- Every matched `U1/U2/U3` row must satisfy `absolute_error_i <= tolerance_c`. +- Every matched `U1/U2/U3` row must satisfy `absolute_error_i <= tolerance`. Any U exceedance fails that case and the feature reference comparison. -- `UR1/UR2/UR3` uses the same formula. Every exceedance produces a deterministic +- `UR1/UR2/UR3` uses the same fixed value. Every exceedance produces a deterministic warning containing the case, source row, component, error, and tolerance, but does not change pass/fail. The comparison report records every U/UR row decision, maximum absolute error, -component-scale normalized error, RMS error, vector-norm error, worst source +fixed-tolerance-normalized error, RMS error, vector-norm error, worst source row/component, and every UR warning. ## 6. Coverage and handoff diff --git a/docs/requirements/linear-static-mitc4-shell.md b/docs/requirements/linear-static-mitc4-shell.md index 44a213a..ba0d42a 100644 --- a/docs/requirements/linear-static-mitc4-shell.md +++ b/docs/requirements/linear-static-mitc4-shell.md @@ -184,13 +184,13 @@ Formulation, Numerical Review, I/O, Reference Model, Implementation Planning 및 ## Tolerance Policy -- **FESA-REQ-LSMITC4-058** — Abaqus reference pass/fail shall apply only to matched global `U1/U2/U3` rows using `tolerance_c = 1e-9 + 1e-6 * reference_scale_c`, exactly reusing the approved B33 displacement rule. -- **FESA-REQ-LSMITC4-059** — `reference_scale_c` shall be computed only from finite Abaqus values in the same model, step/frame, quantity and component group; reference values shall not be zero-clamped and row-specific relative denominators shall not replace the group scale. -- **FESA-REQ-LSMITC4-060** — The `1e-9` absolute floor is expressed in the model's user-consistent length unit for U; no additional MITC4 tolerance calibration is required. -- **FESA-REQ-LSMITC4-061** — Global `UR1/UR2/UR3` rows shall use the same component-scale formula as Requirement 058 and shall be fully reported; an exceedance emits a deterministic nonblocking warning and never changes pass/fail. -- **FESA-REQ-LSMITC4-062** — The `1e-9` UR floor is dimensionless. No separate UR large-error or drilling-energy threshold is required. +- **FESA-REQ-LSMITC4-058** — Abaqus reference pass/fail shall apply only to matched global `U1/U2/U3` rows using the fixed absolute tolerance `abs(fesa-reference) <= 1.0e-5` for every row. +- **FESA-REQ-LSMITC4-059** — MITC4 row tolerance and tolerance-normalized error shall not depend on `reference_scale`, a row-specific denominator, zero clamp or component magnitude; a reference scale may be reported only as non-decision diagnostic information. +- **FESA-REQ-LSMITC4-060** — The fixed `1.0e-5` U tolerance is expressed in the model's user-consistent length unit and is independent of the approved B33 component-scale mixed tolerance. +- **FESA-REQ-LSMITC4-061** — Global `UR1/UR2/UR3` rows shall use the same fixed absolute value `1.0e-5` and shall be fully reported; an exceedance emits a deterministic nonblocking warning and never changes pass/fail. +- **FESA-REQ-LSMITC4-062** — The fixed `1.0e-5` UR tolerance is dimensionless. No separate UR large-error or drilling-energy threshold is required. - **FESA-REQ-LSMITC4-063** — Missing, extra, duplicate, nonfinite, schema-mismatched or source-identity-mismatched rows shall fail artifact/schema validation before numeric tolerance evaluation for both U and UR inventories. -- **FESA-REQ-LSMITC4-064** — The comparison report shall record each U/UR row decision, maximum absolute error, component-scale normalized error, RMS error, vector-norm error and worst source row/component; nonblocking UR warnings shall not be omitted from an otherwise passing report. +- **FESA-REQ-LSMITC4-064** — The comparison report shall record each U/UR row decision, maximum absolute error, fixed-tolerance-normalized error, RMS error, vector-norm error and worst source row/component; nonblocking UR warnings shall not be omitted from an otherwise passing report. ## Reference Artifact Requirements @@ -226,8 +226,8 @@ without gaps or overlap. | `031-038` | 5-DOF physics embedded in 6-DOF with fixed drilling stabilization | numerical boundary | User approval; MITC literature and thesis 6-DOF discussion | must | Formulation review, invariant and rank tests | Exact `10^-3` positive rotational-diagonal rule; physical outputs exclude drilling | Fixed by Requirements 033-036 | Formulation; Numerical Review; Implementation Planning | approved | | `039-048` | Mandatory HDF5 output and failure atomicity | output | User approval; ADR-005/016/018 | must | Recovery, schema, identity, nonfinite and atomicity tests | Every quantity/location/unit/identity exists; failure commits no partial success | Exact component/location inventory; I/O Definition owns schema | Formulation; I/O Definition; Implementation Planning | approved | | `049-057` | TDD, invariants, patch, declared reference and physics | verification | User approval; shell formulation evidence; project process | must | CTest evidence, analytical/patch tests, the S4 reference case and physics review | Required tests pass; removed calibration/portfolio checks are not reintroduced | `1e-12` symmetry/frame; `1e-10` rigid/residual | Numerical Review; Implementation Planning | approved | -| `058-060` | Translational displacement pass/fail tolerance | tolerance | User approval; B33 baseline | must | Comparator unit/integration tests and report review | Every matched U row uses `1e-9 + 1e-6*reference_scale_c` without clamp/omission | Fixed by Requirements 058-060 | Reference Verification | approved | -| `061-062` | Rotational warning-only comparison | tolerance/warning | User approval; B33 baseline | must | Comparator/diagnostic tests and report review | UR never changes pass/fail; same mixed-tolerance exceedance emits a deterministic warning | Fixed by Requirements 061-062 | Reference Verification | approved | +| `058-060` | Translational displacement pass/fail tolerance | tolerance | User approval; ADR-020 | must | Comparator unit/integration tests and report review | Every matched U row uses fixed absolute `1.0e-5` without scale, clamp or omission | Fixed by Requirements 058-060 | Reference Verification | approved | +| `061-062` | Rotational warning-only comparison | tolerance/warning | User approval; ADR-020 | must | Comparator/diagnostic tests and report review | UR never changes pass/fail; fixed absolute `1.0e-5` exceedance emits a deterministic warning | Fixed by Requirements 061-062 | Reference Verification | approved | | `063-064` | Row/schema failure and report completeness | reference verification | User approval; ADR-005/014/018 | must | Negative comparator and report-schema tests | Invalid inventory fails before numeric comparison; all U/UR metrics remain visible | No ignored invalid rows | I/O Definition; Reference Verification | approved | | `065-068` | Exact S4 reference-case inventory, S4R exclusion and row validity | reference | User declaration; ADR-019 | must | Read-only S4 inventory, source-row/component precheck and S4R non-consumption test | Two declared S4 paths exist; required rows are unique, finite and deterministically mapped; S4R artifacts are not required or consumed | Requirements `058-063` | Reference Model; Reference Verification | approved | | `069-071` | S4 reference coverage and displacement-only comparison | reference | User approval | must | HDF5-to-CSV comparison | Declared S4 case only; U blocks and UR only warns; S4R mapping remains independently tested | Requirements `058-064` | Reference Verification; Physics Evaluation | approved | @@ -270,7 +270,7 @@ and tangent derivation may remain in the formulation document. - Record only the exact existing S4 input/displacement CSV paths from Requirement 065 as acceptance artifacts and keep every existing reference artifact read-only. - Do not consume the S4R bundle in reference verification; route S4R source support to parser/common-kernel/HDF5 tests from Requirement 066. -- Define only the HDF5-to-CSV source-node/component projection and the already approved B33 mixed tolerance; do not add bundle administration or portfolio gates. +- Define only the HDF5-to-CSV source-node/component projection and the approved fixed absolute MITC4 tolerance `1.0e-5`; do not add bundle administration or portfolio gates. ### Implementation Planning Agent diff --git a/docs/research/linear-static-mitc4-shell-research.md b/docs/research/linear-static-mitc4-shell-research.md index 4b526db..4074739 100644 --- a/docs/research/linear-static-mitc4-shell-research.md +++ b/docs/research/linear-static-mitc4-shell-research.md @@ -180,7 +180,7 @@ problems must not be mixed. 1. **Drilling:** P1 fixes the positive physical-rotational-diagonal scale and `10^-3` factor. Alternative-family comparison, coefficient sweep, conditioning plateau and artificial-energy threshold are not required. 2. **Director/geometry:** `NR-O03` and `NR-O04` are removed. The absence of a calibrated smooth angle or distortion/warp cutoff is not missing evidence. -3. **Reference tolerance:** P1 reuses the B33 formula `1e-9 + 1e-6*reference_scale_c`; U exceedance fails and UR exceedance only warns. +3. **Reference tolerance:** The approved downstream contract uses fixed absolute `1.0e-5` for every U/UR row without a reference-scale decision term; U exceedance fails and UR exceedance only warns. The B33 mixed tolerance remains unchanged and separate. 4. **Reference case:** the existing `reference/shell/` S4 input/displacement pair is the complete required acceptance inventory because FESA-MITC4 uses full integration. `reference/shellR/` is not consumed by acceptance comparison. Administrative bundle metadata and an expanded portfolio are not gates. No research-owned numerical decision remains blocking for Implementation Planning. @@ -195,7 +195,7 @@ No research-owned numerical decision remains blocking for Implementation Plannin | `037` S4/S4R common path | F-25–F-27, `MITC4-S4-S4R-SAME-PATH` | source mapping supported only as a FESA product decision, never an Abaqus formulation claim | | `039-048` shell outputs | F-09–F-11/F-18 | physical shell output and bottom/mid/top stress locations; no drilling-specific dataset | | `049-057` element verification | F-28/F-29 and Candidate Benchmarks | required invariant/patch/fixed-drill checks; broader portfolio remains optional | -| `058-064` U/UR tolerance | F-25–F-27 plus P1 | exact B33 mixed tolerance; U blocking and UR warning-only | +| `058-064` U/UR tolerance | F-25–F-27 plus approved user decision | fixed absolute `1.0e-5`; U blocking and UR warning-only | | `065-072` reference artifacts | S11/S12 and current inventory state | exact existing S4 paths, source-row/component mapping, S4R non-consumption, and immutability | ## Downstream Handoff @@ -223,7 +223,7 @@ No research-owned numerical decision remains blocking for Implementation Plannin ### Reference Model Agent - Record the exact existing S4 and S4R input/displacement paths without creating, renaming, repairing, or normalizing artifacts. -- Define deterministic HDF5-to-CSV source-node/component mapping and the fixed B33 tolerance; do not require provenance, naming policy, README/metadata, duplicated model descriptions, or an expanded portfolio. +- Define deterministic HDF5-to-CSV source-node/component mapping and the fixed absolute MITC4 tolerance `1.0e-5`; do not require provenance, naming policy, README/metadata, duplicated model descriptions, or an expanded portfolio. ### Implementation Planning Agent diff --git a/docs/superpowers/plans/2026-08-12-independent-reference-validation-policy.md b/docs/superpowers/plans/2026-08-12-independent-reference-validation-policy.md index 9cb5fe4..fcfc313 100644 --- a/docs/superpowers/plans/2026-08-12-independent-reference-validation-policy.md +++ b/docs/superpowers/plans/2026-08-12-independent-reference-validation-policy.md @@ -14,7 +14,8 @@ - Do not run Abaqus or another reference solver. - Do not modify C++ source, tests, or CMake. - Preserve HDF5 as authoritative FESA output. -- Use the B33 mixed tolerance exactly for MITC4 U; U blocks and UR warns only. +- Use fixed absolute `1.0e-5` for MITC4 U/UR; U blocks and UR warns only. Keep the + separate B33 mixed tolerance unchanged. - Retain fixed numerical drilling stabilization but exclude calibration and drilling evidence outputs. - Remove `NR-O03` and `NR-O04` from MITC4 implementation readiness. - Implementation Planning may create Harness phase files only after user approval of the Step draft. @@ -38,7 +39,7 @@ - [ ] Replace canonical/legacy/provenance bundle governance with the minimal reference-case contract. - [ ] Separate Abaqus input syntax and external comparison from FESA formulation behavior. - [ ] Record the new decision as a superseding ADR while preserving historical decisions. -- [ ] State the MITC4 B33 tolerance reuse and fixed drilling scope without claiming implementation exists. +- [ ] State the MITC4 fixed absolute tolerance and fixed drilling scope without claiming implementation exists. - [ ] Verify changed policy terms with targeted `rg` checks and `git diff --check`. - [ ] Commit with `docs: simplify FESA reference validation policy`. @@ -71,7 +72,7 @@ - Consumes: Tasks 1-2 policy and approved fixed drilling rule - Produces: implementation-ready feature scope without removed calibration gates -- [ ] Correct the observed S4/S4R reference inventory and adopt the B33 U/UR mixed tolerance. +- [ ] Correct the observed S4/S4R reference inventory and adopt fixed absolute `1.0e-5` for MITC4 U/UR. - [ ] Replace drilling candidate/sweep language with the fixed positive rotational-diagonal rule. - [ ] Remove drilling calibration, drilling-energy warning, `NR-O03`, `NR-O04`, and expanded portfolio requirements. - [ ] Preserve the future nonlinear derivation as documentation-only. diff --git a/docs/superpowers/specs/2026-08-12-independent-reference-validation-policy-design.md b/docs/superpowers/specs/2026-08-12-independent-reference-validation-policy-design.md index fb48fec..8599803 100644 --- a/docs/superpowers/specs/2026-08-12-independent-reference-validation-policy-design.md +++ b/docs/superpowers/specs/2026-08-12-independent-reference-validation-policy-design.md @@ -84,18 +84,19 @@ Only matched global `U1/U2/U3` rows are blocking. `UR1/UR2/UR3` rows are compare reported as warning-only evidence. Reactions and stresses may be inspected but are not reference pass/fail quantities. -For each case and component `c`: +For every matched U/UR row: ```text -reference_scale_c = max_i(abs(abaqus_value_i,c)) -tolerance_c = 1e-9 + 1e-6 * reference_scale_c +tolerance = 1.0e-5 ``` -The `1e-9` absolute floor is expressed in the model's user-consistent length unit for -translation and as a dimensionless rotation value for warning-only UR. Values are not -zero-clamped. Missing, duplicate, unmatched, or nonfinite required rows fail before -numeric tolerance evaluation. U tolerance failure fails reference verification; UR -tolerance exceedance emits a deterministic warning only. +The fixed value is expressed in the model's user-consistent length unit for translation +and as a dimensionless rotation value for warning-only UR. Reference scale may remain +diagnostic report data but does not enter the tolerance or normalized-error denominator. +Values are not zero-clamped. Missing, duplicate, unmatched, or nonfinite required rows +fail before numeric tolerance evaluation. U tolerance failure fails reference +verification; UR tolerance exceedance emits a deterministic warning only. The B33 mixed +tolerance remains unchanged. No additional locking, convergence, distorted, curved, director-angle, or invalid geometry reference portfolio is required for this MITC4 implementation acceptance. @@ -146,7 +147,7 @@ For MITC4: - fixed drilling stabilization closes `NR-O01` and removes `NR-O02` by scope; - `NR-O03` and `NR-O04` are removed from the approved verification scope; -- the B33 mixed tolerance closes the blocking part of `NR-O05`; +- the fixed absolute MITC4 tolerance `1.0e-5` closes the blocking part of `NR-O05`; - missing heavyweight reference metadata is `not-required-by-policy`; - confirmed formulation defects remain blocking. diff --git a/phases/linear-static-mitc4-shell/step13.md b/phases/linear-static-mitc4-shell/step13.md index add2a59..e90fc2b 100644 --- a/phases/linear-static-mitc4-shell/step13.md +++ b/phases/linear-static-mitc4-shell/step13.md @@ -31,14 +31,16 @@ ## 작업 -1. `MITC4-REF-001..006`, `MITC4-E2E-S4-001/002`를 comparator 구현 전에 작성한다. +1. 기존 `MITC4-REF-003`을 먼저 고정 절대 tolerance boundary test로 바꾸고 현재 + scale-dependent comparator에서 예상대로 실패하는 RED를 확인한다. 나머지 + `MITC4-REF-001..006`, `MITC4-E2E-S4-001/002` coverage는 유지한다. 2. Test-only comparator는 각 case의 exact input/displacement CSV와 FESA HDF5만 요구한다. `Part Instance Name`와 `Node Label`을 HDF5 node identity에 match하고 CSV `U-U1..U-U3, UR-UR1..UR-UR3`를 displacement columns 0..5에 match한다. 3. Header/schema/row set/missing/extra/duplicate/nonfinite/source identity를 numeric comparison 전에 fail한다. -4. Component group의 finite Abaqus scale로 - `tol_c=1e-9+1e-6*reference_scale_c`를 clamp/row denominator 없이 적용한다. +4. 모든 matched U/UR row에 고정 절대 tolerance `1.0e-5`를 scale/clamp/row denominator + 없이 적용한다. Reference scale은 report diagnostic으로만 남길 수 있다. U1/U2/U3만 blocking이고 UR1/UR2/UR3 exceedance는 deterministic warning-only다. 5. 모든 row decision, max absolute, normalized, RMS, vector norm, worst source row/component를 deterministic report/JSON에 남긴다. @@ -74,7 +76,7 @@ cmake --build .harness/build --config Debug --target fesa_reference_tests ctest --test-dir .harness/build -C Debug -R "Mitc4ReferenceComparison|Mitc4S4Reference" --output-on-failure ``` -Missing comparator/case RED를 확인하고 test-only minimal GREEN. 이후: +기존 mixed-tolerance 구현에 대한 fixed-boundary RED를 확인하고 test-only minimal GREEN. 이후: ```powershell cmake --build .harness/build --config Debug --target fesa_reference_tests @@ -98,6 +100,7 @@ RED/comparator/E2E/full/hash evidence를 기록하고 current Step 상태 payloa - Abaqus/reference solver를 실행하거나 reference 파일을 생성·수정·rename·repair하지 마라. - README, metadata.json, provenance, Abaqus version을 gate로 만들지 마라. -- UR warning을 blocking으로 바꾸거나 tolerance를 calibration/clamp하지 마라. +- UR warning을 blocking으로 바꾸거나 고정 `1.0e-5`를 scale/calibration/clamp로 대체하지 마라. +- B33 comparator 또는 B33 tolerance를 수정하지 마라. - Reaction/stress equality gate나 Abaqus formulation equivalence를 추가하지 마라. - Solver production file을 수정하거나 직접 commit/hook 실행을 하지 마라.