590 lines
38 KiB
Markdown
590 lines
38 KiB
Markdown
# Shell 과도 열전달 독립 수치 검토
|
||
|
||
- 검토일: 2026-09-29. **정식화 일관성 및 구현 전 수치 검증 설계 PASS /
|
||
solver 구현·정확도·reference·physics 검증 미실행**.
|
||
- 독립 검토 대상: formulation commit e052b6e, source 접속 범위 보완 efa5403,
|
||
입력 rounding-cell 보완 dd409b5의 실제 diff 및 §7.1–7.2.
|
||
[PRD STH-C07](PRD.md#sth-c07--독립-검증과-수치-계약의-선행-조건)의 위임 범위에서
|
||
아래 식·상수·fixture·판정 기준을 production kernel 구현 전에 고정한다.
|
||
- 상태: **DONE_WITH_CONCERNS**. 고정 5점의 초기 침투층 및 warped 3×3 적분 오차를
|
||
정량 기록했다. 지원 방법·geometry·외부 tolerance 변경을 제안하거나 승인하지 않는다.
|
||
- 기준: [정식화](formulation.md), [승인 ADR](ADR.md), [공통 수치 기준](../TOLERANCE.md),
|
||
[개발 규칙](../standards.md), [수치 주의점](../engineering-notes.md).
|
||
재현 계산은 [scratch appendix](verification-oracles.md#독립-oracle와-재현)에 있다.
|
||
Reviewer는 정식화 작성자가 아니며 production·test·reference를 수정하지 않았다.
|
||
|
||
## 1. 판정과 이전 검토의 정리
|
||
|
||
2026-09-28 Proposed 검토는 당시 evidence다. NR-01의 product-domain 및 normalized
|
||
station 접속, NR-02의 raw 초기값과 BC 상속/override는 현재 승인 계약으로 해결되었다.
|
||
NR-03의 edge 입력 제안은 **011 전체 연기**로 대체된다. 과거 edge weight는 이번
|
||
구현·검증 요구가 아니다. 종료 시간의 정수배 제한 제안도 폐기되었다.
|
||
|
||
| 항목 | 독립 판단 / 현재 경계 |
|
||
| --- | --- |
|
||
| 약형·분리 행렬·부호 | Q4×두 C0 P2, 실제 midsurface metric, exact Z, consistent C와 BE는 일관된다. 단위·node-major 순서·법선 방향을 확인했다. |
|
||
| Whole patch | affine normal image의 separating vector certificate 및 bilinear midpoint identity의 injectivity 유도가 성립한다. 적분점만 검사하는 것은 불충분하다. |
|
||
| Source 접속 | 전역 node-edge scan은 disconnected/contact 범위를 침범할 수 있었다. efa5403의 source endpoint를 공유하는 coarse/partial edge 후보 제한을 독립 확인했다. |
|
||
| 초기 jump | raw t=0 보존 및 첫 RHS의 C_fc T_c_old 항이 필요하다. Slab의 δ→0 자유 초기 극한은 분석용 oracle이며 raw 초기 dataset을 바꾸는 projection 절차가 아니다. |
|
||
| 시간 | 표현오차 수준 endpoint-close와 실제 shortened δ를 구별하는 predicate를 검산했다. 저장 시각의 subtraction과 연산 δ를 혼동하지 않는다. |
|
||
| Recovery | 4 면내점×6 두께 trace의 global q와 R=[e1,n×e1,n], 0−/0+ 분리, full residual 반력 부호가 일관된다. t=0 flux/reaction은 없다. |
|
||
| 남는 위험 | consistent C의 초기 undershoot, 고정 두께 해상도, metric conditioning, 3×3 유한 적분 오차. Clamp/lumping/차수 변경/지원 축소로 숨길 수 없다. |
|
||
|
||
PASS는 **설계의 수학적 일관성과 독립 사전 oracle**에 한정한다.
|
||
실제 MSVC solver·HDF5·외부 reference 결과가 통과했다는 뜻은 아니다.
|
||
|
||
## 2. Geometry와 mesh 판정
|
||
|
||
### 2.1 Whole-patch certificate와 uncertainty
|
||
|
||
정식화 §2.1의 r=a+bξ+cη+dξη, w=w0+uξ+vη를 사용한다.
|
||
Convex set W={w(ξ,η)}의 원점에 가장 가까운 w*는 w*·w≥||w*||²를 만족한다.
|
||
따라서 네 corner에 대한 **같은** 고정 double 벡터 s의 양의 interval dot product가
|
||
전체 patch를 증명한다. 후보 최소점 계산이 부정확해도 최종 certificate가 양수이면
|
||
안전하다. 후보 탐색 실패를 수학적 퇴화의 증명으로 보고하면 안 된다.
|
||
r(p)−r(q)=Dr((p+q)/2)(p−q)이므로 전체 patch에서 rank(Dr)=2이면 단사다.
|
||
이 증명은 bilinear map 전용이며 일반 고차 curved element로 확대하지 않는다.
|
||
|
||
**고정 규칙:** binary64, u=2^-53, epsilon=2^-52, round-to-nearest,
|
||
gradual underflow; 입력 double은 singleton interval이다. 각 사칙연산 endpoint를
|
||
양쪽 nextafter로 한 번씩 넓힌다. 0을 포함한 divisor는 사용하지 않는다.
|
||
sqrt는 비음수 endpoint를 계산한 뒤 같은 방식으로 넓힌다. 재척도는 exact
|
||
power-of-two이며 손실된 subnormal도 enclosure에 포함한다. Fast-math/FTZ와
|
||
증명되지 않은 재결합은 이 bound의 전제가 아니다.
|
||
|
||
모든 lower(s·w_corner)>0이면
|
||
J_lower=min lower(s·w_corner)/upper(sqrt(s·s))>0를 보존한다.
|
||
증명되지 않으면 다른 유한 candidate를 시도하고 모두 실패하면 uncertain geometry로
|
||
fail closed한다. 정확히 중복된 좌표·source node, 비유한 값, 증명된 w=0은 invalid다.
|
||
고정 Jacobian epsilon·warp/aspect cutoff는 **0개**다. Certificate 뒤에도 각 사용점의
|
||
metric inverse/gradient가 유한하고 interval에서 0 divisor가 배제되는지 확인한다.
|
||
κ(g)는 진단과 오차 전파에 쓰며 지원 cutoff가 아니다.
|
||
|
||
### 2.2 Source topology와 T-edge uncertainty
|
||
|
||
Edge incidence는 1 또는 반대 순서의 2; 3 이상·같은 방향·중복 patch는 거부한다.
|
||
각 vertex link는 하나의 path 또는 cycle이며 끊어진 fan·branch·중복 link는 거부한다.
|
||
|
||
T-edge 후보는 **같은 instance에서 source endpoint를 공유한**
|
||
(p,q)와 (p,v) 또는 (v,q)이고 p,q,v는 서로 다른 node다. Coarse 방향을 양쪽으로
|
||
시도한다. a=q−p, b=v−p의 interval에서 |a_j| lower가 가장 큰 성분 j를 택하고
|
||
λ=b_j/a_j, 잔여 성분 b_i−λa_i를 계산한다.
|
||
|
||
- 잔여 성분 interval 하나가 0을 제외하거나 λ가 [0,1] 밖이면 비접합이다.
|
||
- 공선 및 0<λ<1이 증명되면 nonconforming T-edge다.
|
||
- 공선/열린 구간 포함이 불확실하면 uncertain 접속으로 실패한다. 정확한 끝점 일치는
|
||
별도 중복 좌표 진단이며 열린 구간으로 clamp하지 않는다.
|
||
- Interval이 0을 포함한다고 exact 공선을 주장하지 않는다. Exact double-rational
|
||
검산은 선택 사항이며 새 arbitrary-precision runtime dependency를 요구하지 않는다.
|
||
Interval fail-closed만으로 계약을 충족한다.
|
||
|
||
모든 node 대 모든 edge scan, 좌표 welding, source 후보가 없는 component 접촉 검출은
|
||
하지 않는다. 같은 component의 멀리 떨어진 부분끼리의 접촉도 대상이 아니다.
|
||
이는 global contact 검증을 완료했다는 뜻이 아니다.
|
||
|
||
### 2.3 고정 geometry fixture군
|
||
|
||
| 군 | 좌표/변환과 필수 판정 |
|
||
| --- | --- |
|
||
| Affine | (0,0,0),(1,0,0),(1,1,0),(0,1,0); 평행사변형 (0,0,0),(2,0,0),(3,1,0),(1,1,0). Certificate PASS. |
|
||
| 평면 왜곡 | (0,0,0),(2,0,0),(1.5,1,0),(0,1,0). J>0; M exact, S의 3×3 exactness 주장 금지. |
|
||
| Saddle | r=(ξ,η,aξη), a=.1,.5,2; 자연 corner를 node로 사용. w=(-aη,-aξ,1), s=(0,0,1), J_lower=1의 exact 근거. 모두 지원. |
|
||
| 긴 aspect | rectangle 1×2^-40; 유효 certificate 필요. 조건수와 metric 계산을 별도 기록하며 aspect만으로 거부 금지. |
|
||
| Scale/이동/회전 | 유효군의 2^-200,1,2^200배; unit patch에 (2^20,-2^20,2^20) 이동. Signed axis permutation 및 z축 3-4-5 회전. 입력 반올림을 oracle interval에 포함. |
|
||
| 적분점 검사의 반례 | r=(ξ,(ξ−1/4)η,0). 3×3 모든 점의 J는 비영이지만 ξ=1/4에서 J=0. Whole-patch 거부. |
|
||
| Invalid | bow-tie 순서, 반복 source/좌표, collinear 네 node, NaN/Inf. 자동 재순서/normal flip 금지. |
|
||
| Uncertain | affine b=(1,1,0),c=(1,1+2^-52,0): cancellation interval이 0을 포함할 수 있다. 증명된 certificate 또는 uncertain 실패만 허용; 임의 epsilon/형상 보정 금지. |
|
||
| 접속 양성 | 반대 순서 edge 공유 Q4 두 개, 90도 fold, h=1/2 두께 단차, k=1/10 재료 접속; disconnected 두 patch. |
|
||
| 음성/대조 | edge 3 incidence, 동일 directed edge, node 하나만 공유한 두 fan; coarse(p,q)/partial(p,v),v=(p+q)/2. 각 음성의 별도 source identity/instance 좌표 접촉 대조군은 자동접속·T-edge 거부가 없어야 함. |
|
||
|
||
## 3. 내부 roundoff, 행렬 및 solve 기준
|
||
|
||
### 3.1 공통 오차 언어
|
||
|
||
외부 5%/1%와 무관하게 γ_m=mu/(1−mu),u=2^-53이며 mu<1을 요구한다.
|
||
행렬/shape는 Frobenius norm, solve는 ∞ norm, 물리 integral은 아래 L2 norm이다.
|
||
분모가 0이면 numerator도 정확히 0일 때만 통과한다. max(1,scale)은 금지다.
|
||
|
||
P_ij는 계산한 signed 합의 절댓값이 아니라 **각 quadrature/분리 항의 절댓값 합**이다.
|
||
Cancellation 때문에 P와 |X|를 바꿔 쓰지 않는다. 단위 affine fixture의 closed-form
|
||
rational oracle에 대한 고정 roundoff bound는 다음과 같다.
|
||
|
||
| 검사 | 고정 bound / 연산 수 근거 |
|
||
| --- | --- |
|
||
| M,S,Z 및 분리 C,K | \|\|X_hat−X_exact\|\|F ≤γ_4096\|\|P_X\|\|F. 점당 shape·metric·gradient·weight·entry scalar path128 이하×9+분리/scatter64 이하를 포괄한다. |
|
||
| 직접54점 대 분리 | \|\|X_54−X_sep\|\|F ≤γ_8192\|\|P_54\|\|F+γ_4096\|\|P_sep\|\|F. 54×128+reduction<8192. |
|
||
| Affine gradient·H·R | component 절댓값 전파 scale P에 error norm≤γ_2048\|\|P\|\|. Partition sum은 P=Σ\|H\|, gradient sum은 P=Σ\|\|B_p\|\|; 비영 patch는 exact gradient 크기도 포함. |
|
||
| Symmetry | \|\|X−Xᵀ\|\|F≤2E_X. E_X는 위 bound. 강제 대칭화로 검사를 통과시키지 않는다. |
|
||
| 상수 null | \|\|K1\|\|2≤sqrt(20)E_K; \|1ᵀC1−2\|≤20E_C. Fraction 검산은 exact equality. |
|
||
| h scaling | h=1/2,1,2, k/rho/c=1; C와 면내 K는 h, normal K는 1/h. 두 계산의 E를 해당 배율로 더한다. |
|
||
|
||
Operation budget은 단순 loop의 최장 path 상한이다. 실제 경로가 이보다 길면 결과에 맞춰
|
||
상수를 늘리지 않고 경로/interval을 다시 검토한다. 일반 warped/translated geometry에는
|
||
affine bound를 그대로 쓰지 않는다. §2 interval을 같은 quadrature에 전파하여 X^I를
|
||
얻고 E_X=||max(|lower(X^I)−X_mid|,|upper(X^I)−X_mid|)||F를 사용한다.
|
||
각 point의 κ2(g)와 κ2(g)γ_64를 기록한다. Inverse perturbation 상대 증폭은
|
||
κ2(g)γ_64/(1−κ2(g)γ_64)이고 분모가 양수가 아니면 이 상계는 불확실하다.
|
||
직접 interval inverse가 유한 enclosure를 증명하면 사용하고 아니면 uncertain이다.
|
||
κ를 geometry 지원 조건으로 바꾸지 않는다. Roundoff와 quadrature 절단 차이는 별개다.
|
||
|
||
### 3.2 Exact fixture와 rank
|
||
|
||
단위 square,h=2,k=rho=c=1:
|
||
M=1/36 [[4,2,1,2],[2,4,2,1],[1,2,4,2],[2,1,2,4]],
|
||
S=1/6 [[4,-1,-2,-1],[-1,4,-1,-2],[-2,-1,4,-1],[-1,-2,-1,4]].
|
||
|
||
길이1 ζ 구간의 Z0=1/30 [[4,2,-1],[2,16,2],[-1,2,4]],
|
||
Z1=1/3 [[7,-8,1],[-8,16,-8],[1,-8,7]]을 station(1,2,3),(3,4,5)에
|
||
조립한다. C=M⊗Z0,K=S⊗Z0+M⊗Z1, node-major 순서다.
|
||
정확 유리수 LDL에서 C의20 pivot>0,K의 leading19 pivot>0,K1=0,1ᵀC1=2를
|
||
확인했다. C SPD,K PSD/rank19가 독립 증명된다.
|
||
|
||
Floating 결과는 matrix bound 외에 C의 λ_min>E_C, K를 1⊥에 제한한
|
||
λ_min>E_K와 null eigenvalue 크기≤E_K를 확인한다. Eigen 연산 자체의 backward
|
||
error enclosure도 더한다. Separation이 불가능하면 rank는 inconclusive이며
|
||
clamp로 PASS를 만들지 않는다. 전역 K는 component마다 null mode 하나다.
|
||
|
||
Gradient fixture는 단위 affine 평판의 접선 b에 대해 T=A+b·r+cz,
|
||
A=2,b=(3,-2,0),c=4로 q=−k(b+cn)이다. Warped patch의 임의 global b에
|
||
같은 식을 강제하지 않으며 그 경우 실제 reciprocal tangent의 projection을 사용한다.
|
||
Constant T=2, 면내/두께선형도 각각 검사한다. 회전 후 q는 같은 회전,
|
||
normal 반전 후 station a↔6−a와 조건까지 재매핑한다. RᵀR=I,detR=+1.
|
||
Trace state(0,0,0,1,2)는 q3(0−)=0,q3(0+)=−4k/h이며 평균하지 않는다.
|
||
|
||
### 3.3 Free solve, certified residual과 forward 전파
|
||
|
||
n=free DOF 수,A=A_ff,b=같은 δ와 full old state로 만든 RHS다.
|
||
Full residual의 free 성분 및 독립 A T_f−b를 확인한다.
|
||
|
||
β_limit=nγ_(n+1)+γ_(2n+4)+γ_(4n+8).
|
||
|
||
첫 항은 Cholesky의 |L||L|ᵀ bound와 || |L||L|ᵀ ||∞≤n||A||∞에서,
|
||
나머지는 triangular solves 및 residual 평가의 dot-product bound에서 나온 보수적인
|
||
**허용 상한**이다. Backend가 전제를 충족하지 못하면 더 엄밀한 backward-error
|
||
evidence가 필요하며 이 상한을 늘리지 않는다. n=0은 free 검사 대신 full reaction·수지를
|
||
검사한다. 큰 n의 상한을 실제 오차로 가정하여 forward budget에 넣지 않는다.
|
||
|
||
실제 sparse 행 i의 nonzero 수 ν_i로 독립 r_tilde=fl(A T_f−b)를 평가하고
|
||
|
||
E_r,i=γ_(2ν_i+2)(Σ_j|A_ij||T_f,j|+|b_i|),
|
||
R_cert=upper(|| |r_tilde|+E_r ||∞),
|
||
D_lower=lower(||A||∞||T_f||∞+||b||∞),
|
||
β_cert=upper(R_cert/D_lower).
|
||
|
||
모든 scale sum/norm은 outward interval로 계산하며 underflow 항도 §2 enclosure로
|
||
보존한다. D_lower=0은 exact-zero numerator/denominator를 별도 확인한다.
|
||
**β_cert≤β_limit**가 residual 판정이다. Full C dT/δ+KT−Q 평가에도 자신의 실제
|
||
row count·signed term absolute scale로 같은 의미를 검산한다. 구체적으로
|
||
E_r,full,i=γ_(2ν_C,i+2ν_K,i+6)(Σ|C_ij||dT_j|/δ+Σ|K_ij||Tnew_j|+|Q_i|)
|
||
+γ_1Σ|C_ij|(|Tnew_j|+|Told_j|)/δ로 둔다.
|
||
관측 residual에 roundoff enclosure를 더하므로 우연히 작은 computed residual을 그대로
|
||
정확한 잔차라고 가정하지 않는다.
|
||
|
||
n≤100의 소형 fixture는 독립 dense inverse로 Z≈A^-1를 구하고
|
||
θ=upper(||I−ZA||∞)<1을 확인한다. 그러면
|
||
upper(||A^-1||∞)≤upper(||Z||∞)/(1−θ)가 rigorous inverse-norm bound다.
|
||
κ∞(A)β_cert<1일 때 relative forward bound는
|
||
2κ∞(A)β_cert/(1−κ∞(A)β_cert).
|
||
정확 coefficient의 E_A/E_b도 numerator에 E_A||T_f||∞+E_b로 더한다.
|
||
이때 stored A의 inverse 상계를 J라 하면 J E_A<1을 확인하고 정확 A*의 inverse는
|
||
J/(1−J E_A)로 넓힌다. 따라서 absolute forward bound는
|
||
`[J/(1−J E_A)](R_cert+E_A||T_f||∞+E_b)`다(E_A/E_b는 ∞ norm bound).
|
||
이 denominator의 조건을 증명하지 못하면 inconclusive이며 clamp/상한 확대는 금지다.
|
||
|
||
큰 **구조화된 convergence fixture**는 inverse나 최악 β_limit 없이 다음 C-norm
|
||
전파를 사용한다. 정확 oracle C*,K*에 대한 증분 residual의 component enclosure를
|
||
|
||
R_n=|r_tilde|+E_r+E_C|dT|/δ+E_K|Tnew|+E_Q
|
||
|
||
로 둔다(E_C/E_K는 성분별 절댓값 오차 상계). 단열 homogeneous error의
|
||
(C*+δK*)^-1C*는 C* norm에서 contraction이므로
|
||
|
||
B_T^n=B_T^(n−1)+δ||R_n||2/sqrt(λ_lower(C*))
|
||
|
||
가 온도 C-norm error의 사전 고정된 누적 상계다. 초기 nodal cos의 interval 오차를
|
||
B_T^0에 포함한다. Normalized k=rho=c=h=1 fixture에서는 이 C-norm이 실제
|
||
product-volume temperature L2다. Sampling/오차 norm 적분의 interval도 더한다.
|
||
|
||
n×n unit square의 tensor mass는 Mx⊗My⊗Cz다.
|
||
Uniform Q1 1D mass의 Gershgorin lower는 1/(6n), 두 길이1/2 P2 segment의
|
||
Cz lower는 1/60이므로 **λ_lower(C*)=1/(2160n²)**.
|
||
K generalized upper는 면내 12n²+12n² 및 thickness
|
||
||Kz||∞/λ_lower(Cz)=(64/3)/(1/60)=1280으로
|
||
**λ_upper(K*,C*)=24n²+1280**.
|
||
따라서 gradient L2 solver budget은 sqrt(24n²+1280) B_T^n이다.
|
||
이 analytic bounds는 §6의 unit affine tensor fixture 전용이며 일반 mesh의 condition
|
||
보증으로 확대하지 않는다. 큰 fixture에 production sparse inverse를 요구하지 않는다.
|
||
§4 에너지 roundoff 상계의 β_limit는 보수적인 acceptance로 유지할 수 있지만,
|
||
§6–7의 oracle 차이/관찰 order budget에는 β_cert 또는 위 R_n 전파를 사용한다.
|
||
|
||
## 4. 에너지, 반력과 BE 소산
|
||
|
||
C=[[2,1],[1,2]],K=[[1,-1],[-1,1]],δ=1/2,Q=0,rawT0=(0,0),g2=1에서
|
||
T_f=(-1/5,1/25),Rc=(24/5,36/25)를 exact 확인했다. Raw constrained 항을 빼거나
|
||
먼저 g로 projection하면 실패한다. Signed undershoot를 삭제하면 안 된다.
|
||
이 fixture와 all-constrained 검사는 algebra다. Full-end strip ΣL/(khw)도 assembly
|
||
전용이며 공개 내부 station BC 지원을 뜻하지 않는다.
|
||
|
||
dT=Tnew−Told,ΔE=1ᵀC dT,Rc=(C dT/δ+K Tnew−Q)_c.
|
||
온도 영점을 뺀 두 큰 U를 차분하는 대신 ΔE를 직접 계산해도 같은 물리량이다.
|
||
|
||
**물리 수지 defect**
|
||
D_E=|ΔE−δ(ΣQ+ΣRc)|,
|
||
S_E=Σ_ij|C_ij dT_j|+δΣ_i|Q_i|+δΣ_c|Rc_i|.
|
||
|
||
m=전체 DOF 수,D_f=||A_ff||∞||T_f||∞+||b_f||∞라 하면
|
||
|
||
B_E=δnβ_limit D_f+δ||1ᵀK||1||Tnew||∞+γ_(4m+12)S_E
|
||
+δγ_(2m+6)(|| |C||dT| ||1/δ+|| |K||Tnew| ||1+||Q||1)
|
||
+γ_1Σ_ij|C_ij|(|Tnew_j|+|Told_j|).
|
||
|
||
두 번째 줄은 full residual 평가의 dot-product/division/subtraction 오차이며,
|
||
마지막 항은 온도 subtraction 오차다. D_E≤B_E와 free β≤β_limit를 **각각**
|
||
만족해야 한다. K 상수 mode 항은 §3 null bound도 만족해야 하므로 K 오류를 면제하지
|
||
않는다. 보고 metric D_E/S_E에서 S_E=0이면 exact-zero 분기다. Actual free residual을
|
||
수지에 다시 넣어 0을 만드는 대수 항등식은 물리 평형 판정을 대신하지 않는다.
|
||
|
||
단열·무입력·무구속의 별도 C-norm 소산 defect는
|
||
|
||
D_C=|0.5(TnewᵀCTnew−ToldᵀCTold+dTᵀCdT)+δTnewᵀKTnew|.
|
||
|
||
S_C는 앞의 세 C quadratic form의 **성분별 절댓값 합**에 각각 0.5를 곱하고,
|
||
마지막 K quadratic form의 성분별 절댓값 합에 δ를 곱하여 모두 더한 값이다.
|
||
B_C=δ||Tnew||1β_limit D_f+γ_(6m+20)S_C
|
||
+0.5||dT||2||C−Cᵀ||2||Told||2
|
||
+γ_1(|Tnew|+|Told|)ᵀ|C||dT|.
|
||
|
||
Residual work, 합/subtraction, symmetry defect, dT 오차 전파를 구분한 식이다.
|
||
D_C≤B_C,||Tnew||C²≤||Told||C²+2B_C를 검사하고 S_C=0은 exact-zero다.
|
||
이 제곱 norm은 실제 열에너지와 단위가 다르다.
|
||
|
||
P/−P,constrained DOF의 P,disconnected component를 별도 실행한다. 집중 입력은
|
||
signed power 그대로 Q에 가산한다. 단열 균일 T=2 보존,no-BC transient,component별
|
||
수지,정상상태 ΣQ+ΣRc=0을 검사한다. Raw flux 경계 적분과 FE 반력의 exact equality를
|
||
강제하지 않는다.
|
||
|
||
## 5. Warped quadrature의 사전 진단
|
||
|
||
§2 affine/distorted/saddle a=.1,.5,2에서 k=rho=c=h=1.
|
||
각 3/5/7 surface rule과 exact Z로 C_r,K_r를 독립 계산한다.
|
||
대표 응답은 old=0,Q=e_(node1,station11),δ=.1,noBC의 한 BE 증분이다.
|
||
|
||
d_X(r,s)=||X_r−X_s||F/||X_s||F(X=C,K),
|
||
d_T=||T_r−T_s||2/||T_s||2,
|
||
d_q=max_trace||q_r−q_s||2/max_trace||q_s||2.
|
||
|
||
| fixture | d_C(3,5)/(5,7) | d_K(3,5)/(5,7) | d_T(3,5)/(5,7) | d_q(3,5)/(5,7) |
|
||
| --- | --- | --- | --- | --- |
|
||
| distorted | roundoff/roundoff | 2.189065e-7/5.970737e-12 | 2.385149e-6/6.505495e-11 | 1.070060e-6/2.918586e-11 |
|
||
| saddle .1 | 3.944257e-7/7.758135e-13 | 3.862043e-7/7.500898e-13 | 7.916236e-7/1.286406e-12 | 9.283663e-7/1.601583e-12 |
|
||
| saddle .5 | 1.667355e-4/1.431780e-7 | 1.643476e-4/1.408553e-7 | 3.301794e-4/2.150240e-7 | 3.703751e-4/2.649276e-7 |
|
||
| saddle 2 | 5.631484e-3/2.213607e-4 | 5.618988e-3/2.217451e-4 | 6.690109e-3/1.033767e-4 | 5.483294e-3/8.641481e-5 |
|
||
|
||
표의 반올림 값을 tolerance로 쓰지 않는다. 판정은 (1) production3점이 독립3점
|
||
oracle와 §3 bound로 일치,(2) 각 fixture d(5,7)≤d(3,5)+양쪽 roundoff bound,
|
||
(3) affine 모든 차이는 roundoff 이내다. Appendix에서 재계산한 metric과 interval을
|
||
함께 보고한다. d가 roundoff 이하이면 ratio/order를 만들지 않는다. 독립54점/분리
|
||
C,K의 scratch 상대 norm 차이는 최대7.73e-16이었다.
|
||
|
||
이는 **선정 fixture의 적분 수렴 진단**이다. 7점을 exact해로 보거나 모든 허용
|
||
geometry에 같은 d 상한을 요구하지 않는다. 일반 모델의 진단이 비단조이면 조사·보고하며
|
||
지원 geometry cutoff,production 차수 변경/adaptive quadrature로 자동 교체하지 않는다.
|
||
|
||
## 6. 시간·면내 수렴
|
||
|
||
### 6.1 고정 spatial eigen oracle의 시간1차
|
||
|
||
Affine 단열 unit square,균일8×8 mesh,h=1,k=rho=c=1,
|
||
station 동일 v_ij=cos(πi/8)를 쓴다. Consistent Q1의 정확한 discrete eigenvector이며
|
||
λ_h=6(1−cos(π/8))/[(1/8)²(2+cos(π/8))].
|
||
독립 assembly로 Kv−λCv 및 C normalization을 §3 bound로 확인한다.
|
||
τ=1/λ_h,δ=τ/N,N=16,32,64,128,256,INC≥256.
|
||
|
||
T_exact=e^-1v,T_BE=(1+1/N)^-Nv,
|
||
e_N=||T_BE−T_exact||C/||v||C,p=log2(e_N/e_2N).
|
||
모든 pair의 p 허용구간은 **[.97,1.02]**.
|
||
독립 기대값은 .9817124,.9907338,.9953356,.9976599.
|
||
log(1+x)의 전개에서 e_N=e^-1/(2N)+O(N^-2)이며 N≥16의 독립 값으로 구간을
|
||
고정했다. Roundoff propagation이 e_N/1000을 넘으면 order는 inconclusive다.
|
||
공간오차와 시간오차를 분리하는 고정 spatial oracle다.
|
||
|
||
### 6.2 Fourier rectangle의 면내2차/gradient1차
|
||
|
||
Unit square,h=1,k=rho=c=1,noBC/noQ,T0=cos(πx)를 모든 station에 동일하게 둔다.
|
||
**τ=.001,N=32,δ=τ/32,INC=32**로 고정한다. 연속해는
|
||
T=cos(πx)exp(−π²t),∇T=(-πsin(πx)exp(−π²t),0,0).
|
||
Affine n×n,n=8,16,32,64를 모두 유지한다. Norm은 product-volume temperature와
|
||
global gradient L2다. 평가 적분은 cell별12×12 Gauss×exact thickness이며
|
||
12→16점 oracle 변화≤해당 오차의1e-8을 확인한다.
|
||
|
||
독립 exp(-λ_hτ) spatial oracle와 finite-N modal BE oracle를 동시에 사용한다.
|
||
BE-exponential 온도 L2 차이는 continuum semidiscrete 오차의 **1/32 이하**여야 한다.
|
||
작은 시간과 bounded N은 이 시간오차 분리를 유지하면서 모든 accepted frame을 저장한다.
|
||
별도 시간1차 검사는 §6.1에 그대로 남긴다.
|
||
|
||
| n | Semidiscrete T L2 | BE T L2 | BE gradient L2 | Time/spatial ratio |
|
||
| ---: | ---: | ---: | ---: | ---: |
|
||
| 8 | 9.903629946e-3 | 9.902647628e-3 | 2.487150504e-1 | .0001089543 |
|
||
| 16 | 2.482303232e-3 | 2.481327028e-3 | 1.245973612e-1 | .0004305809 |
|
||
| 32 | 6.209759342e-4 | 6.200013808e-4 | 6.232870148e-2 | .0017171164 |
|
||
| 64 | 1.552689976e-4 | 1.542952827e-4 | 3.116810477e-2 | .0068632659 |
|
||
|
||
모든 pair의 기존 허용구간을 유지한다: T p **[1.95,2.05]**,gradient p **[.98,1.03]**.
|
||
독립 finite-N 기대값은 T=(1.9967024,2.0007686,2.0065775),
|
||
gradient=(.9972203,.9993050,.9998262).
|
||
Q1 smooth interpolation O(h²)/O(h),λ_h=π²+O(h²)와 위 독립 계산에 근거한다.
|
||
12/16점 변화 최대1.30e-13이며 criterion1e-8보다 작다.
|
||
§3의 실제 residual 기반 B_T 및 gradient budget이 측정 오차의1/1000 이하여야
|
||
order 판정을 사용한다. 집중 source의 특이 해에 이 smooth order를 요구하지 않는다.
|
||
|
||
**실행 예산:** n=64에서도 sparse solve32회다. Mandatory flux와 initial 포함
|
||
temperature raw doubles는
|
||
4096×24×3×32×8 + 4225×5×33×8 = **81,074,472 bytes(약77.3MiB)**.
|
||
모든4개 mesh의 같은 payload 합은107,772,960 bytes(약102.8MiB), solve총128회다.
|
||
Model의 local frames는 시간마다 중복하지 않는 승인 schema이므로 largest mesh에서
|
||
추가4096×4×9×8=1,179,648 bytes다. Identity/HDF5 overhead와 실제 peak memory를
|
||
evidence에 별도 기록한다. 이 예산은 history/flux 생략이나 제품 출력 변경을 전제하지 않는다.
|
||
|
||
초기 문서의 τ=.1,N=16n²는 n64에서 flux만 약154.6GB인 과도한 fixture였으므로
|
||
**kernel 구현 전** 독립 계산으로 위 설계로 대체했다. Production 결과에 맞춘 tolerance
|
||
완화가 아니며 기존 공간 order·시간오차 분리·모든 frame 계약을 그대로 유지한다.
|
||
|
||
## 7. 고정5점 slab: 허용 이산 오차와 plateau
|
||
|
||
Unit area,h=1,k=rho=c=1,Ti=0,Ts=1,bottom step/top 단열이며 면내 node 조건은 같다.
|
||
x=(0,1/4,1/2,3/4,1) T,six trace x=(0,1/4,1/2−,1/2+,3/4,1)의 q3,
|
||
E=1ᵀCT,bottom 전체 Rc를 비교한다. Unit square1요소 및2×2 mesh다.
|
||
t=0은 rawTi이며 flux/reaction을 생성하지 않는다.
|
||
|
||
무차원 시간 t*=αt/h²,T/ΔT,q/(kΔT/h),E/(ρc area hΔT),R/(k areaΔT/h).
|
||
이 fixture의 척도는 모두1이다. T/flux는 위 위치의 max absolute error,
|
||
E/R은 absolute error다. Station 상대오차나 near-zero floor를 만들지 않는다.
|
||
|
||
### 7.1 Fourier 및 독립 P2 spectral oracle
|
||
|
||
정식화 §10 series에서 M=80,최소 t*=.001.
|
||
β=π²t*/4,r=exp[-8β(M+1)]이면 온도 tail≤
|
||
4exp[-β(2M+1)²]/[π(2M+1)(1-r)],flux/reaction tail≤
|
||
2exp[-β(2M+1)²]/(1-r),energy tail≤temperature tail.
|
||
최소 시간에서도 모든 무차원 tail은 **1e-27 미만**이다.
|
||
1−r는 -expm1 표현과 수학적으로 동등한 exact interval subtraction으로 평가한다.
|
||
**Oracle 산술은 다음 방식으로 고정**하며 C++17 libm의 막연한 1ULP 보장을 가정하지 않는다.
|
||
Appendix E가 실제 실행 가능한 표준 라이브러리 generator다.
|
||
|
||
1. π=16 atan(1/5)−4 atan(1/239), 각 alternating arctan을 j=0…63까지 exact
|
||
유리수로 합한다. 첫 생략항 q^129/129로 양쪽 enclosure를 만든다.
|
||
2. 이후 모든 interval endpoint는 격자 2^-320으로 floor/ceil하여 outward 보존한다.
|
||
원래 π enclosure 폭은2^-295 미만이다.
|
||
3. Slab station의 phase는 정수 kπ/8이다. 정수 quadrant reduction으로 |r|≤π/4에
|
||
옮긴 뒤 sin/cos Taylor 각각32항을 쓴다. Remainder는 보수적으로1/65!,1/64!다.
|
||
4. exp(-x),0≤x≤512는 y=x/1024의64차 Taylor,
|
||
remainder≤(1/2)^65/65!를 더하고 interval squaring10회로 복구한다.
|
||
x≥512이면 0≤exp(-x)≤2^-512(e>2)을 사용한다.
|
||
5. M=80 series를 위 interval로 합한다. Tail을 더하기 전 각 quantity enclosure 폭은
|
||
**2^-270 미만**이어야 한다. 여기에 앞의 analytic Fourier tail을 더한다.
|
||
필요한 binary64 fixture는 lower를 float 변환 후 nextafter(-∞),upper를 변환 후
|
||
nextafter(+∞)하여 export한다. 이 endpoint 차이가 B_oracle이며 별도 floor가 없다.
|
||
|
||
실제 generator에서 최소 시간의 tailT=1.658661e-30,tailq=4.194724e-28,
|
||
최종 enclosure 최대 폭8.389448e-28이었다. 나머지 시각의 폭은8.93e-89 이하였다.
|
||
이 방식은 테스트 oracle generator 전용이며 production arbitrary-precision dependency가
|
||
아니다. Spectral oracle의 exp도 동일 enclosure를 적용하고 eigenpair/coefficients의
|
||
backward-error interval을 함께 전파한다. Appendix A의 통상 math 계산은 표 수치의
|
||
간단한 재현용이며 interval E가 transcendental correctness의 근거다.
|
||
|
||
T10은 generator의 T/q/E/R interval을 outward binary64 fixture로 고정하여 사용할 수
|
||
있다. 또는 binary64 outward Taylor가 동일한 최종 B_oracle 및 §6–7의 오차 budget을
|
||
증명하면 그 경로도 가능하다. 2^-270은 고정 고정밀 generator의 내부 검사이며 production
|
||
정밀도 요구가 아니다. 무차원 interval error를 실제 단위로 옮길 때 T는 |ΔT|,
|
||
q는 k|ΔT|/h,E는 rho c area h|ΔT|,R은 k area|ΔT|/h를 곱한다.
|
||
온도 기준 이동은 interval 폭을 바꾸지 않는다. 선형 sampling/trace/energy/reaction row L은
|
||
성분별 |L| times input error로 전파하며 signed 값 자체를 절댓값으로 바꾸지 않는다.
|
||
|
||
독립1D P2 FE는 길이1/2인 두 segment를 조립한다.
|
||
C_seg=(1/2)/30 [[4,2,-1],[2,16,2],[-1,2,4]],
|
||
K_seg=2/3 [[7,-8,1],[-8,16,-8],[1,-8,7]].
|
||
Bottom elimination 뒤4×4 generalized eigenproblem의 Cholesky+Jacobi 계산은
|
||
3D product kernel을 호출하지 않는다.
|
||
|
||
Raw 초기 정책에서 δ→0 자유 초기 극한은
|
||
T_f(0+)=-C_ff^-1C_fc=(-5/34,3/17,-1/34,1/17).
|
||
y0=T_f(0+)−1,C-orthonormal v_j의 a_j=v_jᵀC_ff y0로
|
||
T_f(t)=1+Σa_jv_j exp(-λ_jt).
|
||
이는 첫 finite-step RHS의 극한이며 FESA t=0 state/dataset을 변경하지 않는다.
|
||
|
||
λ=(2.4686647564,22.9461660098,77.0631371712,198.6985026508).
|
||
Scratch eigen residual3.994e-16,C-orthogonality8.069e-16.
|
||
Solver 허용치는 이 숫자 자체가 아니라 §3의 coefficient/eigen/residual enclosure다.
|
||
BE oracle는 exp(-λt)를 (1+λt/N)^-N으로 대체한다.
|
||
N>1의 마지막 반력은 modal derivative -λ×final amplitude로 구할 수 있어
|
||
작은 δ의 subtraction cancellation을 피한다.
|
||
|
||
### 7.2 사전 고정 물리 오차와 허용치
|
||
|
||
각 t*마다 별도 N=4096,8192,δ=t*/N,INC=N run.
|
||
아래 첫 값은 **δ→0 P2 공간오차**, 괄호는 위로 반올림한 **D_space**다.
|
||
초기의 큰 허용치는 method의 제한이며 제품 전 범위 정확도 보증이 아니다.
|
||
|
||
| t*/sqrt(t*) | T∞ | q∞ | E | Rc |
|
||
| --- | --- | --- | --- | --- |
|
||
| .001/.03162 | .1399996(.141) | 10.64818(10.7) | .03031345(.0304) | 10.86927(10.9) |
|
||
| .01/.10000 | .01524952(.0153) | 1.274464(1.28) | .00467600(.00468) | .823687(.824) |
|
||
| .05/.22361 | .00597851(.00598) | .252470(.253) | .00129690(.00130) | .00631488(.00632) |
|
||
| .1/.31623 | .001387325(.00139) | .135427(.136) | .000665986(.000666) | .009524106(.00953) |
|
||
| .5/.70711 | .000141091(.000142) | .0283969(.0284) | .0000944866(.0000945) | .000525742(.000526) |
|
||
| 1/1 | .0000413942(.0000414) | .00815759(.00816) | .0000158234(.0000159) | .0000478014(.0000479) |
|
||
|
||
Continuum 오차 허용치는 **D_space+D_time(N)+B_oracle+B_solver**다.
|
||
D_time은 독립 modal 차이의 max/absolute norm이다. 온도/flux sampling L,
|
||
energy row1ᵀC,reaction row K_cf−C_cf C_ff^-1K_ff 각각에 대해
|
||
LΣa_jv_j[(1+λ_jt/N)^-N−exp(-λ_jt)]를 계산한다.
|
||
Cancellation이 불확실하면 Σ|La_jv_j|×|amplitude차이|로 enclosure한다.
|
||
B_oracle은 series tail+summation/eigen interval,B_solver는 §3 행렬/solve 오차를
|
||
L에 전파한 값이다. **B_oracle+B_solver>D_space/1000이면 plateau 판정은
|
||
inconclusive**다. 이 조건은 geometry 지원 cutoff가 아니다.
|
||
|
||
N=4096의 독립 D_time은 아래와 같다. N=8192에서는 대략 절반이며 appendix가 재현한다.
|
||
|
||
| t* | T∞ | q∞ | E | Rc |
|
||
| ---: | ---: | ---: | ---: | ---: |
|
||
| .001 | 7.5820e-7 | 8.7770e-6 | 4.6839e-8 | 6.0181e-6 |
|
||
| .01 | 1.6648e-5 | 1.9198e-4 | 1.8013e-6 | 1.5383e-4 |
|
||
| .05 | 2.9817e-5 | 2.2173e-4 | 7.3403e-6 | 1.9484e-4 |
|
||
| .1 | 3.0985e-5 | 1.9790e-4 | 1.1177e-5 | 1.6441e-4 |
|
||
| .5 | 6.8903e-5 | 1.1406e-4 | 4.3931e-5 | 1.0879e-4 |
|
||
| 1 | 8.0305e-5 | 1.3224e-4 | 5.1125e-5 | 1.2621e-4 |
|
||
|
||
물리 오차 허용치 외에 **동시에** FESA와 finite-N BE oracle가
|
||
B_oracle+B_solver 내에서 일치해야 한다. 큰 초기 공간오차가 잘못 구현된 방법까지
|
||
허용하지 않도록 분리했다. Table rounding은 production 결과와 무관하게 고정했다.
|
||
|
||
### 7.3 Plateau 정량 보고
|
||
|
||
E_space=||oracle_P2−Fourier||와 FESA error e_N에 대해
|
||
|e_N−E_space|≤D_time+B_oracle+B_solver를 확인한다.
|
||
면내1×1과2×2의 slab 차이는 §3 roundoff 이내여야 한다.
|
||
두께 지배 해가 면내 refinement로 좋아진다고 판정하면 실패다.
|
||
|
||
관측 plateau의 기준은 D_time+B_oracle+B_solver≤E_space/10.
|
||
N=8192에서 .001/.01/.05/.1의 네 quantity는 충족한다. 뒤 시각에서 미충족하는
|
||
T/E/R은 **미도달**로 보고하고 δ→0 spectral 공간오차를 따로 제시한다.
|
||
예컨대 t*=1의 E는 시간오차가 공간오차보다 커서 두 N만으로 plateau가 관측되었다고
|
||
할 수 없다. 침투 깊이 sqrt(αt),station 간격 h/4,segment 길이 h/2,E_space,D_time을
|
||
함께 보고한다. 초기 큰 flux/reaction 오차는 음수 온도 제거로 고칠 수 없다.
|
||
|
||
## 8. 시간격자 predicate, count와 재분해
|
||
|
||
### 8.1 독립 반증과 수정 범위
|
||
|
||
Arithmetic-only D≤d rad(q)+rad(p)는 입력 표현오차를 모두 포함하지 않았다.
|
||
τ=5.351455173733616,d=.17262758624947144,m=31에서
|
||
exact |τ−md|=8.326672684688674e-16 > 기존 Bhat=7.507374033534679e-16인데,
|
||
입력 rounding-cell I(τ)와 mI(d)는 겹친다. 이 반례를 blocking으로 보고했고
|
||
승인된 입력 표현오차 의미에 맞춰 **input-cell overlap**으로 보완했다.
|
||
이전 predicate의 실행 성공을 의미 정합 승인으로 대체하지 않았다.
|
||
Appendix D는 이 실패 이력을 보존하며 현재 판정은 C를 따른다.
|
||
|
||
### 8.2 현재 고정 predicate
|
||
|
||
입력 double x의 원래 rounding-cell은
|
||
L_x=(prev(x)+x)/2,U_x=(x+next(x))/2다. Significand LSB가 짝수면 두 endpoint
|
||
포함, 홀수면 두 endpoint 제외(nearest-even). 최대 finite의 U_x는 next=Inf를
|
||
평균하지 않고 x+(x−prev(x))/2라는 유한 real dyadic threshold다.
|
||
최소 subnormal의 half-ULP도 binary64로 먼저 반올림하지 않는다.
|
||
|
||
τ,d를 공통 power-of-two로 τ∈[1/2,1)에 옮겨 q=fl(τ/d),
|
||
m=nearest-even integer(q)를 만든다. **원래 입력의 cell도 동일 scale로 옮긴다.**
|
||
Normal화된 값의 이웃으로 cell을 다시 만들면 subnormal 입력의 표현오차를 축소하므로
|
||
잘못이다. Endpoint-close는 I(τ)와 mI(d)의 exact 교집합이 비어 있지 않은 경우다.
|
||
두 구간이 한 점에서만 닿으면 그 점이 양쪽에 모두 포함되는지도 확인한다.
|
||
|
||
INC≤2^32−1,q≤INC+1 및 위 scale에서 cell endpoint는 고정 dyadic 격자 2^-88에
|
||
정확히 놓인다. Endpoint 정수와 m곱의 보수적 최대122bit는 두 uint64 또는 네 uint32
|
||
limb 안에 들어간다. Carry/shift를 검사하는 bounded 정수 산술이며 새 arbitrary-precision
|
||
runtime dependency가 아니다. Reviewer의 Fraction은 이 bounded 비교의 독립 oracle다.
|
||
나눗셈·곱셈 roundoff는 후보/연산 bound 설명에 쓰고 cell을 더 넓히는 별도 epsilon으로
|
||
중복 가산하지 않는다.
|
||
|
||
q overflow 또는 INC+1 초과는 preflight 실패; close면 N=m이다. Nonclose에서는
|
||
X=τs2^88,Y=ds2^88,f=floor(q)로 fY≤X<(f+1)Y를 exact 비교하고 필요하면 f를
|
||
한 번 ±1 교정한다. X=fY이면 N=f, 아니면 N=f+1이다. Division 오차를 count에
|
||
그대로 전달하지 않는다. d≥τ는 한 증분 δ=τ의 선행 분기다.
|
||
INC 기본100,양의 uint32,N≤INC. 정상 stored time=fl(jd),마지막=입력τ,
|
||
strict increase/finite를 검사한다. Close의 마지막 δ는 **d 그대로**다.
|
||
실제 shortened만 fma(-(N−1),d,τ)를 쓰며 A/RHS/reaction/energy/dissipation은 같은 δ다.
|
||
|
||
| fixture | 필수 결과 |
|
||
| --- | --- |
|
||
| τ=10,d=3 | N=4,stored3,6,9,10;δ=3,3,3,1;마지막 refactor |
|
||
| τ=2,d=3 및 d=τ | 한 증분 δ=τ |
|
||
| τ=.9,d=.3 | N=3,stored 마지막 .9;세 δ=.3,factorization 재사용 |
|
||
| τ=1,d=.1 | N=10;stored .30000000000000004 등을 보존,δ=.1 유지 |
|
||
| nextafter(.9,-∞),d=.3 | .8999999999999999:close,N=3,δ=.3 |
|
||
| 두 ULP 아래 τ,d=.3 | .8999999999999998:nonclose,N=3,finalδ=.2999999999999998 |
|
||
| nextafter(.9,+∞),d=.3 | .9000000000000001:nonclose,N=4,finalδ=1.6653345369377348e-16 |
|
||
| 기존 반례 τ=5.351455173733616,d=.17262758624947144 | input cells overlap,N=31,모든 δ=d;가짜 tiny 증분 제거 |
|
||
| Subnormal midpoint | a=최소 positive subnormal:τ=20a,d=6a는 even/even 닫힌 접촉,N=3;τ=17a,d=5a는 odd/odd 열린 접촉,N=4,마지막δ=2a |
|
||
| Scale/최대값 | (.9,.3)×2^-1000 및×2^1000은 같은 count/close;τ=1e-323,d=5e-324는 N=2;τ=maxfinite,d=fl(maxfinite/3)는 N=3 |
|
||
| INC | N/N−1 경계,생략100;0,-1,1.5,4294967296 실패;τ=2^32,d=1,INC=2^32−1은 사전 count 실패 |
|
||
| 비유한/비표현 | Inf/NaN/0/음수,binary64에서0으로 underflow하는 token 거부;거대한 τ/d는 cast/allocation 전 실패 |
|
||
| 저장 가능성 | finite-positive/uint32 count 제한 아래 정상 간격 d는 ulp(jd)보다 충분히 크다. Generator의 finite/strict-increase 보호 분기는 중복/Inf 시간을 주입한 내부 fixture로 검사;불가능한 정상 공개 입력을 만들지 않음. |
|
||
|
||
특히 nextafter(.9,+∞)/.3의 tiny remainder를 유지하는 근거는 단순 predicate 결과가
|
||
아니다. exact |τ−3d|=1.6653345369377348e-16이고 두 입력 cell 반폭 합은
|
||
1.3877787807814457e-16이므로 **실제 rounding cells가 분리된다**. 이를 가짜 표현오차
|
||
증분으로 흡수하면 입력 표현오차 범위를 넘는다. 반면 위 m=31 반례는 cells가 겹치므로
|
||
추가 tiny 증분을 만들면 안 된다. 작은 실제 δ의 나쁜 conditioning은 §3과 candidate
|
||
보존으로 처리하며 nominal δ로 바꾸지 않는다.
|
||
|
||
현재 predicate의 independent seed901 10,000쌍은 원래 cell Fraction overlap과
|
||
2^-88 정수 비교가 모두 일치했고 최대122bit를 넘지 않았다. 원래 subnormal,maxfinite,
|
||
열린/닫힌 접촉,반례 및 scale 경계를 따로 검산했다. FMA oracle는 exact Fraction
|
||
product-sum을 한 번 float로 반올림한다. Production dependency 요구가 아니다.
|
||
|
||
## 9. 외부 reference와 evidence 경계
|
||
|
||
필수 원본은 reference/shell-thermal/shell-thermal.inp와
|
||
reference/shell-thermal/shell-thermal NodalTemperature.csv다.
|
||
이 검토는 원본 복사·수정·생성 또는 Abaqus 실행을 하지 않았다.
|
||
2026-09-28 read-only snapshot(729row,min=-15.5742216,max=1000)은 과거 관찰이며
|
||
이번 solver comparison을 대신하지 않는다.
|
||
|
||
Family=(shell-thermal,source Step-1,exact t=37,NT11 bottom,scalar,
|
||
사용자 일관 온도 단위,blocking),identity=(Part-1-1,source node label,DOF11).
|
||
CSV instance 생략은 입력 단일 instance와 label 집합 검증으로만 복원한다.
|
||
Missing/extra/duplicate/nonfinite/frame/instance/station 오류는 tolerance 전에 실패한다.
|
||
|
||
공통 TOLERANCE 그대로 S=max|reference|=1000,B=.01S=10;
|
||
|r|≤B이면 |f−r|≤B,그 밖에는 |f−r|/|r|≤.05,
|
||
모든729row RMS/S≤.01을 동시에 만족한다. S=0이면 모든 값 exact0이다.
|
||
−15.5742216은 relative 대상이며 clamp/온도 영점 이동 금지.
|
||
추가 Abaqus CSV는 필수가 아니다. 한 frame으로 내부 station/flux/reaction/시간 이력을
|
||
검증했다고 할 수 없다.
|
||
|
||
## 10. 실행 기록과 완료 경계
|
||
|
||
git rev-parse --show-toplevel로 T1 worktree를 확인했다(exit0).
|
||
NumPy/SciPy import 환경 probe는 NumPy 부재로 exit1;설치 없이 표준 라이브러리
|
||
scratch로 전환했다. [Appendix](verification-oracles.md#독립-oracle와-재현)의 명령은 Python blocks를
|
||
지정 순서로 메모리에서 실행한다. 실제 scratch exit0의 핵심 출력:
|
||
|
||
- Fraction:C positive pivot20,K positive leading pivot19/K1=0,1ᵀC1=2;
|
||
jump−1/5,1/25 및 reaction24/5,36/25.
|
||
- 직접54점/분리식:다섯 geometry 상대 norm 차이 최대7.73e-16.
|
||
- Slab eigen residual3.994e-16/C-orthogonality8.069e-16,§7 공간/시간 오차.
|
||
- §5 quadrature,§6 예상 차수,§8 time predicate/INC assertions.
|
||
|
||
최종 재현 명령은 appendix 첫 PowerShell block이며 exit 0,
|
||
마지막 출력은 ALL SCRATCH BLOCKS COMPLETED였다. Input-cell 독립 비교는
|
||
10,000/10,000 및 CURRENT TIME GRID ASSERTIONS PASSED를 출력했다.
|
||
실행 예산 보완 뒤 five-block 재검산도 exit 0이었다. Bounded-space order/time ratio,
|
||
FOURIER INTERVAL ASSERTIONS PASSED 및 최종 완료 출력을 확인했다.
|
||
상대 링크 파일 존재/Markdown 표 열 수 정적 검사도 exit 0(8 links,2 files),
|
||
두 소유 파일만 대상으로 한 git diff --check는 exit 0이었다.
|
||
|
||
수학 scratch는 production correctness를 증명하지 않는다. **미실행:**MSVC build/CTest,
|
||
구현 단위·통합 검사,FESA 결과 생성,NT11 comparison,실제 solver convergence/energy/
|
||
physics 검토. 필요한 수치 기준은 고정되었으며 구현 결과 뒤에 선택할 미정 tolerance는
|
||
없다. 필수 실패 시 구현·conditioning·oracle 전제를 조사하고 physics/method/acceptance
|
||
충돌은 메인에 보고한다.
|