Files
FESADev/docs/abaqus-tolerance/reference-displacement-comparison.md
T
KOKO\Mimi 86b740eebf docs(tolerance): 변위 검증 수용과 보류 검사 및 최종 비교 기록
사용자 후속 결정에 따라 이번 실험을 변위 검증 통과와 실패10개 보류로 수용한다.
기존 전체 검사 FAIL/SKIP과 수치 기준을 보존한다.
전체101프레임 q/v/a/A/energy 차이와 관측 시간·outer 횟수를 추가한다.
공식 성능 조건·전체 비용·시간 정확도 미확보는 후속 과제로 남긴다.
문서만 변경: source450/reference34 hash 불변, 로컬 링크87개와 정적 검사 통과.
2026-10-19 17:11:49 +09:00

7.4 KiB
Raw Blame History

Reference 모델 변위 비교

비교일: 2026-10-19. 대상 source HEAD: 626f7da880001fcae2e3280e9d43a2772ce79ae6. 정식 변위 reference가 있는 8개 모델 중 8개 U 비교 통과다. 이는 변위 reference 비교 결과이며, 기존 물리 검사 10개 실패의 해결이나 후보 채택을 뜻하지 않는다. 후속 사용자 승인으로 이 변위 결과를 이번 실험의 검증 통과로 수용하고 실패10개는 보류했다. 결정과 적용 범위를 따른다.

빌드와 실행 시간

최종 표는 모두 MSVC x64 Release, 개발용 HHT probe OFF 실행 결과다. 기존 Debug 정적 결과는 사전 확인에만 사용했고, beam·shell·shellNL은 이번에 같은 Release EXE로 새로 실행했다. MITC4 HHT도 이번에 정식 입력의 100증분 전체를 새 작업 복사본에서 실행했다. CLI와 정식 HHT 비교기 모두 exit 0이다. 양의 100증분 중 71개는 Newton 2회, 29개는 1회로 수렴했으며 로그의 실제 정책은 abaqus2025-field-on-fesa-v1이다. Hex8 네 모델은 T7에서 실행한 Release 결과를 재사용했다. 실행 당시 report·HDF5·입력·reference hash와 현재 source/build/test/script 450개 및 runtime 9개 hash를 대조했으며 변경이 없었다.

Release 빌드 명령은 /p:Configuration=Release /p:Platform=x64 /p:FesaHhtDevelopmentProbe=false다. 실제 compiler 기록 102개 소스의 /O2, NDEBUG, /MD를 확인했다. 링커의 /DEBUG는 PDB 생성 옵션이며 Debug 컴파일 구성을 의미하지 않는다. EXE SHA-256: 449196eb79efab3c62b8dac4b73c3c76e97ec76f6a77f9d80ce1ee5c8c1f0cfa.

시간은 perf_counter()로 측정한 FESA CLI 프로세스의 wall time이다. 입력 읽기·조립·풀이·결과 저장을 포함하고, 빌드·비교 스크립트 실행 시간은 제외한다. 모델별 1회 실행이며 반복 측정·기준 실행과의 통제된 성능 비교가 아니므로 speedup으로 해석하지 않는다. 서로 다른 시점의 Hex8 시간도 구분했다.

변위 결과

RMS는 각 프레임의 U1·U2·U3 전체 비교 scalar 오차 RMS를 같은 프레임의 최대 절대 reference 변위로 나눈 값이다. 아래는 프레임별 정규화 RMS의 최댓값이며, 프레임을 합친 RMS가 아니다. 최대 절대오차는 모든 비교 프레임·절점·병진 성분에서 찾았다. 길이는 입력의 일관 단위이며 HDF5가 user-consistent-unspecified이므로 임의로 mm 또는 m를 붙이지 않았다.

