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.
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
# 초기 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 통과를 뜻하지 않는다.
|
||||
Reference in New Issue
Block a user