83 lines
14 KiB
Markdown
83 lines
14 KiB
Markdown
# HHT 반증 가능한 검증 사례
|
||
|
||
[Numerical Review](numerical-review.md)의 사례 계약이다. [N1–N7 내부 기준](numerical-controls.md)과 [reference 계약](reference-model.md)을 적용한다. 아래 synthetic 초기값·제조 하중은 kernel/procedure 검증용이며 공개 INP 지원을 확대하지 않는다. 사용자 결정 [HHT-ADR-007](ADR.md)의 **consistent kinetic mass**가 HHT 필수 검증 대상이다. Lumped 언급은 기존 mass/eigen 대조 또는 선택되지 않은 대안 설명이며 새 동적 지원 의무가 아니다. 모든 신규 solver 사례는 **NOT RUN**이다.
|
||
|
||
## 공통 측정과 실행 상태
|
||
|
||
기본 `alpha=-.05,beta=.275625,gamma=.55`, `A0=a0`, 물리 damping=0. 명시한 정확해로 q0/v0/a0를 설정한다. 같은 종단시각과 nested checkpoint에서 q/v/physical a를 각각 비교한다. A와 물리 a의 차이는 별도 기록한다. Temporal error는 scalar 절댓값/vector 2-norm의 `max_n ||quantity_n-exact(t_n)||`이며 **모든 accepted time points**를 포함한다. Shell은 node별 3-vector 2-norm의 최댓값을 u/phi와 각 rate에 따로 사용한다. 첫 increment, `t≥T/4` 구간 최대, 전체 최대, 종단 오차를 분리 보고한다. 종단의 우연한 상쇄를 전체 통과로 쓰지 않는다.
|
||
|
||
C01–C04의 grid는 `h=1/16,1/32,1/64,1/128,1/256`, `T=1`이다. N7의 마지막 두 refinement order/error/noise 기준을 적용한다. C02의 STEP jump는 t0 이전에 있고 정확해는 0+ 우측이다. 첫 step를 제외하여 통과를 만드는 것은 허용하지 않는다. `A0=a0` startup이 고차 국소조건을 모두 만족한다는 가정을 하지 않는다.
|
||
|
||
| Evidence | 현재 상태와 적용 한계 |
|
||
| --- | --- |
|
||
| [기존 SDOF·moving-null probe](numerical-review-probes.md) | **RUN / 제한된 독립 검산**. h=1/32..1/1024의 **종단 오차** 및 moving-null hidden-defect 최대를 기록했다. 아래 전체 시점 max-error 계약의 실행 통과를 뜻하지 않는다. |
|
||
| C01–C12의 FESA/kernel/procedure 실행 | **NOT RUN**. 구현 후 요구되는 검증 설계다. 기존 Python 수식 계산을 C++ solver 통과로 승계하지 않는다. |
|
||
| 지정 reference inventory | [reference-model §5](reference-model.md)의 main 정적 조사 evidence. Solver/HDF5 comparison은 **NOT RUN**. |
|
||
|
||
## C01–C04. 정확해·초기화·시간 차수
|
||
|
||
| ID | 정확한 모델·초기값 | 측정·반증 대상 |
|
||
| --- | --- | --- |
|
||
| C01 | `m=1,k=4,F=0`, `q=cos(2t)+.15sin(2t)`, `v0=.3,a0=-4`. q/v/a scale는 `sqrt(1+.15²)`, 그 2배/4배 | 외력 0에서도 Newton scale 유효, turning points, alpha 부호·physical a와 A 구별. Constant-M 표준 HHT 독립 recurrence와 q/v의 scaled 차이도 `<=1e-12` |
|
||
| C02 | `m=2,k=8,F(t≥0+)=2`, `q0=v0=0,a0=1`, 정확해 `q=.25(1-cos 2t),v=.5sin 2t,a=cos 2t`. Scale `.5,.5,1` | STEP 전값·초기 acceleration·old force, 최초 increment부터 모두 측정. 의도적으로 F0=0/a0=0/RAMP로 바꾼 mutation이 oracle에 실패해야 함 |
|
||
| C03 | `T=.5(1+q²)v²`, `c=qv²`, `q=.4+sin t`, `F=(1+q²)(-sin t)+q cos²t`, `q0=.4,v0=1,a0=0`. q/v/a scale 각각 1 | Variable-M와 convective term, naive force-weighted M(q) 확대의 1차 반례. 올바른 candidate는 N7; naive 구현은 `p<1.5`의 negative evidence를 별도 기록하며 합격 구현으로 채택하지 않음 |
|
||
| C04a | `q=(x,z)`, `M=diag(2,0)`, `U=.5*8*x²+.5*3*(z-.7x)²`, `F=(2,0)`. `q0=v0=0`, `a0=(1,.7)`, `A0=a0`; `x=.25(1-cos2t)`, `z=.7x`. Vector q/v/a scales는 `sqrt(1+.7²)*(.5,.5,1)` | Coupled zero-mass acceleration, full 2×2 solve와 exact algebraic reduction을 `1e-10` 대조. Pseudoinverse의 a_z=0는 초기 hidden-constraint 검사에 실패. κ=0, negative positive-mass m, inconsistent z0=.1은 각각 regularity/positive-mass/initial-consistency 실패 |
|
||
| C04b | `y(q)=q/|q|`, `T=.5|Dy v|²`, `U=.5(|q|-1)²`, `M=(I-ddᵀ)/r²`, `c=-2(q·v)Mv/r²`, `f_int=(r-1)d`. `q=(cos t,sin t)`, `v=(-sin t,cos t)`, `a=-q` | **Full Cartesian q1/q2 Newton**으로 푼다. 각도 parameterization·normalization·constraint projection 금지. Moving `ker M=span(q)`, exact M rank1, endpoint r=1·초기 q·v=0/q·a+v²=0. q/v/a scale1; hidden raw/normalized defect의 최대·종단 및 수렴. 기존 angle probe는 독립 대조만 제공 |
|
||
|
||
C04b는 position constraint `max|r-1|<=1e-10`. `max|q·v|`, `max|q·a+v²|`의 마지막 두 refinement는 각각 감소해야 하며 finest에서 각각 `<=1e-6`, `<=1e-4`다. 이 raw threshold는 무차원 unit-circle oracle의 조건이며 실제 shell에 그대로 적용하지 않는다. 같은 수치를 Newton 초기 consistency tolerance로 사용하지 않는다. Correct full-coordinate 해와 기존 angle-reduced 해는 같은 grid에서 q/v/a의 scaled 차이 `<=1e-8`여야 한다. 미세 h에서 cancellation이 차이를 지배하면 N7 inconclusive 규칙으로 처리한다.
|
||
|
||
## C05. 질량·null·조건수와 단위
|
||
|
||
기본 element는 `X=(-1,-1,0),(1,-1,0),(1,1,0),(-1,1,0)`, `d0=(0,0,1)`, `t=.2,E=1000,nu=.3,rho=1`. Analytic rectangle C0는 `rho*t*area/36`에 `[4,2,1,2]` cyclic matrix, C1=0, C2=`t² C0/12`; lumped `(m,s,j)=(rho*t*area/4,0,rho*t³*area/48)`다. Consistent rank20, lumped node rank5, total4 analytic drill null과 physical rigid field의 positive kinetic energy를 각각 검사한다.
|
||
|
||
추가 fixture는 node3 z=.1인 warped quad이며 initial director는 기존 deterministic geometry 규칙으로 생성한다. 3³ 적분과 독립 5³ Gauss moment/kinetic integral을 N4로 대조한다. Density 배율 `1e-180,1e180`에서 scalar mass positivity는 overflow 없는 variance 식으로 같은 verdict여야 한다. 이 extreme density fixture에서 필요하지 않은 stiffness/mass time solve를 실행해 unrelated overflow를 요구하지 않는다.
|
||
|
||
현재 `phi_i=(.2,-.3,.1)` 및 node별 `phi_i=(.05i,-.03i,.02i), i=1..4`에서도 Jl^-1 d null을 확인한다. 동역학 질량의 기존 초기 M 고정 mutation과 fixed global UR3 deletion mutation을 검출한다. Partial-BC oracle는 한 node의 physical tangent에 대한 free scalar direction의 positive mass가 `p²`에 비례하도록 `p=0,1/2000,1e-8`을 구성한다. p=0은 exact null, p≠0은 positive dimension을 유지한다; conditioning guard 미달이면 **positive mass conditioning failure**이며 null로 분류하지 않는다. 이 scalar-only projected block의 rcond=1이라는 점도 확인하고, 작은 mass를 이웃 positive DOF와 함께 둔 mixed block의 conditioning과 구분한다.
|
||
|
||
독립 guard boundary는 scaled SPD `diag(1,c)` 및 algebraic `diag(1,c)`의 `c=2^-31,2^-32,2^-33`: 첫 둘 통과·마지막 conditioning 실패다. `c=0`은 singular failure로 구별한다. Regularity/positive mass 두 기준은 각각 실행한다.
|
||
|
||
단위변환은 numeric multipliers `c_L=1e-3,c_M=1e-6,c_T=1e2`: X/u/t→c_L, h/time→c_T, density→c_M/c_L³, E→c_M/(c_L*c_T²), force→c_M*c_L/c_T², moment→c_M*c_L²/c_T²를 적용한다. v/a의 시간·길이 배율도 변환하고 동일 physical predicate·normalized metric을 N4/N6로 비교한다. Unit change로 rank/conditioning 분류를 바꾸지 않는다.
|
||
|
||
## C06. D3·관성·접선 독립 미분
|
||
|
||
C05 기본/warped geometry와 `phi=(0,0,0)`, `(1e-6,-2e-6,3e-6)`, `(.2,-.3,.4)`를 사용한다. Small-angle boundary에는 `phi=(1e-4*(1±2^-10),0,0)`를 추가한다. Direction은 e1/e2/e3, `(1,2,-1)/sqrt6`; 모든 distinct triple permutation과 pure/mixed actions를 포함한다. 영점 D3 oracle는 [추가 연구 N6](numerical-research.md)의 `sum_permutation H_p H_s H_r d0 / 6`, 비영점은 독립 24×24 block exponential의 high-precision evaluation을 사용한다. Production의 같은 Jl scalar derivative를 oracle에 재사용하지 않는다.
|
||
|
||
Element state는 `u_i=.01*(i,-i,.5i)`, `phi_i=(.05i,-.03i,.02i)`, `v_ui=(.1,.05i,-.03i)`, `v_phi_i=(.2,-.1i,.04i)`, `a_ui=(.3,-.2,.1i)`, `a_phi_i=(-.07i,.06,.05)`다. q/v/a 중 하나씩 perturb한 DqI/DvI/DaI와 같은 q에서 종속 rate를 갱신한 Keff를 **서로 다른 검사**로 실행한다. Keff에는 `h=.1,.025` 두 값과 N5의 고정 sweep을 쓴다.
|
||
|
||
필수 mutation: D(Hᵀ)항, D3, convective c, DvI 각각을 하나씩 누락하면 적어도 한 nonzero-direction oracle가 실패해야 한다. Correct derivative의 N5 pass와 이 detection evidence를 함께 기록한다. 이 미분 실험은 stability·시간 정확도 검증을 대체하지 않는다.
|
||
|
||
## C07. 선형 에너지·소산·관성 반력
|
||
|
||
`m=1,k=4,q0=1,v0=0,a0=-4`에서 alpha=0, beta=.25,gamma=.5, `h=1/64,T=10`의 energy maximum defect / E0는 `<=1e-10`. 같은 문제의 기본 alpha에서는 에너지·위상·진폭 오차를 보고하고 exact conservation을 요구하지 않는다.
|
||
|
||
독립 3×3 amplification matrix를 q/v/A recurrence로 만들고 `omega*h={.01,.1,1,10,100,1000}`에서 spectral radius를 확인한다: alpha=0의 physical pair modulus는 `1±1e-10`, 기본 alpha의 radius는 `<=1+1e-10`. High-frequency limit `rho_infinity=(1+alpha)/(1-alpha)`는 analytical limit로 대조하고 `omega*h=1000` 값을 limit exact equality로 강제하지 않는다. Consistent initial physical a를 설정해 숨은 parasitic 초기 mode를 구별한다.
|
||
|
||
반력 oracle는 `M=[[2,.5],[.5,1]]`, `K=diag(8,3)`, q2=v2=a2=A2=0, F=(2,0)에서 C02와 같은 x(t)를 사용한다. Physical support reaction `R2=.5*a1`이고 algorithmic constrained residual과 다르다. Endpoint M a+Kq-F의 physical reaction 및 momentum balance를 N2/N6로 검사한다. 이 mass coupling은 constrained acceleration=0이어도 inertial reaction이 생김을 검증한다.
|
||
|
||
## C08. 실제 shell 유한회전·자유운동·에너지
|
||
|
||
**C08a manufactured rigid orbit:** C05 기본 1 element와 동일 물성으로, `phi(t)=(.4sin t,.6sin(.7t),.2sin(1.3t))`, 모든 node에 `R=exp(phi×)`, `u_i=(R-I)X_i`, `d_i=R d0_i`를 준다. `T=1,h=1/16..1/256`; q/v/a 초기값은 해당 analytic curve와 독립 exponential derivative로 구한다. `max|phi|>0.5 rad`를 실제 관측하여 small-rotation만 통과한 사례로 대체되지 않도록 한다.
|
||
|
||
제조된 generalized force는 선택된 consistent mass의 **독립 volume oracle**에서 `F_i=∫rho H_i^T xddot dV0`로 생성한다. Objective internal/drill force는 rigid orbit에서 0이어야 한다. Production I를 다시 호출해 F를 만드는 자기검증을 금지한다. Time-dependent generalized forcing과 nonzero initial rates는 내부 verification fixture이며 공개 CLOAD/초기조건 지원을 뜻하지 않는다. 전체 redundant 6 DOF/node를 풀고 N7 q/v/a 시간수렴, moment/power, analytic drill null 및 hidden defect 감소를 확인한다.
|
||
|
||
**C08b free deformable plate:** `[−1,1]²`의 2×2 정사각 mesh(9 nodes/4 elements), C05 물성, 모든 DOF free, F=0, q0=0. 초기 midsurface velocity는 `V+Omega×X+(0,0,.02 X_x X_y)`, `V=(.125,-.25,.0625)`, `Omega=(.8,.6,.4)`다. 초기 physical director rate는 `Omega×d0`; 남은 null velocity는 `ψ_x w=0`으로 결정한다. a0는 physical equation과 초기 2차 ψ 조건으로 구한다. Arbitrary null velocity/acceleration=0을 넣지 않는다.
|
||
|
||
`T=.25`, `h=1/64,1/128,1/256,1/512,1/1024`로 비교한다. 모든 grid에서 principal/swing/geometry branch를 만족해야 한다. 최종 최대 회전이 0.2 rad 이상인지 기록한다; 미달이면 이 fixture의 finite-rotation coverage가 부족한 것이며 값을 바꾸어 통과를 만드는 대신 별도 보강 설계를 검토한다.
|
||
|
||
공통 coarse time points에서 `d_h=max||q_h-q_h2||`와 v/a 차이를 각각 측정한다. Translation scale ell, rotation 1 rad, v/a는 각 scale/T, scale/T²를 사용한다. 마지막 두 self-convergence ratios의 `log2(d_h/d_h2)>=1.8`, finest normalized difference `<=1e-4`, N7 noise separation을 요구한다. 이것은 self-convergence이며 정확해 error bound라고 표시하지 않는다. 각 frame의 N2/N4/N6 평형도 필수다.
|
||
|
||
F=0의 positive E0에 대해 `e_E(h)=max|T+U_phys+U_drill-E0|/E0`를 기록한다. 마지막 두 refinement에서 감소, 마지막 ratio `e_E(h/2)/e_E(h)<=.6`, finest `e_E<=1e-3`를 요구한다. Momentum은 P0/L0 및 변화가 존재하는 각 quantity의 자연적인 초기 integrand norm 합으로 정규화해 같은 감소/finest `1e-3`를 확인한다. 초기 합 scale=0인 component는 scalar component floor 대신 vector integral의 sum-of-norm scale를 쓴다. 매 frame energy 단조감소·exact nonlinear momentum 보존은 요구하지 않는다.
|
||
|
||
문헌 free-flying plate는 [추가 연구 N7](numerical-research.md)의 case-family 근거일 뿐이다. 위 C08은 FESA의 별도 완전 지정 synthetic fixture이며 미열람 문헌 그림의 하중·곡선을 재현한다고 주장하지 않는다.
|
||
|
||
## C09–C12. 경계·실패·결정론·reference
|
||
|
||
| ID | 반드시 반증할 동작 | 판정 |
|
||
| --- | --- | --- |
|
||
| C09 | All-fixed 유효 모델, free force channel만/rotation channel만, 정확 무하중 q=v=a=A=0, 무하중 uniform translation | Empty solve/empty channel 정상 처리; nonempty zero-scale branch exact zero; rigid translation은 T/P 보존·internal/drill0 N6. 모든 항0 분모를1로바꾸는 mutation검출 |
|
||
| C10 | NaN/Inf, invalid density/thickness/J, principal/swing branch, near-singular positive block, algebraic rank loss, Newton100 종료 | 각각 최초 해당 predicate에서 실패. 허용 끝점100과101금지, fixed dt failure/no retry, epsilon mass/diagonal shift/삭제없는실패. Valid 원상태에 invalid trial을 주입하여 committed q/v/a/A/history/frame/output 보존 |
|
||
| C11 | 동일 input 3회; stable element/thread partition 변화; proper global rotation `Q=R_z(.7)R_x(.4)`로 geometry부터재조립 | N7 결정론 및 N6 covariance. 회전된 BC/loads가 같은 물리공간인지 확인; schema identity와 값 norm을 따로 검사 |
|
||
| C12 | 원본 101 frames×9 nodes 전부, initial exact-zero U/UR, reordered CSV, missing/extra/duplicate/nonfinite/wrongtime mutation | [reference-model](reference-model.md)·공통 tolerance. UR warning도 precheck오류는blocking. Urow5%/RMS1%, nearzero1%, S0exactzero 경계 포함. HDF5→debugCSV는공식출력대체불가 |
|
||
|
||
최종 기능 acceptance에는 채택 mass의 위 필수 사례와 C12, 구성된 build/CTest가 필요하다. 이번 Numerical 문서 gate에서는 solver/build/CTest/Abaqus/reference를 실행하지 않는다. Fixture 구현 중 upstream 수식·지원 범위를 바꿔야 하는 발견은 formulation/main에 돌리고 문서의 tolerance를 결과에 맞추어 바꾸지 않는다.
|