244 lines
15 KiB
Markdown
244 lines
15 KiB
Markdown
# 좌표 공변적인 drilling scale과 적용 경계
|
||
|
||
- Feature ID: `mitc4-shell-feast-eigen`
|
||
- Owner: `formulation-agent`
|
||
- Input contract revision: `r2`
|
||
- 기본 보고서: [formulation.md](formulation.md)
|
||
|
||
승인 근거는 [MFE-ADR-007](ADR.md#mfe-adr-007--기존-stabilization과-좌표-불변성-acceptance-정합),
|
||
`FEM-REQ-MITC4-EIGEN-002/008/014/024/027` 및 [기존 계약 대체 범위](requirements.md#r2의-기존-계약-대체-범위)다.
|
||
[연구 R07](research-evidence.md#r07--r2-stabilization-근거와-영향)의 후보에서 아래 하나를 선택한다.
|
||
식 S1~S8은 FESA 계약에 대한 유도이며 외부 solver의 stabilization과 동일하다는 주장이 아니다.
|
||
|
||
## S1. 초기 physical trace로 고정하는 단일 scale
|
||
|
||
[M4](formulation-mass.md#m2-strongweak-form과-기존-stiffness)의 원형상 physical matrix를
|
||
`K20^0`라 한다. 각 source node i의 local physical 순서는 `[uX,uY,uZ,alpha,beta]`이고,
|
||
`R_i [2×2]`는 그 matrix에서 `alpha,beta`에 해당하는 principal block이다. 두 회전은
|
||
orthonormal tangent basis의 무차원 성분이다. Element별로
|
||
|
||
\[
|
||
k_{ref,e}=\frac18\sum_{i=1}^4\operatorname{tr}R_i,
|
||
\qquad k_{d,e}=\eta_d k_{ref,e},\qquad \eta_d=10^{-3},
|
||
\qquad K_d^l=k_{d,e}I_4. \tag{S1}
|
||
\]
|
||
|
||
`k_ref,k_d,R_i`의 단위는 force·length=`ML²/T²`다. Translation 대각, lumped/consistent
|
||
mass, density, constrained tangent, trial tangent 또는 reference 오차는 이 식의 입력이 아니다.
|
||
초기 physical K의 **여덟 회전 대각 전체**를 평균하며 양수인 항만 선별해 분모를 바꾸지 않는다.
|
||
기존 coefficient `10^-3`와 네 node에 같은 scalar를 쓰는 numerical 역할을 유지한다.
|
||
새 사용자 parameter·coefficient sweep·reference tuning은 없다.
|
||
|
||
Trace 평균은 모든 방향의 회전 강성을 사용하면서 eigenvalue subtraction과 positive
|
||
nodal-block 선별을 피한다. 최소 spectral 값도 불변량이지만 이번 scale에 필요하지 않은
|
||
작은 고유값 conditioning 문제를 추가한다. 이는 R07 후보의 단순성에 따른 선택이며,
|
||
LAPACK이 FESA의 평균 규칙을 제안한다는 뜻이 아니다. 작은 고유값의 상쇄 한계는
|
||
[LAPACK DLAEV2 원문, Further Details](https://www.netlib.org/lapack/explore-html/d4/d5a/dlaev2_8f_source.html)에 있다.
|
||
|
||
## S2. Positive inventory, 유효 geometry와 계산 순서
|
||
|
||
기존 승인 geometry·director·section·material 검증을 먼저 적용한다. 기존 8개 stiffness
|
||
점에서 `J_g>0,w_g>0`, `t>0,E>0,-1<nu<0.5`이면 `C5≻0`이고 M4에 의해
|
||
|
||
\[
|
||
d_r=(K_{20}^0)_{rr}
|
||
=\sum_g J_gw_g\|C_5^{1/2}\bar B_g e_r\|^2\ge0,
|
||
\quad r=(\alpha_1,\beta_1,\ldots,\alpha_4,\beta_4). \tag{S2}
|
||
\]
|
||
|
||
따라서 S1이 양수인 필요충분조건은 이 여덟 값 중 적어도 하나가 양수인 것이다.
|
||
이는 [기존 요구 034/036](../linear-static-mitc4-shell/requirements.md)의 유효 physical
|
||
rotation inventory 조건과 같다. 개별 `R_i`가 모두 PD여야 한다는 새 조건은 없다.
|
||
Exact zero diagonal/block도 합에 포함하므로 기존 허용 geometry를 선별해 줄이지 않는다.
|
||
유효 geometry는 noncollinear midsurface를 가지며, 기존 physical kernel의 non-rigid
|
||
positivity 계약상 translation 0인 비영 tangent-rotation field 전체가 zero-energy일 수 없다.
|
||
그 field가 rigid라면 모든 node에서 `c+Omega×X_i=0`이므로 noncollinearity에서 `Omega=c=0`이다.
|
||
이것이 기존 물리 rank 조건과 양의 inventory의 연결이다. Geometry predicate만으로 모든
|
||
왜곡 element의 rank를 검증했다고 주장하지 않고 기존 physical rank/patch 검증을 유지한다.
|
||
|
||
계산·실패 순서는 다음으로 고정한다.
|
||
|
||
1. 기존 순서의 quadrature로 초기 `K20^0`를 완성하고 모든 항의 finiteness를 확인한다.
|
||
Node1→4, 각 node의 alpha→beta 순서로 정확히 여덟 `d_r`를 읽는다.
|
||
2. Negative diagonal은 S2와 불일치하는 numerical stiffness failure다. Zero는 허용한다.
|
||
Nonfinite/negative를 생략·절댓값·0으로 보정하지 않는다. Physical symmetry/PSD의 독립
|
||
검증을 양의 trace 하나로 대체하지 않는다.
|
||
3. `d_max=max_r d_r`를 구한다. `d_max=0`이면 빈 positive inventory failure다.
|
||
그 외에는 고정된 순서의 안정된 합으로
|
||
`k_ref=d_max*((sum_r(d_r/d_max))/8)`을 평가한다. 이는 S1의 동치 계산이며 임의 floor가 아니다.
|
||
Exact 산술에서 괄호는 `[1/8,1]`이므로 유한한 최댓값보다 큰 중간 trace를 만들 필요가 없다.
|
||
4. `k_ref`와 `k_d=10^-3 k_ref`가 각각 finite·strictly positive인지 확인한다.
|
||
Underflow로 0, overflow 또는 invalid가 되면 실패하고 최소 양수로 대체하지 않는다.
|
||
안정된 합도 연산 불능을 감추지 않으며 수치 기준·conditioning은 NR가 고정한다.
|
||
5. Source element/node 순서의 기존 reduction으로 조립한다. 임의의 좌표 회전에 대한
|
||
bitwise equality와 고정 입력·reduction 순서의 결정론은 구분한다. 전자는 NR의 정규화
|
||
congruence 기준을 만족해야 하며 기준 밖 실패를 floating-point라는 말로 수용하지 않는다.
|
||
|
||
Mass나 geometry rank cutoff를 새로 만들지 않는다. 유효한 positive stiffness라도
|
||
표현 범위를 넘는 경우의 numerical failure는 지원 geometry 종류를 축소하는 대체 규칙이 아니다.
|
||
|
||
## S3. 독립 재계산한 complete K와 제약의 공변성
|
||
|
||
`U_i=[a_i b_i]`, `G∈SO(3)`를 전역 좌표 회전이라 하자. 새 geometry에서 tangent를
|
||
독립 생성하면 `U_i'=G U_i O_i`, `d_i'=Gd_i`인 orthogonal `O_i`가 존재한다.
|
||
오른손 frame끼리는 `O_i∈SO(2)`다. 각 node의 physical 좌표 변환을
|
||
`A_i=diag(G,O_i^T)`, 전체 `A=blockdiag(A_i)`, global 24 DOF 변환을
|
||
`S_G=blockdiag_i(G,G)`라 두면 `q20'=A q20`, `q24'=S_G q24`다.
|
||
|
||
MITC strain은 같은 물리 tensor를 보간하고 isotropic C5의 quadratic work와 J는 회전에
|
||
불변이다. 따라서 물리 운동학으로 독립 재계산한 `K20'^0=A K20^0 A^T`이며
|
||
|
||
\[
|
||
R_i'=O_i^T R_i O_i,\quad \operatorname{tr}R_i'=\operatorname{tr}R_i,
|
||
\quad k_{d,e}'=k_{d,e},\quad
|
||
T_p'S_G=A T_p,\quad T_d'S_G=T_d. \tag{S3}
|
||
\]
|
||
|
||
이 등식을 M4에 대입하면
|
||
|
||
\[
|
||
K_{phys,e}'=S_G K_{phys,e}S_G^T,\quad
|
||
K_{drill,e}'=S_G K_{drill,e}S_G^T,\quad
|
||
K_e'=S_G K_e S_G^T. \tag{S4}
|
||
\]
|
||
|
||
`G=I`인 독립 node별 tangent basis 변경에도 같다. Element의 local strain frame이
|
||
재생성되더라도 isotropic work는 같다. Frame 생성 tie로 basis가 달라지는 것도 포함한다.
|
||
이미 계산한 old K에 S를 곱하는 검사만으로 S3를 검증할 수 없다. 새 geometry·frame에서
|
||
physical K와 S1을 다시 계산해야 한다. Translation of origin도 geometry derivatives,
|
||
K 및 M를 바꾸지 않는다. Mirror reflection·source connectivity reversal은 이 SO(3) 증명의 대상이 아니다.
|
||
|
||
전체 model의 block rotation을 `S`라 하면 stable assembly 뒤 `K'=S K S^T`, `M'=S M S^T`다.
|
||
E1의 `ell`은 회전에 불변이고 D와 S는 commute한다. 같은 물리 free space를 나타내는
|
||
`C,C'`에는 `SC=C'W`인 orthogonal W가 있어
|
||
|
||
\[
|
||
K_f'=W K_f W^T,\quad M_f'=W M_f W^T,
|
||
\quad y_f'=W y_f,\quad\lambda'=\lambda. \tag{S5}
|
||
\]
|
||
|
||
이는 supported partial rotation BC에도 적용된다. 비교 대상 양쪽의 같은 물리 subspace가
|
||
현재 component BC로 표현되어야 한다. 임의 회전 뒤 BC component를 그대로 유지하여 다른
|
||
문제를 비교하거나 새 MPC 기능을 요구하지 않는다. NR-MFE-001의 global Z축 회전은 그
|
||
URZ free space를 유지하므로 필수 사례다. Complete K 안의 partial-BC stabilization을
|
||
삭제하거나 acceptance를 full-free/full-clamp로 한정하지 않는다.
|
||
|
||
Static load도 `F'=SF`, prescribed displacement도 같은 물리량으로 변환하면 기존
|
||
partition/effective RHS의 해와 full residual/reaction이 함께 변환한다. Unique free 해의
|
||
경우 `q'=Sq`, `r'=Sr`, physical strain energy는 불변이다. S5는 eigen 근사식이 아니라
|
||
개선된 실제 constrained K/M의 congruence다.
|
||
|
||
## S4. Linear rigid modes와 massless drilling의 다른 의미
|
||
|
||
Linear/eigen 물리 rigid field는 `u_i=c+Omega×X_i`,
|
||
`theta_i=(I-d_i d_i^T)Omega`다. M2에 넣으면 입자 변위는 `c+Omega×X`이고
|
||
물리 strain 및 `T_d q`가 모두 0이다. 따라서 S1의 양수 값과 관계없이 `K_e q=0`이다.
|
||
비퇴화 shell의 여섯 물리 rigid motions는 positive lumped mass를 가진다. 기존 physical
|
||
non-rigid positivity와 함께 complete free element의 nullity가 여섯이라는 검증을 유지한다.
|
||
|
||
반면 한 node의 pure numerical drill `z_i=[0;d_i]`는 `T_p z_i=0`, `M z_i=0`이고
|
||
numerical stiffness만 양수다. Physical recovery에는 strain/stress/resultant를 만들지 않는다.
|
||
Full spatial Omega를 linear UR에 넣어 numerical drill까지 가진 field는 위 five-DOF
|
||
rigid 대표값과 다르다. 이 구분은 기존 물리 계약이며 새 eigen rigid acceptance의 축소가 아니다.
|
||
|
||
S1에서 모든 element의 `k_d,e>0`이고 nodal director가 incident element 사이에 공통이므로
|
||
[E3/E4](formulation-eigen.md#e3-개선된-stiffness에서-decoupling의-정확한-증명)의
|
||
`K_f Z=Z diag(sum_e k_d,e)`, `Kzz≻0`, `Kpz=0`가 그대로 성립한다. E2의 실제
|
||
global BC와 null의 교집합을 먼저 구한다. Finite mode의 null coefficient는 0이며
|
||
positive 공간으로의 투영은 개선된 원 pencil의 모든 finite spectrum을 보존한다.
|
||
Null이 없는 partial BC에는 개선된 drilling term이 finite 공간에 남는다. 이 항을 제거하거나
|
||
옛 spectrum과 같게 조정하지 않는다. Consistent→lumped의 spectrum equality는 별개로 요구하지 않는다.
|
||
|
||
## S5. Nonlinear objective potential와 초기 고정 lifecycle
|
||
|
||
기존 [nonlinear §10.1~10.4](../nonlinear-static-newton-raphson/formulation.md#10-objective-numerical-drilling-contract)의
|
||
polar element corotation `R_e`, total nodal rotation `R_i`, minimal swing `S_ei` 및
|
||
`gamma_i=atan2(s_gamma,i,c_gamma,i)`를 그대로 사용한다. 초기 reference physical K20만으로
|
||
S1을 한 번 계산하고 모든 trial/commit/increment/iteration 및 rollback 동안 같은 scalar를 쓴다.
|
||
State-dependent scale·trial 재선정·기존 objective gamma의 교체는 승인 범위 밖이다.
|
||
|
||
\[
|
||
Dk_{d,e}=D^2k_{d,e}=0,\quad
|
||
\Pi_d^e=\tfrac12 k_{d,e}\gamma^T\gamma,\quad
|
||
r_d^e=k_{d,e}D_\gamma^T\gamma,
|
||
\]
|
||
\[
|
||
K_d^e=k_{d,e}\left(D_\gamma^TD_\gamma+
|
||
\sum_i\gamma_i H_i^\gamma\right),\qquad
|
||
D_\gamma=D\gamma,\quad H_i^\gamma=D^2\gamma_i. \tag{S6}
|
||
\]
|
||
|
||
모든 polar/swing/rotation/atan2 미분과 branch validation은 기존 계약을 유지한다.
|
||
Positive k_d는 potential 비음성과 pure-drill 양의 작용을 뜻한다. 일반 nonlinear Hessian은
|
||
`sum gamma_i H_i` 때문에 모든 상태에서 SPD라는 결론이 없다. 초기 `gamma=0`에서도
|
||
`D_gamma`에는 corotation coupling이 있으므로 이를 linear `T_d`와 동일시하지 않는다.
|
||
기존 pure-drill directional quadratic form과 physical 선형극한·Newton tangent consistency를
|
||
각자의 계약대로 재검증하며 complete nonlinear Hessian의 모든 entry가 linear M4와 같다고 요구하지 않는다.
|
||
|
||
같은 물리 nonlinear 상태를 G로 표현하면 모든 rotation tensor와 initial director가
|
||
conjugation/rotation되고 scalar gamma는 같다. Initial S1도 같으므로 potential은 불변이다.
|
||
Work-conjugate Cartesian perturbation에 대해 chain rule로 residual과 tangent의 공변성이 따른다.
|
||
Superposed finite rigid motion에서는 기존 `R_e^+=R R_e`, `R_i^+=R R_i`에 의해 gamma가
|
||
같고, stress-free rigid state에는 gamma=0·physical strain=0이다. 따라서 finite rigid motion의
|
||
영에너지 및 objective rigid orbit를 따른 변분 검증을 유지한다. S4의 linear tangent-projected
|
||
UR field를 nonlinear total triad 회전에 대신 넣지 않는다.
|
||
|
||
현재 [nonlinear 생성 경로](../../src/fesa/elements/nonlinear_mitc4_shell.cpp)의
|
||
`NonlinearMitc4Shell::Create`는 초기 linear `Stiffness()`의 `drilling_stiffness`를 받아 저장한다.
|
||
이 경계에서 S1의 같은 값을 사용해야 한다. 물리 strain/material, exact external moment work,
|
||
Newton/line-search/cutback, accepted state 및 physical output은 기존 계약이다.
|
||
S4/E3 projection은 이 nonlinear Hessian·preload·prestressed eigen으로 확장하지 않는다.
|
||
|
||
## S6. NR-MFE-001의 새 algebraic target과 정적 대응
|
||
|
||
[NR 소유 반례](numerical-review-evidence.md#nr-mfe-001-직접-계산-반례)의 독립 적분 block을
|
||
입력 근거로 사용한다. 그 geometry·source BC·material 및 옛 실패 이력은 보존한다.
|
||
각 corner에서 `R_aa=49/12`, `R_bb=23/6`, `R_ab=±1/8`이므로
|
||
|
||
\[
|
||
k_{ref}=95/24,\quad k_d=19/4800,\quad
|
||
M_{ff}=3/50,\quad K_{ff}=10369/7500,\quad
|
||
\lambda=10369/450=23.042222\ldots . \tag{S7}
|
||
\]
|
||
|
||
Global Z축 45° 회전 뒤 재생성한 tangent basis에서도 trace는 `95/12`이므로 같은 식이다.
|
||
이는 production/FEAST 실행 결과가 아닌 r2 formula의 exact target이다. 독립 재계산과
|
||
runtime에서 반례가 해소되는지는 NR/Implementation이 각각 검증한다.
|
||
|
||
정적 대응에는 node1에 `m=(5/3)M0 b`, 다른 load는 0을 사용한다. 여기서
|
||
`b=(-4/5,0,3/5)`와 `M0`는 finite 비영 moment amplitude `[force·length]`다.
|
||
`d·m=0`, `mZ=M0`이므로 기존 physical moment admissibility를 지킨다. 단순 `m=M0 eZ`는
|
||
drilling 성분을 가져 기존 load 계약을 위반하므로 사용하지 않는다. 같은 모든 DOF 고정,
|
||
node1 URZ만 free에서
|
||
|
||
\[
|
||
\theta_{1Z}=\frac{M0}{K_{ff}},\quad
|
||
q_{constrained}=0,\quad r=Kq-F. \tag{S8}
|
||
\]
|
||
|
||
회전된 input에서는 `m'=Gm`을 component load로 주고, `mZ'=M0`와 같은 BC를 유지한다.
|
||
Supported component BC/load만으로 `thetaZ`, complete response·full reaction의 공변성을
|
||
검증할 수 있다. Physical recovery와 numerical contribution의 의미는 합치지 않는다.
|
||
|
||
## S7. 대체·보존 범위와 필수 verification
|
||
|
||
기존 linear `FESA-REQ-LSMITC4-034`, `056`의 최소 positive diagonal 선정·그 공식 검증만
|
||
S1/S2로 대체한다. 기존 `036`의 invalid positive inventory 의미는 S2로 유지한다.
|
||
Nonlinear §10.3은 초기 scale 식만 대체하고 §10.1/10.2/10.4 및 frozen lifecycle은 유지한다.
|
||
기존 feature 문서·과거 실패 evidence를 소급 수정하지 않는다.
|
||
|
||
필수 수학 검증은 S1 직접 평균/단위/zero inventory·잘못된 finite/sign 처리,
|
||
독립 node별 tangent 재생성과 global geometry 회전의 S3/S4, S7/S8의 supported partial BC,
|
||
physical six rigid modes와 pure drilling rank/separation, E3의 KZ/MZ/Kpz/Kzz 및 원 free
|
||
residual이다. Nonlinear은 같은 초기 scale·immutability, objective rigid motion,
|
||
exact first/second directional derivatives·물리 선형극한·정적 평형/reaction/energy·rollback을
|
||
기존 계약으로 재검증한다. Density 없는 기존 static 모델도 계속 유효하다.
|
||
|
||
실행해야 하는 기존 `shell`, `shellNL`, `shellNL-meshfine` 및 linear-limit closure portfolio와
|
||
후속 meshfine-02 이력의 구분, source identity, U blocking/UR warning-only, reaction review-only는
|
||
[requirements evidence의 단일 portfolio](requirements-evidence.md#r2-승인-범위와-정적-재검증)를 따른다.
|
||
새 eigen 외부 비교는 지정 input/TXT의 10개 Value만 사용한다. Static reference를 eigen
|
||
mode-shape gate로 추가하거나 기존 static 회귀를 Value-only를 이유로 삭제하지 않는다.
|
||
Numerical threshold·필수 case 구체화·FEAST control/budget/seed와 독립 반례 해소 판정은 NR,
|
||
TDD/runtime/reference 실행은 Implementation, 독립 물리 판단은 Physics 소유다.
|