모델 빌드 절점 × 프레임 최악 정규화 RMS (%) 최대 절대오차 CLI 시간 (초) U 판정
cantilever beam (B33) Release 11 × 1 8.4596232e-07 5.33322917e-10 0.148 PASS
shell (MITC4, 선형 정적) Release 49 × 1 0.10332757 1.90378535e-07 0.182 PASS
shellNL (MITC4, 비선형 정적) Release 49 × 1 0.10332757 1.90378553e-07 1.000 PASS
Hex8 선형 정적 Release 442 × 1 9.3179458e-07 6.09626121e-11 0.674 PASS
Hex8 비선형 정적 Release 442 × 1 2.1699132e-05 9.83246600e-10 1.570 PASS
Hex8 선형 동적 Release 442 × 101 3.6188213e-05 1.17034536e-09 57.675 PASS
Hex8 비선형 동적 Release 442 × 101 0.0002155586 7.77901169e-09 114.651 PASS
MITC4 HHT 비선형 동적 Release 9 × 101 0.22824245 3.09203705e-07 5662.145 PASS

최대 절대오차의 위치

Abaqus와 FESA 값은 같은 source instance·node label·성분·증분에 해당한다.

모델 증분 절점 성분 Abaqus FESA 절대오차
cantilever beam (B33) 1 11 U3 -1.9047627200e-02 -1.9047626667e-02 5.33322917e-10
shell (MITC4, 선형 정적) 1 2 U3 -2.3740820300e-05 -2.3550441765e-05 1.90378535e-07
shellNL (MITC4, 비선형 정적) 10 2 U3 -2.3740820300e-05 -2.3550441747e-05 1.90378553e-07
Hex8 선형 정적 10 43 U2 1.2031230100e-03 1.2031230710e-03 6.09626121e-11
Hex8 비선형 정적 10 305 U3 1.3131889300e-06 1.3122056834e-06 9.83246600e-10
Hex8 선형 동적 7 143 U1 2.0765191900e-03 2.0765203603e-03 1.17034536e-09
Hex8 비선형 동적 30 8 U2 1.8255165800e-03 1.8255088010e-03 7.77901169e-09
MITC4 HHT 비선형 동적 1 2 U3 -4.9189598900e-05 -4.8880395195e-05 3.09203705e-07

판정 기준과 비교 범위

  • 기존 공통 reference 정책을 유지했다. 프레임별 S=max(abs(U_reference)), near-zero 경계 0.01*S다. Near-zero 행은 절대오차 <=0.01*S, 그 밖의 행은 상대오차 <=5%, family 정규화 RMS는 <=1%를 모두 만족해야 한다. S=0이면 정확한 0을 요구한다. Local 검사에 승인한 1e-3을 외부 비교 허용치로 사용하지 않았다.
  • Source instance·node label·프레임을 고정해 대응하고 누락·중복·nonfinite·입력 identity를 먼저 확인했다. beam 11절점, shell/shellNL 49절점, Hex8 442절점의 전체 U1·U2·U3를 비교했다.
  • MITC4 HHT는 HDF5의 전체 729절점·101프레임과 finite/inventory를 사전 검사했지만, Abaqus CSV가 제공하는 9절점(2, 21, 22, 69, 70, 165, 309, 442, 586)의 101프레임, 총 2,727개 U scalar만 외부 값과 비교한다. 729절점 전체에 대한 Abaqus 변위 일치를 주장하지 않는다.
  • shellNL 정적은 load factor 1의 accepted frame을 찾아 Abaqus 증분 10과 대응했다. HDF5 frame index 9를 증분 9로 오인하지 않았다.
  • Hex8 동적과 MITC4 HHT는 초기 프레임을 포함한 101프레임이다. 정적 CSV는 최종 상태 1프레임 비교다.
  • 이번 표는 병진 U만 다룬다. Shell 회전 UR은 기존 계약의 warning-only 분류를 유지한다. MITC4 HHT의 UR 실패 family는 100개 프레임이며 warning은 200건이다.
  • 고유치 모델(shell 및 Hex8)은 모드 정규화에 따라 변위 크기가 달라 절대 물리 변위 비교 대상에 넣지 않았다. shell-thermal은 NT11 reference만 있어 변위 비교를 수행하지 않았다.
  • reference/temp는 사용하지 않았다. 정식 자료가 없는 추가 mesh/pressure 변형을 통과로 세지 않았다.
  • 원본 reference 34개 파일의 실행 전후 SHA-256이 동일했다. 원본 입력·CSV·결과를 수정하지 않았다.

근거 파일

Raw evidence는 로컬 ignored .build에 보존했다. 이 문서 추가로 C++ 코드·수치 기준을 변경하거나 전체 검증을 다시 실행하지 않았다.