107 lines
8.3 KiB
Markdown
107 lines
8.3 KiB
Markdown
# 물리와 판정 규칙
|
|
|
|
## 식별과 해석 범위
|
|
|
|
Source의 instance·label·step·point는 내부 배열 index나 equation 번호와 다르다.
|
|
다른 instance의 같은 label을 합치거나 결과 위치가 가깝다는 이유로 대응시키지 않는다.
|
|
입력 표기 `S4/S4R`은 내부 MITC4로 연결되며 Abaqus 적분법 선택을 뜻하지 않는다.
|
|
`LANCZOS` 표기를 수용해도 실제 고유치 계산은 MKL FEAST다.
|
|
|
|
현재 구조해석은 B33 beam, MITC4 shell, C3D8 solid의 승인된 procedure별 subset이다.
|
|
열해석은 DS4 shell의 단일 비연성 과도 열전달이다. 지원하지 않는 조합은 명시적으로
|
|
실패하며 가장 비슷한 요소·하중·물성으로 바꾸지 않는다. 현재 subset 밖이라는 사실은
|
|
향후 기능 추가를 영구적으로 금지하는 물리 법칙이 아니다.
|
|
사용자가 일관된 단위를 제공한다. 입력 숫자에서 SI 단위를 추정하거나 자동 변환하지 않는다.
|
|
|
|
## 평형과 상태 전이
|
|
|
|
선형 정적은 지정값 기여를 포함한 `Kff*df=Ff-Kfc*dc`를 풀고 전체 해를 복원한다.
|
|
반력은 같은 full residual `K*d-F`의 constrained 성분이다. Free residual은 평형 검증량이며
|
|
이를 반력으로 비교하지 않는다. 모든 DOF가 지정된 유효 모델의 빈 free system은 허용한다.
|
|
자유 방정식의 특이성을 penalty나 임의 대각 성분으로 없애지 않는다.
|
|
|
|
비선형·동해석에서 같은 trial의 geometry·힘·접선을 사용한다. 수렴·finite·복구·해당
|
|
procedure의 검증을 모두 통과한 candidate만 accepted state와 history를 갱신한다.
|
|
실패한 trial은 accepted frame이 아니며 일부 cache·chart·rate만 다음 증분에 남기지 않는다.
|
|
전체 해석 또는 결과 저장이 실패하면 기존 최종 HDF5를 보존한다.
|
|
|
|
## 요소·하중별 구분
|
|
|
|
- B33는 작은 변형·회전의 직선 Euler beam이다. Endpoint outward action과
|
|
positive-local-x 단면력은 부호·위치가 다르며 공유 node에서 평균하지 않는다.
|
|
- MITC4의 physical 응답과 numerical drilling 안정화는 별도다. Drilling energy를
|
|
physical stress로 복구하지 않고 artificial inertia로 질량 영공간을 없애지 않는다.
|
|
Centered shell의 막력 계수는 두께에, 굽힘 계수는 두께 세제곱에 비례한다.
|
|
- Shell 정적 압력은 `SPOS=+1`, `SNEG=-1`일 때 oriented area vector `a`에 대해
|
|
`-lambda*p*s*a`다. 양의 압력은 선택한 면의 외향 법선 반대 방향이다. 선형은 reference,
|
|
비선형은 current geometry를 쓰고 Newton tangent는 `Kint-dFext/dq`다. 비대칭 항을 버리지 않는다.
|
|
같은 side의 중복 facet은 경고 후 하나로 처리하고 양쪽 side 충돌은 실패한다.
|
|
중복 DSLOAD 행은 각각 더한다.
|
|
- Hex8은 점별 deviatoric energy와 volume-weighted mean volumetric energy를 사용한다.
|
|
이를 center 값·unweighted mean·Fbar로 대체하지 않는다. 질량은 BC 축소 전 reference
|
|
consistent matrix의 row-sum이며 warped 요소의 node별 값을 `rho*V/8`로 통일하지 않는다.
|
|
- Shell 고유치의 finite 공간은 실제 BC를 적용한 뒤 analytic mass null과 free 공간의
|
|
교집합을 제거하여 만든다. Partial rotational BC를 full clamp로 바꾸지 않는다.
|
|
Interval 안의 전체 반환 고유쌍을 검증한 뒤 요청한 lowest N만 공개한다. N 밖의 실패를 버리지 않는다.
|
|
- 현재 shell HHT는 nodal-lumped-kinetic 질량과 reduced-coordinate 적분을 사용한다.
|
|
Physical acceleration, 공개 auxiliary acceleration, private 적분 이력은 서로 다르다.
|
|
공개 결과의 rate 조합만으로 private history나 restart를 재구성하지 않는다.
|
|
- Hex8 HHT의 high+low 상태는 다음 accepted state까지 보존한다. 저장되는 F64는 전체 값의
|
|
반올림 관측값이며 이것을 내부 전체 상태와 같다고 가정하지 않는다.
|
|
- DS4는 node당 다섯 두께 온도점을 결합한다. Consistent capacity와 Backward Euler를
|
|
사용하며 음수 온도를 clamp하지 않는다. Raw 초기 온도를 보존하고 지정온도는 첫 양의
|
|
시점부터 적용한다. 반력은 열저장까지 포함한 full residual의 constrained projection이다.
|
|
중앙면 양쪽 flux trace는 서로 다른 위치이며 평균하지 않는다.
|
|
|
|
## MITC4 drilling의 선택과 인공 모멘트
|
|
|
|
현재 모델 전체는 한 코드 설정으로 직접 초기 director 스프링 또는 기존 상대 비틀림을
|
|
선택한다. 기본값은 직접 스프링이며 선형·비선형 정적·정적 pressure·frequency·HHT에
|
|
같이 적용한다. Beam·Hex8·DS4에는 적용하지 않는다. Runtime·section별 선택은 현재 없다.
|
|
|
|
직접 방식에서 `d0`는 초기 global 단위 director, `phi`는 전체 global rotation vector다.
|
|
`gamma=d0·phi`, `Udrill=0.5*kd*sum(gamma²)`, `frot=kd*gamma*d0`,
|
|
`Krot=kd*d0*d0^T`다. 병진·절점 간 coupling·drilling force의2차 방향미분은 exact zero다.
|
|
Kd는 BC 전 초기 physical rotary 대각8개의 overflow 방지 평균에 `1e-3`을 곱해 고정한다.
|
|
Zero 대각도 평균에 포함하며 음수/nonfinite·전부 zero·nonpositive kd는 실패다.
|
|
Floor·density 치환·trial 재조정은 없다. 유한 강체 회전의 인공 에너지·모멘트는 허용한다.
|
|
|
|
직접 HHT hidden 식은 실제 관성의 normalized null `n(phi)`에 대해
|
|
`sum_e kd*gamma_ei*(n·d_ei0)-n·Fext_rot`이며 같은 trial의 고차 미분을 사용한다.
|
|
공유 node의 외력 항은 한 번만 뺀다. 일정 drilling 접선이 null의 고차 미분을 없애지는 않는다.
|
|
기존 방식의 계산은 polar1·관성3차 근사와 기존 판정을 보존하며 정확도 실패를 자동 수정하지 않는다.
|
|
|
|
내부 spatial `Mdrill=sum[x cross fdrill_trans+Jl(phi)^(-T)*fdrill_rot]`를 source 순서로
|
|
누적한다. 선형은 reference 위치/작은 회전, 비선형/HHT는 현재 위치/기존 SO(3) 변환이다.
|
|
기존 raw 평형은 그대로이고 보정 평형은 `[raw_force,raw_moment-Mdrill]`다.
|
|
직접 방식의 기존 전역 gate만 보정값을 사용하고 기존 방식은 raw를 사용한다.
|
|
기존 scale·exact-zero·허용치는 유지하며 인공 모멘트를 분모에 더하지 않는다.
|
|
비선형 정적의 전역 수치 gate는 기존 reference 비교기에 있으며 procedure에 새 gate를 만들지 않는다.
|
|
Marker 없는 옛 결과의 방식은 미상이다. 선형/HHT 변위 비교기에는 새 평형 수치 family를 만들지 않는다.
|
|
|
|
## 외부 수치 비교
|
|
|
|
먼저 source identity·row 집합·component·schema·단위·좌표·위치와 finite 여부를 검사한다.
|
|
Missing·extra·duplicate·NaN·Inf는 허용치 계산 전 실패다. Warning-only 비교에도 이 검사는 필수다.
|
|
|
|
Family는 같은 case·step/frame·논리 물리량·단위 차원·좌표계·판정 영향으로 묶는다.
|
|
Reference만으로 `S=max(abs(r_i))`, `B=0.01*S`를 구한다.
|
|
`abs(r_i)<=B`인 행은 `abs(f_i-r_i)<=B`, 나머지는 상대오차 `<=0.05`를 요구한다.
|
|
모든 행 조건과 `sqrt(mean((f-r)^2))/S<=0.01`을 함께 만족해야 한다.
|
|
`S=0`이면 FESA 값도 모두 exact zero여야 한다. 별도 absolute floor나 `max(1,S)`는 없다.
|
|
|
|
MITC4 정적·비선형·shell HHT의 U는 blocking, UR의 수치 차이는 warning-only다.
|
|
Review-only RF/RM이나 외부 비교 대상이 아닌 stress를 통과로 집계하지 않는다.
|
|
Hex8 정적 U·constrained RF·점별 S는 각각 blocking이며 free RF를 residual과 비교하지 않는다.
|
|
|
|
2026-09-10 승인된 `mitc4-eigen-first-implementation`만 source modal frame별 singleton
|
|
Value의 행 상대오차와 RMS를 각각 5%로 검사한다. Near-zero·zero-scale·사전검사와 내부
|
|
고유쌍 residual·정규화·직교성 `1e-10`은 유지한다. 이 예외를 Hex8 고유치에 확대하지 않는다.
|
|
기존 thermal NT11 비교는 불일치를 보존하는 diagnostic/nonblocking이며 외부 수치 PASS가 아니다.
|
|
|
|
내부 평형 허용치를 하나로 통합하지 않는다. 선형 정적 normalized free residual과
|
|
force/moment balance는 `1e-10`이다. 비선형 shell 정적 accepted free residual은 matching
|
|
external scale이 nonzero면 상대 `1e-2`, exact-zero면 force 또는 force-length 차원의
|
|
absolute `1e-3`이고 factor-one 전역 force/moment balance는 각각 normalized `1e-8`이다.
|
|
HHT의 잔차·시간수렴, thermal 잔차 인증은 해당 물리량과 산술 의미를 보존하여 별도로 판정한다.
|