modify repository

This commit is contained in:
KOKO\Mimi
2026-10-18 14:32:55 +09:00
parent 762bd4b5b7
commit 945d899b2f
146 changed files with 336 additions and 11285 deletions
+12 -8
View File
@@ -1,8 +1,12 @@
# HHT implicit dynamics 정식화
- 상태: `independently-reviewed-candidate; physics-and-validation-pending`.
읽기 구분: 물리 유도와 과거 full-coordinate 시간적분 기록이다. 아래 후보 상태·구현 전 판단은 최초 정식화 당시의 것이며, 현재 채택·입출력·검증은 [기능 요약](README.md)을 따른다. 현재 시간적분은 [축소 좌표](formulation-reduced-coordinate.md)와 [고정 null 기저](formulation-fixed-null-basis.md)를 읽는다.
본문의 검토·ADR·N1–N7 등 과거 기록명은 당시 근거의 식별명이며, 이 문서의 현재 요약 링크가 원자료 전문을 제공한다는 뜻은 아니다.
- 작성 당시 상태: `independently-reviewed-candidate; physics-and-validation-pending`.
- Owner: `formulation-agent`, 2026-09-22. 문서 gate 산출물이며 구현 승인이나 수치 검증 통과가 아니다.
- 기준: [프로젝트 지침](../../AGENTS.md), [제품 PRD](../solver-core/README.md), [공통 ADR](../solver-core/README.md), [Feature PRD](README.md), [요구사항](README.md), [연구](README.md).
- 기준: [프로젝트 지침](../../AGENTS.md), [솔버 공통 요약](../solver-core/README.md), [공통 계약 요약](../solver-core/README.md), [기능 요약](README.md), 당시 요구사항, 당시 연구 기록.
- 관성의 전개식·초기 일관성·정확도 근거는 [formulation-inertia](formulation-inertia.md)가 소유한다. 영속 schema, C++ 저장 구조와 tolerance는 정의하지 않는다.
2026-10-12 사용자는 actual shell의 축소 좌표 HHT 구현·검증과 full A의 진단용 filter-combination 의미/schema 구분을 승인했다. 채택 방향의 수식은 [축소 좌표 HHT](formulation-reduced-coordinate.md)가 소유한다. 아래 full-coordinate recurrence는 기존 구현과 비교 이력이며 축소법의 full q/v update 식으로 승계하지 않는다. 승인과 actual solver 검증 완료는 구분한다.
@@ -11,7 +15,7 @@
**추천 후보는 유한회전 kinetic energy에서 유도한 관성력과, 물리적 가속도 `a` / 알고리즘 가속도 `A`를 분리하는 HHT 확장이다.** 일정 질량의 표준 HHT force weighting으로 정확히 환원한다. 단순히 `M(q)`를 기존 일정 질량 잔차에 대입하는 식은 추천하지 않는다. 이 차이는 [상세 §5](formulation-inertia.md#5-시간-정확도와-대안의-경계)에 유도한다.
**2026-10-11 사용자가 고유치·HHT lumped mass를 승인했다([HHT-ADR-012](README.md)).** HHT는 아래 nodal kinetic measure의 `T_L/M_L`을 채택하고 기존 shell eigen nodal block lumping을 유지한다. `T_C/M_C`는 비교·유도 이력으로 보존한다. 선행 eigen 결과나 동적 reference와의 적합도로 선택한 것이 아니다. 유한회전 지원 범위를 작은 회전으로 축소하지 않는다.
**2026-10-11 사용자가 고유치·HHT lumped mass를 승인했다(`HHT-ADR-012`([현재 요약](README.md))).** HHT는 아래 nodal kinetic measure의 `T_L/M_L`을 채택하고 기존 shell eigen nodal block lumping을 유지한다. `T_C/M_C`는 비교·유도 이력으로 보존한다. 선행 eigen 결과나 동적 reference와의 적합도로 선택한 것이 아니다. 유한회전 지원 범위를 작은 회전으로 축소하지 않는다.
아래 HHT 확장과 `0+` 초기화는 HHT-ADR-009에서 채택한 계약을 유지한다. 이번 lumped mass 선택은 그 밖의 physics·알고리즘·공개 output 범위를 확대하지 않는다.
@@ -79,7 +83,7 @@ U_{drill}=\frac12\sum_{e,i}k_{de}\chi_{ei}(q)^2,\quad
f_{int}=\nabla_q(U_{phys}+U_{drill}),\quad K_{int}=\nabla_q^2(U_{phys}+U_{drill}).
\]
Drilling stiffness는 물리적 회전 관성이 아니다. `U_phys`와 `U_drill`을 구별하여 에너지 evidence를 계산하고, drill stress/resultant를 만들지 않는다. 재료 내부변수·소성 update는 없다. 재사용 대상 [evaluator](../../src/fesa/elements/nonlinear_mitc4_shell.cpp)의 `PhysicalEnergy`, `DrillingEnergy`, `EvaluateInternalResidualAndTangent`도 이 구분에 대조한다. 현재 공개 equilibrium/recovery 결과는 `physical_strain_energy`만 노출하므로 drill energy evidence의 전달은 후속 구현 작업이며 현 API가 이를 이미 제공한다고 보지 않는다.
Drilling stiffness는 물리적 회전 관성이 아니다. `U_phys`와 `U_drill`을 구별하여 에너지 evidence를 계산하고, drill stress/resultant를 만들지 않는다. 재료 내부변수·소성 update는 없다. 재사용 대상 [evaluator](../../src/fesa/elements/nonlinear_mitc4_shell.cpp)의 `PhysicalEnergy`, `DrillingEnergy`, `EvaluateInternalResidualAndTangent`도 이 구분에 대조한다. 최초 정식화 당시 공개 equilibrium/recovery 결과는 `physical_strain_energy`만 노출했다. 현재 dynamic frame은 `drilling_energy`를 별도로 보존하며 공개 결과 계약은 [기능 요약](README.md)을 따른다.
## 3. 질량·관성·연속 평형
@@ -119,7 +123,7 @@ T_L=\frac12\sum_i\left(m_i|v_{ui}|^2+2s_i v_{ui}\cdot B_iv_{\phi i}
\beta=\frac14(1-\alpha)^2.
\]
기본값은 `alpha=−0.05`, `beta=0.275625`, `gamma=0.55`다. [공개 기본값 근거](README.md)와 [Sandia의 결합계수](https://www.sandia.gov/files/sierra/SM_Users_5_20/main/implicit/integration.html)를 따른다. `alpha=0`은 평균가속도 Newmark다. 이 범위는 일반 유한회전 문제의 무조건 안정성이나 큰 시간간격의 정확도를 보증하지 않는다. 별도 `beta/gamma` 입력을 승인한 의미도 아니다.
기본값은 `alpha=−0.05`, `beta=0.275625`, `gamma=0.55`다. `공개 기본값 근거`와 [Sandia의 결합계수](https://www.sandia.gov/files/sierra/SM_Users_5_20/main/implicit/integration.html)를 따른다. `alpha=0`은 평균가속도 Newmark다. 이 범위는 일반 유한회전 문제의 무조건 안정성이나 큰 시간간격의 정확도를 보증하지 않는다. 별도 `beta/gamma` 입력을 승인한 의미도 아니다.
**FESA 초기화 후보 계약:** frame 0은 `t=0+`, `q_0=v_0=0`, 전값 `F_0=F*`다. `M_ff(q_0)a_f0=F_f0−f_int,f(q_0)`와 [mass-null 일관성](formulation-inertia.md#4-mass-null과-초기-일관성)을 함께 풀어 `a_0`를 구한다. `A_0=a_0`, `g_0=f_int(q_0)−F_0`를 정의한다. `g_0=0` 또는 `a_0=0`을 임의 대입하지 않는다. 이는 공개 STEP 의미에 맞춘 FESA 계약 제안이며 Abaqus의 숨은 첫 history 생성 절차를 확인한 주장이 아니다.
@@ -198,7 +202,7 @@ W_{0\to n}=F^{\star T}(q_n-q_0),\quad
6. `time,increment,q,v,a,A,orientation,forces,recovery,evidence`가 한 identity를 이루는 candidate만 원자적으로 commit한다. 모든 101 accepted frames를 보존한다. Newton iteration은 time frame이 아니다.
7. 비수렴·invalid chart/geometry·nonfinite·선형 solve·회복·출력 실패는 trial을 폐기하고 마지막 committed 상태/history와 기존 최종 HDF5를 보존한다. 고정 `DIRECT`를 cutback/adaptive로 바꾸거나 실패 frame을 성공으로 내보내지 않는다.
공식 출력은 lexical sibling `<stem>_results.h5`다. `U/UR`, 물리적 `v/a`, `omega/omega_dot`, algorithmic `A`, 반력과 에너지의 **공개 여부 및 영속 schema는 미결정**이다. Algorithmic `A`를 physical acceleration이라는 이름으로 공개해서는 안 된다. 출력 선택과 무관하게 검증에는 서로 구별되는 내부 quantity가 필요하다.
공식 출력은 lexical sibling `<stem>_results.h5`다. `U/UR`, 물리적 `v/a`, `omega/omega_dot`, algorithmic `A`, 반력과 에너지의 공개 여부 및 영속 schema는 최초 정식화 당시 미결정이었다. 현재 공개 계약은 [기능 요약](README.md)의 shell schema v2를 따른다. Algorithmic `A`를 physical acceleration이라는 이름으로 공개해서는 안 된다. 출력 선택과 무관하게 검증에는 서로 구별되는 내부 quantity가 필요하다.
## 7. 검증 인계와 미해결 결정
@@ -212,6 +216,6 @@ W_{0\to n}=F^{\star T}(q_n-q_0),\quad
| 구현 lifecycle | 동일 state tangent, 실패 rollback, time/frame 순서, deterministic assembly와 반복 결과 |
| 외부 reference | 지정 원본 101 frames × 9 nodes, frame/instance/node/component의 exact mapping; U blocking / UR warning-only 및 공통 TOLERANCE. V/A/energy correctness는 해당 CSV에 coverage 없음 |
수식 후보의 [독립 검토](README.md)는 완료되었으며 표시된 수식에서 새 오류는 발견되지 않았다. 현재 질량 선택은 HHT-ADR-012의 nodal lumped로 대체되었다. 이후 구현 전 상태를 설명하는 이 문단은 최초 정식화 당시의 기록이며 변경본 검증의 통과를 뜻하지 않는다. 구현 전 남은 계약은 (1) HHT 확장·초기화의 FESA 채택과 나머지 physics 범위, (2) initial algebraic regularity와 trial 실패 판정의 수치 기준, (3) 공식 output 의미의 공개 범위/I/O다. 이 선택 후 구현할 수 있는 수식 후보이며, 실제 유한회전 shell의 drilling DAE·관성 tangent·q/v/a 시간 수렴은 **구현 후 기능 acceptance에 필요한 검증**이다. 부모 문헌의 nonsingular-mass 조건을 shell mass-null에 자동 적용하지 않되, 모든 shell DAE의 보편적 수렴 증명을 코드 작성의 선행 조건으로 요구하지 않는다. 현재 문서 완료나 제한된 probe를 전체 solver 승인·검증 통과로 표시하지 않는다.
수식 후보의 `독립 검토`는 완료되었으며 표시된 수식에서 새 오류는 발견되지 않았다. 현재 질량 선택은 HHT-ADR-012의 nodal lumped로 대체되었다. 이후 구현 전 상태를 설명하는 이 문단은 최초 정식화 당시의 기록이며 변경본 검증의 통과를 뜻하지 않는다. 구현 전 남은 계약은 (1) HHT 확장·초기화의 FESA 채택과 나머지 physics 범위, (2) initial algebraic regularity와 trial 실패 판정의 수치 기준, (3) 공식 output 의미의 공개 범위/I/O다. 이 선택 후 구현할 수 있는 수식 후보이며, 실제 유한회전 shell의 drilling DAE·관성 tangent·q/v/a 시간 수렴은 **구현 후 기능 acceptance에 필요한 검증**이다. 부모 문헌의 nonsingular-mass 조건을 shell mass-null에 자동 적용하지 않되, 모든 shell DAE의 보편적 수렴 증명을 코드 작성의 선행 조건으로 요구하지 않는다. 현재 문서 완료나 제한된 probe를 전체 solver 승인·검증 통과로 표시하지 않는다.
이번 owner 작업은 기존 정식화·source 대조, 일차 문헌 대조와 수식 유도 및 문서 정적 검토다. [독립 시간정확도 검산](README.md)은 variable-mass SDOF와 moving-null 예제에서 추천 후보의 약 2차 q/v/physical-a 수렴을 관찰했고 naive 확대의 약 1차 오차를 구별했다. 이는 shell solver 검증이나 일반 drilling DAE 증명을 대신하지 않는다. Build/test·solver/reference 실행은 문서 작업 범위가 아니므로 미실행이다. 독립 검산과 Numerical Review 결과는 해당 owner의 보고서가 소유하며 본 문서가 스스로 승인하지 않는다.
이번 owner 작업은 기존 정식화·source 대조, 일차 문헌 대조와 수식 유도 및 문서 정적 검토다. `독립 시간정확도 검산`은 variable-mass SDOF와 moving-null 예제에서 추천 후보의 약 2차 q/v/physical-a 수렴을 관찰했고 naive 확대의 약 1차 오차를 구별했다. 이는 shell solver 검증이나 일반 drilling DAE 증명을 대신하지 않는다. Build/test·solver/reference 실행은 문서 작업 범위가 아니므로 미실행이다. 독립 검산과 Numerical Review 결과는 해당 owner의 보고서가 소유하며 본 문서가 스스로 승인하지 않는다.