63 lines
4.6 KiB
Markdown
63 lines
4.6 KiB
Markdown
# 이전 MITC4 질량·FEAST 유도 baseline
|
||
|
||
## 현재 의미
|
||
|
||
이 폴더는 현재 실행 기능이 아니라 mass·stabilization·finite-space reduction의 유도 근거다.
|
||
실제 구현·입력·결과·외부 acceptance는 [eigen2](../mitc4-shell-feast-eigen2/README.md)가 소유한다.
|
||
이전 prep·stage·환경 복구 계획을 재개하거나 과거 pass를 현재 evidence로 승계하지 않는다.
|
||
공통 구조는 [solver-core](../solver-core/README.md), 보존한 상세 원문은 [정식화](formulation.md)다.
|
||
|
||
## 채택한 수학과 이유
|
||
|
||
원형상 MITC4의 3 병진·2 director 접평면 회전을 같은 geometry/Jacobian으로 적분한다.
|
||
Consistent mass를 구성하는 scalar thickness moments를 `3×3×3` Gauss로 계산한다.
|
||
Trilinear mapping의 해당 적분 차수와 warped geometry의 odd-thickness coupling을 유지하기 위함이다.
|
||
Scalar moment row sum에서 global nodal `6×6` block lumped mass를 만든다.
|
||
이 lumping은 총 병진 질량·first spatial moment·할당된 thickness moments를 보존한다.
|
||
Consistent와 lumped energy 차이는 Jensen identity로 설명하며 두 spectrum이 같다고 가정하지 않는다.
|
||
Drilling에는 물리 inertia를 더하지 않아 analytic mass null을 유지한다.
|
||
|
||
Stabilization은 초기 physical rotary diagonal 8개의 trace 평균에 `10^-3`을 곱한다.
|
||
접평면 기저나 global 좌표 회전으로 scale이 바뀌지 않게 하는 선택이다.
|
||
Nonlinear에서는 같은 초기 scale의 objective potential을 사용하며 trial마다 재계산하지 않는다.
|
||
이는 physical stress/resultant/energy가 아닌 numerical drilling contribution이다.
|
||
|
||
실제 homogeneous global BC를 먼저 적용한 뒤 free space에 완전히 포함되는 director null만 제거한다.
|
||
Partial rotational BC를 full clamp로 바꾸거나 unconstrained null 전체를 미리 버리면 다른 모델이다.
|
||
Positive mass space의 nodal whitening 뒤 symmetric finite problem을 푼다.
|
||
개선된 실제 constrained pencil의 finite spectrum을 보존하는 것이 요구사항이다.
|
||
보존 원리의 검산 target은 `k_d=19/4800`, `lambda=10369/450`인 rational 반례다.
|
||
|
||
## 채택하지 않는 과거 의미
|
||
|
||
이전 controls·reference portfolio·readiness 상태를 현행 eigen2로 자동 승계하지 않는다.
|
||
빈 count interval의 `info=0,m0=0`이나 작은 scratch 성공을 vendor 보장으로 가정하지 않는다.
|
||
이전 trace-stopping 방식은 현재 방식이 아니다. 현행 FEAST는 C-index `fpm[5]=0` residual stopping이다.
|
||
Source `LANCZOS`와 실제 backend `MKL FEAST`, source `S4|S4R`와 내부 MITC4를 구분한다.
|
||
|
||
현재 reference는 `reference/shellNL-eigen-meshfine/`의 지정 input과 eigenvalues TXT다.
|
||
Source step `Step-2`·mode ID·quantity `Value`로 맞추며 Freq와 mode shape는 외부 equality 대상이 아니다.
|
||
현행 `mitc4-eigen-first-implementation`은 같은 mode의 singleton row/RMS 각각 `<=5%`다.
|
||
다른 공통 family의 row 5%·RMS 1%와 내부 all-c `1e-10`은 유지된다.
|
||
이 요약은 과거 reference 정책을 소급 변경하거나 옛 실행을 재판정하지 않는다.
|
||
|
||
## 현재 코드로 이어지는 경계
|
||
|
||
[Mitc4Shell::Mass](../../include/fesa/elements/mitc4_shell.h)는 consistent moment·global mass·lumped block을 생성한다.
|
||
[Kernel 구현](../../src/fesa/elements/mitc4_shell.cpp)은 수식의 실제 적용 위치다.
|
||
[BuildEigenReduction](../../src/fesa/analysis/eigen_reduction.h)은 BC-first lift·null·whitening을 만든다.
|
||
[LinearFrequencyProcedureExecutor](../../include/fesa/analysis/linear_frequency_procedure.h)는
|
||
Domain→stable assembly→reduction→backend→global modal validation의 수명을 소유한다.
|
||
[MklFeastEigenSolver](../../include/fesa/solvers/eigen/mkl_feast_eigen_solver.h)는 vendor 타입을 숨기는 경계다.
|
||
Element는 equation이나 modal accepted state를 소유하지 않으며 검증 candidate만 writer로 넘어간다.
|
||
|
||
## 실패에서 배운 점과 검증 한계
|
||
|
||
과거 targeted Python GREEN과 전체 Python/MSVC 실패가 함께 있었으므로 서로 합쳐 PASS로 쓰지 않는다.
|
||
`FileTracker` 접근 거부·CMake discovery 실패·output lease의 `output-busy`는 서로 다른 원인이다.
|
||
Source echo의 exit0을 runtime failure로 분류하거나 PID 존재로 native exit를 추정하지 않는다.
|
||
Compiler 경로 spelling과 부모/자식 환경 차이로 cache·실행 결과가 달라질 수 있다.
|
||
개인 preset·timeout·hook trust 설정은 공통 수학 계약이 아니다.
|
||
후속 eigen2 첫 구현 기록이 실제 실행 근거이며 이 baseline만으로 완료·release를 주장하지 않는다.
|
||
이번 문서 통합은 build/test나 외부 solver를 실행하지 않았다.
|