| 검증 및 확인 Verification & Validation | |
|---|---|
| 약칭 | V&V |
| 분야 | 수치해석 × 시뮬레이션 신뢰성 |
| 핵심 질문 | "방정식을 맞게 풀었나 / 맞는 방정식을 풀었나" |
| 대표 표준 | ASME V&V 20, AIAA G-077 |
1. 개요[편집]
검증 및 확인(Verification and Validation, V&V)은 수치 시뮬레이션의 결과를 얼마나 믿어도 되는지를 체계적으로 따지는 방법론이다. 딱 두 문장으로 요약된다. 검증(verification)은 “방정식을 제대로 풀었는가(solving the equations right)“를 묻고, 확인(validation)은 “제대로 된 방정식을 풀었는가(solving the right equations)“를 묻는다.1 전자는 수학의 문제이고 후자는 물리의 문제다.
전산유체역학이든 구조해석이든, 화려한 컬러 컨투어를 뽑아냈다고 해서 그게 현실을 맞힌다는 보장은 어디에도 없다. 코드에 버그가 있을 수도, 격자가 너무 성길 수도, 애초에 물리 모델이 틀렸을 수도 있다. V&V는 이 세 가지 실패 모드를 각각 다른 잣대로 잡아내는 규율이다. “일단 돌려서 그림 나왔으니 됐다”는 태도의 정반대편에 서 있는 개념.
2. 검증 vs 확인 — 헷갈리면 안 되는 구분[편집]
이 둘을 섞어 쓰면 V&V를 안다고 할 수 없다. 표로 못 박아두자.
| 검증(Verification) | 확인(Validation) | |
|---|---|---|
| 묻는 것 | 방정식을 맞게 풀었나 | 맞는 방정식을 풀었나 |
| 상대 | 수학 (정확해·수렴) | 물리 (실험 데이터) |
| 비교 대상 | 해석해, 제조해법 | 실험·관측 결과 |
| 잡아내는 것 | 코드 버그, 이산화 오차 | 모델의 부적절함 |
순서도 중요하다. 검증이 먼저다. 코드가 방정식을 애초에 못 풀고 있는데 실험과 비교(확인)해봐야 무의미하다. 우연히 두 개의 오류가 상쇄되어 실험과 맞아버리면, 그건 신뢰가 아니라 재앙의 예약이다.2
3. 코드 검증과 솔루션 검증[편집]
검증은 다시 두 층위로 나뉜다.
3.1. 코드 검증 (Code Verification)[편집]
소스코드가 지배 방정식을 올바르게 이산화·구현했는지 확인하는 단계다. 핵심 도구는 관측 수렴차수(observed order of accuracy) 측정이다. 격자를 체계적으로 세분하며 오차가 이론상의 차수(예: 2차 정확도면 격자 간격의 제곱)로 줄어드는지 본다. 코드가 이론 차수를 재현하면 이산화가 제대로 구현된 것이고, 차수가 안 나오면 어딘가에 버그가 있다는 신호다.
3.2. 솔루션 검증 (Solution Verification)[편집]
특정 문제의 특정 계산에서 수치 오차의 크기를 정량화하는 단계다. 여기서 등장하는 것이 전산유체역학 실무의 필수품, **격자 수렴 지수(Grid Convergence Index, GCI)**다. 서로 다른 격자 해상도에서 얻은 해를 리처드슨 외삽(Richardson extrapolation)으로 처리해 이산화 오차의 불확도 범위를 추정한다. “격자를 무한히 촘촘하게 했을 때 값이 어디로 수렴하는가”를 유한한 계산으로 가늠하는 기술이다.
4. 제조해법(MMS) — 정답을 만들어서 채점하기[편집]
코드 검증의 골칫거리는 비교할 정확해가 없다는 것이다. 실제 문제엔 해석해가 거의 없다. 여기서 나온 천재적 발상이 **제조해법(Method of Manufactured Solutions, MMS)**이다.3
발상은 거꾸로다.
- 아무 매끄러운 함수(예: )를 정답이라고 선언한다.
- 이 함수를 지배 방정식에 대입한다. 그러면 등식이 안 맞고 잔여항(residual)이 남는다.
- 이 잔여항을 **인위적 소스항(source term)**으로 방정식 우변에 더해준다. 이제 그 함수는 수정된 방정식의 정확해가 된다.
- 코드에 이 소스항을 넣고 돌린 뒤, 코드가 뱉은 수치해를 내가 만든 “정답”과 비교한다.
- 격자를 세분하며 오차의 수렴차수를 측정한다.
정답을 알고 시험지를 만드는 격이라 채점이 완벽하다. 실제 물리와 무관해도 상관없다. 목적은 물리가 아니라 코드가 미분방정식을 맞게 이산화하는지 확인하는 것이니까. MMS는 CFD·구조해석 코드 검증의 사실상 표준 무기가 되었다.
5. 불확실성 정량화 (UQ)[편집]
확인 단계에서는 “시뮬레이션 값 X, 실험 값 Y, 그래서 이게 맞다는 거냐”를 판단해야 한다. 그런데 시뮬레이션에도, 실험에도 각자 오차·불확도가 있다. 이걸 무시하고 두 숫자만 비교하면 사이비다. **불확실성 정량화(Uncertainty Quantification, UQ)**는 입력 물성치·경계조건·모델 파라미터의 불확도가 출력에 어떻게 전파되는지를 정량적으로 추적한다.
UQ는 크게 두 종류의 불확실성을 구분한다.
- 우연적 불확실성(aleatory): 본질적 무작위성. 재료 물성의 산포, 제조 공차 등. 확률분포로 다룬다. 흔히 몬테카를로 방법으로 샘플링해 전파시킨다.
- 인식적 불확실성(epistemic): 지식 부족에서 오는 불확실성. 모델 형태를 모르거나 데이터가 부족한 경우. 자료를 더 모으면 줄어든다.
확인의 결론은 결국 “시뮬레이션과 실험의 차이가 두 불확도 범위 안에서 설명되는가”이다. 오차 막대끼리 겹치면 통과, 안 겹치면 모델을 의심한다.
6. 왜 이 짓을 하는가[편집]
- 시뮬레이션이 규제 인증·안전성 판단(항공기 인증, 원자로 해석, 의료기기)에 쓰이려면 V&V 문서가 법적으로 요구된다. 그림 예쁘게 뽑는 걸로는 인증이 안 난다.
- ASME V&V 20, 10 / AIAA G-077 같은 표준이 절차를 명문화해두었다. “우리 해석은 믿을 만합니다”를 감(感)이 아니라 문서로 증명하는 체계.
- 무엇보다, 검증 안 된 해석을 근거로 내린 설계 판단이 틀리면 사람이 다친다. V&V는 컬러풀한 컨투어와 실제 안전 사이의 유일한 다리다.4
7. 관련 문서[편집]
8. Footnotes[편집]
-
이 유명한 한 줄 요약은 보엔(Boehm)과 블랜차드(Blanchard)에게서 비롯되어 로체(Roache)의 CFD 검증 저술을 통해 이 바닥의 격언이 되었다. “Are we solving the equations right?” vs “Are we solving the right equations?” ↩
-
이걸 “오차 상쇄(error cancellation)“라 부른다. 격자가 성긴 오차와 모델의 오차가 우연히 반대 방향으로 나서 실험과 맞아버리는 현상. 격자를 촘촘히 했더니 오히려 실험에서 멀어지는 괴현상이 벌어지면 십중팔구 이 함정이다. ↩
-
정답을 미리 정해놓고 문제를 역설계한다는 점에서, 시험 문제를 답부터 만드는 것과 똑같다. 수치해석에서 몇 안 되는 “완벽한 채점” 방법이라 코드 개발자에게는 축복이다. ↩
-
그래서 진지한 해석 조직은 “검증되지 않은 결과는 결과가 아니다”를 표어로 건다. CFD 문서에서도 강조하지만, 무지개 컨투어의 아름다움과 그 값의 정확성은 아무 상관이 없다. ↩