Files
FESADev/docs/hht-implicit-dynamics/fixed-null-basis-proposal.md
T
KOKO\Mimi eaa5cbeb21 feat: adopt lumped mass and reduced-coordinate shell HHT
Integrate Hex8 mass verification and fixed-null-basis shell dynamics with numerical and physics handoff evidence. Preserve interrupted reference and full-validation status; full integration validation is deferred until after performance optimization.
2026-10-13 16:57:19 +09:00

103 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 초기 null의 직교 보완공간을 사용하는 고정 축소 좌표 제안
상태: 사용자 승인, 2026-10-13 [HHT-ADR-018](ADR.md). 구현 상세 수식과 변경본 검증은 별도 수행한다.
독립 검토: [수치 검토의 actual covariance 및 fixed-basis 절](numerical-review-channel-newton.md).
HHT-ADR-017의 제한 Newton 구현을 대체하거나 취소하는 제안이 아니다.
[실제 C09 진단](channel-newton-covariance-diagnostic.md)에서 확인한
global-component chart의 이산 공변성 문제를 해결하기 위한 후속 변경이다.
## 문제와 변경 경계
ADR-017 변경본은 C09 여섯 trajectory를 자연 종료했지만 유한회전의
proper-Q 비교에서 원1e-10 기준을 넘었다. 동일 물리 상태의 fresh assembly는
회전 변환과 일치한다. 현재 selected coordinate의 변환
`p'=L'_p^T R6*q(p)`가 비선형이므로 HHT/Newmark recurrence를 보존하지 않는다.
Read-only 2/4/8-step 진단은 이 차이가 약2차로 감소함을 보였다.
수렴 반복 수나 잔차 tolerance를 더 줄이는 것으로 이 이산화 차이를 제거할
근거는 없다. 비교 기준 완화는 제안하지 않는다.
변경 대상은 null이 있고 회전 세 성분이 모두 자유인 절점의 **고정 선형
좌표 분해**다. Continuous full equation과 endpoint 기준은 유지하지만
private coordinate를 적분하는 이산 방법은 달라지며 HHT-ADR-018로 승인됐다.
병진 좌표·물리 BC·HHT 계수·lumped measure·public global 결과·schema 및
원본 reference는 유지한다.
## 고정 basis의 구성
1. Frame0 원 full q/v/a와 실제 회전 kinematics에서 analytic drilling null
`n_raw=Jl(phi0)^(-1)*d(phi0)`를 얻는다. Reference geometric director를
비영 초기 회전의 실제 null 대신 사용하지 않는다.
2. Positive finite norm으로 `n0=n_raw/||n_raw||2`를 만든다. 이 연산은 private
basis 구성이고 model rotation/director/state의 재정규화가 아니다.
3. `|n0[k]|`가 최소인 Cartesian axis `e_k`를 선택한다. Exact tie는 component
순서다. `b=e_k-(e_k·n0)*n0`, `t1=b/||b||2`, `t2=n0×t1`로 만든다.
수학적으로 `||b||2>=sqrt(2/3)`이므로 임의 floor나 tiny-vector fallback이
필요 없다. Finite·positive 및 기존1e-12 Gram 검사를 요구한다.
4. 각 절점에서 `phi=t1*p1+t2*p2+n0*z`로 둔다. Basis는 run 동안 고정이며
current null을 따라 바꾸거나 rechart하지 않는다.
Tangent basis가 proper-Q에서 그대로 회전될 필요는 없다. 두 model의 initial
null이 `n0'=s*Q*n0`, `s=±1`이고 각 retained basis가 해당 null 직교평면을
span하면 `p'_rot=T2*p_rot`, `z'=s*z`, `T2∈O(2)`다. 이는 상수 선형 변환이다.
Cartesian axis의 선택이 바뀌어도 평면을 보존하면 비선형 chart 전환이 되지
않는다. 병진도 `p'_u=Q*p_u`이므로 exact arithmetic의 HHT recurrence가 이
변환과 commute한다. Floating-point 연산과 channel infinity norm 때문에
bitwise covariance나 실제1e-10 통과를 자동 보장한다는 주장은 하지 않는다.
## 부분 구속과 초기 상태
- Null이 실제 free 공간과 만나는지 판단하는 기존 계약을 유지한다.
회전 일부 성분이 구속된 절점은 기존 component chart를 유지한다.
Global BC flag를 새 local coordinate의 같은 번호에 복사하지 않는다.
이 혼합 chart 정책을 명시하고 부분구속 실제 모델을 회귀 검증한다.
- Fully fixed rotation은 exact prescribed value를 유지한다. Nonzero prescribed
BC의 공개 지원 범위를 확대하지 않는다.
- Frame0의 원 full q/v/a/A·force·accepted history는 projection하지 않는다.
Private p/z 및 rates의 basis 변환은 연산 radius와 roundtrip/initialization
검사를 새로 수행한다. 원 초기 gate를 못 만족하면 fail-closed이며
초기 force/state 보정이나 hidden polishing으로 통과시키지 않는다.
- Actual `G=psi_q*Lz`의 regularity와 positive reduced mass 검사를 유지한다.
Current moving null과 fixed n0의 transversality가 나빠지면 기존 실패
정책을 적용한다. Principal rotation bound만으로 이를 보장하지 않는다.
`G` regularity와 `N(q)^T*Lz` transversality는 별개의 검사다. 기존 pivot의
current-null nonzero 검사를 actual `n(q)·n0`와 해당 scaled conditioning으로
일반화한다. `G` 통과로 selector의 full-root equivalence 검사를 생략하지 않는다.
## 행렬·보정·N3/CA/N7의 변경
Index scatter 대신 constant sparse injection `Lp/Lz`를 사용한다.
Full row physical equilibrium은 `Lp^T*E`로 축소하고 augmented tangent는
같은 basis의 exact constant chain rule로 구성한다. Hidden gradient/Hessian/
third/time 항과 모든 auxiliary block도 동일 injection을 사용한다.
Production finite differences나 full dense basis matrix는 도입하지 않는다.
`dq=Lp*dp+Lz*dz`, `dv=Lp*cv*dp+Lz*dvz`,
`da=Lp*ca*dp+Lz*daz`, `dA=(1+alpha)*da`를 실제 sparse 연산으로 계산한다.
ADR-017의 U trigger/copy/thaw와 combined100 및 all-free full endpoint 검사는
유지한다. Private basis ordering을 public equation 번호로 노출하지 않는다.
기존 `p_dofs[i]%6` 분류나 direct index scatter를 basis coordinate에 적용하지
않는다. Private coordinate의 channel 및 full support metadata를 명시하고
trigger·copy·CA·N7가 같은 injection과 분류를 사용하도록 한다.
N3 private pair의 accepted high/requested increment·RN-even 저장 검사를 유지하고,
global reconstruction의 basis product/sum 및 정확한 constrained zeros를 별도로
검산한다. CA는 초기 projection, 모든 basis action, graph/rate 재구성과 copied
history의 실제 연산을 추적한다. 기존 index-only radius를 승계하지 않는다.
N7의 actual restricted/full-last/fresh-full defect와3/4항 규칙을 새 map에 적용한다.
Full physical q/v/a/public A와 private Ar의 역할·단위 및 factor100을 유지한다.
## 구현 및 검증 순서
1. Fixed sparse basis·partial-BC mapping·initial-state 보존 정식화 및 독립 검토.
2. Analytic null/Gram, linear frame transition, exact constrained zeros와
basis roundtrip/radius·N3 mutation 회귀. Actual G conditioning도 검사한다.
3. Production/verification executor를 같은 injection으로 변경하고 실제
nonzero-C1/warped/shared-node N5와 ADR-017 rollback/count 검사를 실행한다.
4. 현재 실패한 finite-phi C09의 모든 이력·proper-Q·3회 결정론·partitions,
2/4/8-step 진단과 matched-state force/inertia를 fresh identity로 재검증한다.
5. 공식 C08a7 grid와 C08b8 grid의 시간 정확도·hidden·N7·P/E/L,
구성된 전체 MSVC Debug/CTest 및 원본101-frame production 비교를 수행한다.
단계별 실패·미실행은 보존한다. 이 제안의 승인은 새 방법의 실제 수렴,
공변성·시간 정확도 또는 reference 통과를 뜻하지 않는다.