Files
FESADev/docs/hex8-structural-analysis/lessons.md
T

3.6 KiB

Hex8 계산 정밀도와 검증에서 확인한 점

현재 완료 여부는 PRD의 checklist가 소유한다. 아래 기록은 정식화와 수치 기준을 바꾸지 않고 계산 정밀도를 개선한 근거다. 내부 검사 통과와 원본 동적 모델의 수렴은 구분한다.

작은 변형률에서 단위행렬을 빼지 않는다

E=(F^T F-I)/2를 그대로 계산하면 작은 변형률에서 유효 숫자를 잃는다. H=grad(u)로부터 E=sym(H)+H^T H/2를 계산하면 같은 Green 변형률을 단위행렬 차감 없이 구한다. StVK 재료식, 에너지, Cauchy 응력과 접선은 유지한다.

탄성계수 2.1e11, Poisson 비 0.3인 직육면체의 signed affine stretch ±1e-10, ±1e-8에서 독립 응력·에너지·면 traction 적분으로 기존 오류를 재현했다. 수정 7d191036은 요소 검사 27개와 독립 수치 검토를 통과했다. 비선형 동적 원본의 첫 증분 잔차 비율은 약 1.42e-5에서 6.02e-10으로 줄었지만, 승인된 1e-10 기준은 여전히 충족하지 못했다.

곱셈, 합산, 변위 차감의 오차를 각각 보존한다

강체 병진을 제거한 상대변위로 내력을 계산해도 큰 항들이 상쇄되는 행에서는 계산 순서의 영향이 남는다. 원본 선형 동적 사례의 두 요소 행에서 local 곱의 절댓값 합은 각각 약 3.63e6이었고, FMA 곱셈 잔여와 보상 합산으로 복구한 내력 차이의 합은 8.20e-10이었다. 당시 전체 잔차 9.06e-10과 같은 크기였다.

수정 c50e68e는 캐시된 K0를 그대로 두고 상대변위와의 곱셈·합산을 보상한다. 수정 8153796은 절점 변위 기울기 및 비선형 sum(w*P*G)에도 같은 보상을 적용한다. 각각 관련 검사 60개와 독립 수치 검토를 통과했으나 동적 원본은 실패했다. 기울기·내력·에너지·접선은 같은 trial의 물리식을 사용한다.

작은 절점 변위의 갱신은 입력 double에서 표현 가능해도, 더 큰 기준 절점 변위를 뺀 상대변위에서는 소실될 수 있다. 수정 8ccd1b2는 TwoDiff로 차감의 잔여를 보존하고, 상대변위의 두 부분을 내력·기울기·선형 에너지 계산에 함께 사용한다. 독립 정확 유리수 검산의 유한 차이 125,039쌍에서 불일치가 없었고, 관련 native 검사 60개와 독립 수치 검토도 통과했다. 이 검산은 native solver 검증을 대체하지 않으며, 입력 자체의 반올림으로 잃은 값을 복원한다는 의미도 아니다.

수렴 정체와 허용치 변경을 구분한다

위 수정 후 선형 동적 원본은 첫 증분을 5회 solve, 잔차 비율 9.54e-11로 수용했다. 두 번째 증분은 100회에서 1.01993e-10으로 실패했다. 실패 좌표의 fresh correction은 약 -0.496 ULP여서 저장된 변위를 바꾸지 못했다. 비선형 원본도 첫 증분에서 약 1.35e-10으로 실패했다.

이는 전체 원본 검증 완료의 근거가 아니다. 물리 잔차의 component별 원래 Si, correction, update 및 max100 기준을 유지하면서 표현 가능한 변위에서 추가 정제가 가능한지 확인해야 한다. 예측 잔차는 trial 선택에만 사용할 수 있고, 수용은 실제 rates·형상·내력·복구·모든 free 성분의 원래 판정으로 수행해야 한다. 원본·허용치를 보정하거나 실패한 candidate를 accepted history에 넣지 않는다.

명령·native exit·실패 로그는 해당 source와 함께 보존한다. 최종 통합 및 외부 비교 결과는 이후 verification 기록에서 이 개발 중 실패와 구분한다.