docs(beam-reference-qualification): define dual validation gates

This commit is contained in:
KOKO\Mimi
2026-08-03 01:08:54 +09:00
parent 02e2994c5b
commit b68f6ee143
3 changed files with 126 additions and 32 deletions
+40 -1
View File
@@ -257,7 +257,7 @@ flat `Domain`으로 정규화한다. 외부 entity는 `(instance name, part-loca
## ADR-015: 명시적 물리량 선택 기반 CSV 검증
**상태:** Accepted
**상태:** Superseded by ADR-017
**상황:** 현재 캔틸레버 reference에는 변위와 반력만 있고 per-model metadata는
요구하지 않는다. 요소 내력과 응력 비교 기능은 해당 CSV가 추가되기 전에 구현해야
@@ -297,3 +297,42 @@ toolset을 명시한다. CMake, CMake Presets, CTest 및 GoogleTest/GoogleMock
보장 대상이 아니다.
- 컴파일러 갱신에 따른 경고와 표준 라이브러리 동작은 전체 Debug/Release 검증에서
다시 확인해야 한다.
## ADR-017: FESA 정식화 적합성과 Abaqus 결과 상관성의 이중 gate
**상태:** Accepted
**상황:** FESA의 2절점 Timoshenko Beam은 선택적 감차적분과 `SCF=0`을 사용하고
Abaqus B31의 slenderness compensation을 구현하지 않는다. 따라서 `SCF=0.25`
Abaqus 결과에 기본 상대오차 \(10^{-5}\)를 적용하면 FESA 정식화 결함과 의도된
정식화 차이를 구분할 수 없다. 현재 캔틸레버 reference에는 변위, 반력 및 요소
단면력 CSV가 있다.
**결정:**
- FESA 정식화 적합성 gate는 해석해, 에너지, 강체 mode, 평형 및 엄격한 tolerance로
FESA 자체 정식화를 검증한다.
- Abaqus 결과 상관성 gate는 원본 Abaqus 입력과 CSV를 변경하지 않는다. FESA는
동일한 기하·재료·하중과 명시적 전단강성을 사용하되 `SCF=0`인 별도 입력을
production parser와 solver로 해석한다.
- 상관성 gate는 요청된 모든 entity와 component가 유일하게 매칭되고 유한한
component별 RMSE 및 Relative L2가 생성되면 evaluable이다. 서로 다른 정식화에
기본 상대오차 \(10^{-5}\) pass/fail을 적용하지 않는다.
- Relative L2의 reference norm이 영에 가까우면 해당 component의 characteristic
absolute scale norm을 분모 하한으로 사용한다.
- 병진과 회전, 힘과 모멘트처럼 단위가 다른 component를 하나의 RMSE 또는 norm에
혼합하지 않는다.
- Abaqus의 \((\mathbf t,\mathbf n_1,\mathbf n_2)\)와 FESA의
\((\mathbf e_x,\mathbf e_y,\mathbf e_z)\)를 각각 일치시킨 모델에서 Abaqus
`SF1,SF2,SF3,SM1,SM2,SM3`은 FESA \(N,V_y,V_z,T,M_y,M_z\) 순서로
`SF1,SF3,SF2,SM3,SM1,SM2`를 사용한다.
- 현재 캔틸레버 상관성 요청은 변위, 반력 및 요소 단면력을 명시한다. 요청하지 않은
응력은 통과로 보고하지 않는다.
**결과와 트레이드오프:**
- FESA 구현 회귀와 상용 solver와의 모델 상관성을 서로 오인하지 않는다.
- Abaqus 원본과 FESA 투영 입력을 함께 관리해야 하며 formulation 차이를
`docs/VALIDATION.md`에 기록해야 한다.
- 첫 상관성 보고서는 metric을 제시하지만 관측값에 맞춘 acceptance envelope를
만들지 않는다. 후속 envelope에는 해석적 또는 mesh study 근거가 필요하다.
+40 -13
View File
@@ -163,8 +163,8 @@ HDF5 결과는 다음 정보를 함께 갖는 자기완결형 파일이어야
- 여러 재료·단면과 중첩 집합
4. Reference 테스트
- Abaqus/Standard 2024 B31 결과
- 현재 캔틸레버의 변위 반력
- 요소 내력 및 요소 절점 단면 도심 응력 비교 계약의 synthetic CSV 검증
- 현재 캔틸레버의 변위, 반력 및 요소 단면력
- 요소 절점 단면 도심 응력 비교 계약의 synthetic CSV 검증
### 5.2 골든 데이터
@@ -174,8 +174,15 @@ Abaqus는 CI나 Harness에서 자동 실행하지 않는다. 별도 Abaqus 2024
비교 실행은 물리량과 해당 CSV 경로를 명시한다. 요청한 파일이 없으면 실패하고,
요청하지 않은 물리량은 통과로 보고하지 않는다. 현재 `reference/cantilever beam`
샘플은 변위 반력 비교한다. 요소 내력과 응력 CSV가 추가되기 전까지 해당
reader와 비교 kernel은 synthetic CSV로 검증한다.
샘플은 변위, 반력 및 요소 단면력을 비교한다. 요소 응력 CSV가 추가되기 전까지
해당 reader와 비교 kernel은 synthetic CSV로 검증한다.
FESA 정식화 적합성과 Abaqus 결과 상관성은 별도 gate로 운영한다. FESA 적합성
gate는 `SCF=0`, 선택적 감차적분 및 문서화된 FESA 정식화를 해석해와 physics
invariant로 엄격히 검증한다. Abaqus 상관성 gate는 `SCF=0.25`를 포함할 수 있는
원본 Abaqus 모델과 CSV를 보존하고, 동일한 기하·재료·하중에 `SCF=0`을 적용한
별도 FESA 입력을 production pipeline으로 해석해 결과 차이를 정량화한다. 상관성
gate는 서로 다른 정식화의 수치 일치를 주장하지 않는다.
CSV 식별 및 값 열:
@@ -185,17 +192,35 @@ CSV 식별 및 값 열:
`SF-SF1..SF-SF3`, `SM-SM1..SM-SM3`
- 요소 응력: `Part Instance Name`, `Element Label`, `Node Label`, `Sxx`
단일 Instance에서는 `Part Instance Name` 열을 생략할 수 있다. 내력은
`SF1,SF2,SF3,SM1,SM2,SM3`을 각각 \(N,V_y,V_z,T,M_y,M_z\)로 비교한다.
응력은 요소 절점의 단면 도심값 \(\sigma_{xx}=N/A\)를 비교한다.
단일 Instance에서는 `Part Instance Name` 열을 생략할 수 있다. Abaqus Beam의
단면축 \((\mathbf n_1,\mathbf n_2)\)를 FESA의 \((\mathbf e_y,\mathbf e_z)\)와
일치시킨 입력에서 요소 내력은 Abaqus CSV 순서를
`SF1,SF3,SF2,SM3,SM1,SM2`로 재배열해 FESA의
\(N,V_y,V_z,T,M_y,M_z\)와 비교한다. 응력은 요소 절점의 단면 도심값
\(\sigma_{xx}=N/A\)를 비교한다.
### 5.3 허용오차
- 단위·정식화 테스트는 정규화된 엄격한 tolerance를 사용한다.
- Abaqus 비교 기본 상대오차는 \(10^{-5}\)로 한다.
- 영에 가까운 결과는 특성 길이, 하중 및 응력에 기반한 절대오차를 함께 사용한다.
- formulation 또는 output 위치 차이로 별도 tolerance가 필요하면 comparison
test 설정과 `docs/VALIDATION.md`에 근거를 기록한다.
- FESA 단위·정식화 적합성 gate는 정규화된 엄격한 tolerance를 사용한다.
- 정식화가 일치하는 reference 비교 기본 상대오차는 \(10^{-5}\)로 한다.
- Abaqus B31과 FESA Beam의 정식화가 다른 상관성 gate는 component별 RMSE와
Relative L2를 보고한다. 물리량과 component가 다른 값을 하나의 norm으로
혼합하지 않는다.
- component \(c\)의 값 쌍을 \((F_{ic},A_{ic})\), characteristic absolute scale을
\(s_c\)라 하면
\[
\operatorname{RMSE}_c=
\sqrt{\frac{1}{n}\sum_i(F_{ic}-A_{ic})^2},\qquad
\operatorname{RelativeL2}_c=
\frac{\sqrt{\sum_i(F_{ic}-A_{ic})^2}}
{\max\left(\sqrt{\sum_iA_{ic}^2},\sqrt{n}s_c\right)}.
\]
- Abaqus 상관성 gate의 성공은 요청된 모든 entity/component가 매칭되고 유한한
metric이 생성됨을 뜻한다. 관측된 단일 샘플에 맞춘 임의 pass/fail tolerance는
두지 않는다. 이후 acceptance envelope를 추가하려면 해석적 또는 mesh study
근거와 함께 `docs/VALIDATION.md`에 사전 기록한다.
## 6. 개발 워크플로우
@@ -235,6 +260,8 @@ CSV 식별 및 값 열:
- 테스트 0개 수집이 아님을 확인
- 전체 입력-해석-출력 통합 테스트 통과
- physics sanity와 평형 잔차 기준 통과
- 현재 Abaqus 2024 변위·반력 골든 결과의 tolerance 통과
- FESA Beam 정식화 적합성 gate의 엄격한 tolerance 통과
- 현재 Abaqus 2024 변위·반력·요소 단면력과의 component별 RMSE 및 Relative L2
상관성 보고서 생성
- 요소 내력·도심 응력 CSV adapter와 비교 kernel의 synthetic 검증 통과
- HDF5 schema, 입력 부분집합, 정식화 및 검증 보고서 제공