1. 개요
| 유한체적법 Finite Volume Method | |
|---|---|
| 약칭 | FVM |
| 분야 | 수치해석 · 이산화 기법 |
| 핵심 아이디어 | 검사체적 적분 + 가우스 발산정리 |
| 주 사용처 | CFD 상용/오픈소스 코드 대부분 |
들어온 만큼 나간다. 아니면 쌓인다. 그게 전부다.
유한체적법(Finite Volume Method, FVM)은 해석 도메인을 유한 개의 검사체적(control volume)으로 분할하고, 지배 방정식을 각 검사체적에 대해 적분한 뒤 가우스 발산정리를 이용해 체적 적분을 면 플럭스(flux) 적분으로 변환하여 이산화하는 수치 기법이다. 미분방정식을 “점에서의 미분”이 아니라 “셀 경계를 드나드는 플럭스의 수지(收支)“로 다시 쓰는 것이 본질이며, 이 덕분에 보존 법칙을 다루는 전산유체역학과 궁합이 유난히 좋다. OpenFOAM, ANSYS Fluent, STAR-CCM+ 등 오늘날 산업용 CFD 코드의 절대다수가 FVM 기반이다.
2. 기본 원리
나비에-스토크스 방정식을 포함한 유체의 지배 방정식은 대부분 다음과 같은 일반 수송 방정식 형태로 쓸 수 있다.
FVM은 이 식을 미분한 채로 두지 않고, 검사체적 에 대해 적분한다. 이때 가우스 발산정리
를 적용하면 발산항들이 검사체적 표면 에서의 플럭스 적분으로 바뀐다.
즉 셀 내부의 총량의 시간 변화는 면을 통해 드나드는 대류 플럭스와 확산 플럭스, 그리고 내부 생성항의 합과 같다. 미분 연산이 전부 면 적분으로 넘어갔으므로, 남은 일은 각 면에서의 플럭스 를 셀 중심 값들로부터 어떻게 평가하느냐뿐이다. FVM의 온갖 도식(scheme) 논쟁은 결국 이 면 값 보간 문제로 수렴한다.
3. 보존성
FVM의 최대 세일즈 포인트. 인접한 두 셀이 공유하는 면에서, 한쪽 셀에서 나가는 플럭스는 부호만 뒤집혀 그대로 이웃 셀로 들어가는 플럭스가 된다. 따라서 도메인 전체를 합산하면 내부 면의 플럭스가 전부 상쇄되고(telescoping) 경계면의 플럭스만 남는다.
- 국소 보존(local conservation): 각 셀 단위로 질량·운동량·에너지 수지가 기계 정밀도 수준에서 정확히 맞는다. 격자가 아무리 거칠어도 성립한다.1
- 전역 보존(global conservation): 국소 보존의 자동 귀결. 도메인 전체의 수지는 경계 조건으로 들어오고 나가는 양으로만 결정된다.
이 성질은 충격파 같은 불연속 해를 다룰 때 특히 중요하다. 락스-벤드로프 정리에 따르면 일관된 보존형 도식이 수렴한다면 그 극한은 반드시 보존법칙의 약해(weak solution)이고, 따라서 랭킨-위고니오(Rankine–Hugoniot) 관계를 만족해 충격파의 전파 속도가 저절로 맞는다. 반대로 비보존형 기법은 격자를 아무리 줄여도 충격파 위치 자체가 틀린 값으로 수렴할 수 있다. 오차가 0으로 가지 않고 엉뚱한 답으로 수렴하는, 수치해석에서 가장 고약한 실패 모드다.
4. 대류항의 처리
확산항은 얌전한 타원형 성질 덕에 중앙차분으로 무난히 처리되지만, 대류항은 FVM 반세기 역사의 절반을 잡아먹은 골칫거리다. 면 값 를 셀 중심 값으로 보간하는 방식에 따라 성격이 갈린다.
4.1. 중앙차분 (Central Differencing)
양쪽 셀 중심 값의 선형 보간. 2차 정확도라 오차는 작지만, 셀 페클레 수 가 2를 넘는 대류 지배 유동에서 이산 계수의 부호가 뒤집혀 비물리적 진동(wiggle)을 일으킨다. 1차원 정상 대류-확산 문제에서 이면 중앙차분 해가 진동한다는 것은 손으로 유도되는 고전적 결과다. 해에 없어야 할 굴곡이 생기면 아무리 오차 차수가 높아도 소용없다.
4.2. 상류도식 (Upwind)
흐름이 오는 쪽(상류) 셀의 값을 그대로 면 값으로 쓰는 방식. 1차 상류도식은 어떤 상황에서도 진동 없이 유계(bounded)를 유지하는 대신, 절단오차의 선두항이 확산항과 똑같은 형태로 나타난다. 이것이 악명 높은 수치확산(numerical diffusion)이다. 면 값을 상류 셀 값으로 두면 만큼 값을 덜 쓰는 셈이고, 이 누락분이 이산식에서 확산항과 동일한 형태로 되살아난다. 유효 확산계수는 1차원에서 , 즉 짜리 가짜 확산을 공짜로 얹는 것과 같다. 흐름이 격자선과 비스듬할수록(사류, skew) 이 오차가 배가되어 해의 급격한 변화를 사정없이 뭉개버린다.2 안정성과 정확도의 트레이드오프를 보여주는 교과서적 사례.
5. 고차 도식
“진동 없이 2차 이상”을 향한 여정이다. 고두노프(Godunov) 정리에 따르면 선형 단조(monotone) 도식은 1차 정확도가 한계이므로3, 고차와 유계성을 동시에 얻으려면 해의 국소 거동에 따라 도식을 바꾸는 비선형 기법이 불가피하다.
- QUICK(Leonard, 1979): 상류 쪽 2개 + 하류 쪽 1개, 총 세 점을 지나는 2차 다항식으로 면 값을 보간한다. 면 값 보간 자체는 3차 정확도이지만 단조성이 보장되지 않아 급구배에서 오버슈트가 생기고, 뒤에 설명할 이유로 전체 도식의 차수는 보통 2차에 머문다.
- MUSCL(van Leer, 1979): 셀 내부에 기울기를 재구성해 면 양쪽의 좌·우 상태를 만들되, 기울기 제한자(slope limiter)로 새로운 극값 생성을 억제하는 접근. 이름이 곧 Monotone Upstream-centred Scheme for Conservation Laws 다.
- TVD(Total Variation Diminishing, Harten 1983): 해의 총변동 이 시간에 따라 증가하지 않도록 플럭스 제한자(minmod, van Leer, superbee 등)를 설계하는 틀. 매끄러운 영역에서는 고차, 불연속 근처에서는 1차로 자동 전환된다. 제한자가 만족해야 할 영역을 그림 하나로 정리한 것이 스위비(Sweby) 다이어그램이다.
압축성 유동에서는 여기에 리만 솔버를 결합해 면에서의 파동 구조까지 고려하는 것이 표준이다.
5.1. 왜 상용 코드는 2차에서 멈추는가
“QUICK 은 3차인데 왜 코드 전체는 2차인가”는 FVM 입문자가 반드시 한 번 걸리는 함정이다. FVM 에서 3차 이상을 실제로 얻으려면 세 가지를 동시에 지켜야 한다.
- 면 적분 구적: 를 면 중점 값 하나로 근사하는 중점법칙은 2차까지만 정확하다. 3차 이상을 원하면 면당 가우스 점이 2개 이상 필요하다.
- 셀 평균 ≠ 셀 중심 값: FVM 의 미지수는 엄밀히 말해 셀 평균인데, 이를 셀 중심 점값처럼 쓰는 순간 오차가 들어간다. 3차 이상에서는 둘을 명시적으로 변환해 줘야 한다.
- 체적 적분 구적: 생성항 역시 중점법칙이면 2차가 상한이다.
상용 코드는 셋 중 하나만 지키고 나머지를 생략하는 경우가 많다. 그래서 면 보간만 3차로 올려도 전체 수렴 차수는 2차로 주저앉는다. 비정렬 격자에서는 이 셋을 다 지키는 비용이 급격히 커져서, 고차가 필요하면 아예 불연속 갤러킨(DG)이나 스펙트럴 체적법 같은 다른 틀로 갈아타는 것이 현재의 정석이다.
6. 압력-속도 연성과 Rhie-Chow 보간
비압축성 유동의 FVM 구현에는 방정식 자체와 무관한 격자 문제가 하나 더 있다. 압력에는 독립된 시간 발전 방정식이 없어서 SIMPLE 알고리즘 계열로 연성을 풀어야 하는데, 속도와 압력을 같은 셀 중심에 나란히 두면(colocated 배치) 압력 구배를 이웃 셀 중심의 중앙차분 로 평가하게 된다. 이 식은 홀수 셀과 짝수 셀을 전혀 연결하지 않아, 압력장이 격자 한 칸 간격으로 진동하는 체커보드 해가 이산식을 완벽히 만족해 버린다. 진동하는 압력장이 방정식상 “정답”이 되는, 이산화가 만들어 낸 유령이다.
역사적 첫 처방은 하로우-웰치의 엇갈림 격자(staggered grid)로, 속도를 면 위에 두어 압력 구배가 인접한 두 셀만 보게 만든다. 정렬 격자에서는 깔끔하지만 비정렬·다면체 격자에서는 면마다 방향이 제각각이라 감당이 안 된다. 그래서 오늘날 표준은 Rhie-Chow 보간(1983)이다. 면 속도를 단순 선형 보간으로 두지 않고, 거기에 “선형 보간한 압력 구배”와 “면에서 직접 계산한 압력 구배”의 차이를 보정항으로 더한다.
두 구배가 같은 매끄러운 압력장에서는 보정항이 상쇄돼 사라지고, 체커보드처럼 진동하는 압력장에서만 살아나 진동을 감쇠시킨다. 사실상 압력에 대한 4차 미분 형태의 인공 감쇠이며, OpenFOAM · Fluent · STAR-CCM+ 등 colocated FVM 코드는 전부 이 계열의 보정을 쓴다. 단점도 분명하다 — 보정항에 시간 스텝과 완화계수가 섞여 들어가 정상해가 에 미세하게 의존하는 문제가 오래 지적됐고, 이를 없앤 변형들이 계속 제안되고 있다.4
7. 비정렬 격자와 산업 표준
FVM이 상용 CFD를 평정한 결정적 이유는 격자 유연성이다. 이산화에 필요한 것은 “셀의 체적, 면의 면적과 법선 벡터”뿐이므로, 셀이 육면체든 사면체든 임의 다면체든 알고리즘이 달라지지 않는다. 인덱스 구조 에 묶이는 유한차분법과 달리, 자동차 엔진룸 같은 복잡 형상에 비정렬 격자를 던져 넣어도 그대로 돌아간다는 뜻이다.
정리하면 상용 표준이 된 이유는 다음과 같다.
- 국소 보존성 — 유체 문제의 물리와 정합적
- 비정렬·다면체 격자 지원 — 실무 형상 대응력
- 플럭스 기반 정식화 — 경계 조건을 경계면 플럭스로 자연스럽게 부과
- 검사체적 수지라는 직관적 해석 — 디버깅과 검증이 상대적으로 수월
물론 공짜는 아니다. 앞에서 본 대로 비정렬 격자에서 3차 이상을 제대로 구현하는 비용이 커서 대부분의 상용 코드는 2차에 머물고, 극한의 정확도가 필요한 직접수치모사 연구가 여전히 유한차분법이나 스펙트럴 계열의 영역으로 남아 있다. 게다가 격자가 예뻐야 한다는 조건이 하나 더 붙는다.
8. 비정렬 격자의 실무적 함정
“면적과 법선만 있으면 된다”는 FVM 의 장점은 격자가 예쁠 때의 이야기다. 실제 형상 격자에서는 두 가지 기하학적 결함이 정확도를 갉아먹는다.
- 비직교성(non-orthogonality): 두 셀 중심을 잇는 벡터 와 면 법선 이 이루는 각도. 확산 플럭스 를 방향 차분만으로 쓸 수 없어, 직교 성분(암시적)과 비직교 보정 성분(명시적)으로 쪼개야 한다. 이 명시적 보정은 수렴을 늦추고, 각도가 70~80도를 넘으면 발산한다. 상용 코드가 격자 품질 리포트에 “최대 비직교각”을 찍어 주는 이유다.
- 왜도(skewness): 두 셀 중심을 잇는 선분이 면의 중심을 지나지 않는 정도. 면 값 보간에 1차 오차를 직접 집어넣는다.
격자가 다 했다는 CFD 격언의 절반은 이 두 지표에서 나온다. 같은 코드, 같은 도식, 같은 경계 조건인데 해가 갈리면 대개 물리가 아니라 격자 기하다.
9. 관련 문서
10. Footnotes
-
보존이 맞는다는 것과 해가 맞는다는 것은 별개의 문제다. 셀 10개짜리 격자도 질량 보존은 완벽하다. 다만 그 완벽하게 보존된 해가 현실과 아무 상관이 없을 뿐이다. ↩
-
수치확산이 난류 점성처럼 해를 부드럽게 만들어 주는 바람에 “공짜 난류 모델”이라는 자조 섞인 농담이 있다. 문제는 이 모델의 계수를 물리가 아니라 격자 크기가 정한다는 것. ↩
-
Godunov, S. K. (1959), Mat. Sbornik 47(89), 271-306. 정확히는 “2차 이상이면서 단조성을 유지하는 선형 도식은 존재하지 않는다”는 진술이라, 탈출구는 처음부터 비선형 도식뿐이었다. 아이러니하게도 도식 개발자들의 수십 년 노력에 “그 방향으로는 답이 없다”고 선고한 이 정리가, 비선형 제한자라는 우회로를 열어 현대 고해상도 도식의 출발점이 되었다. ↩
-
이 의존성은 정상상태 해석에서 특히 짜증난다. 물리적으로는 완전히 같은 문제인데 완화계수를 바꿨더니 수렴한 압력장이 미묘하게 달라지는 현상이 여기서 온다. 리포트에 완화계수를 적어 두는 건 그래서 습관이 아니라 방어다. ↩
이 문서의 주요 출처
- Patankar, S. V. (1980). Numerical Heat Transfer and Fluid Flow. Hemisphere. ISBN 0-89116-522-3
- Godunov, S. K. (1959). A difference scheme for numerical solution of discontinuous solution of hydrodynamic equations. Mat. Sbornik 47(89), 271-306
- Leonard, B. P. (1979). A stable and accurate convective modelling procedure based on quadratic upstream interpolation (QUICK). Comput. Methods Appl. Mech. Eng. 19(1), 59-98
- van Leer, B. (1979). Towards the ultimate conservative difference scheme V (MUSCL). J. Comput. Phys. 32(1), 101-136
- Harten, A. (1983). High resolution schemes for hyperbolic conservation laws (TVD). J. Comput. Phys. 49(3), 357-393
- Rhie, C. M. & Chow, W. L. (1983). Numerical study of the turbulent flow past an airfoil with trailing edge separation. AIAA J. 21(11), 1525-1532
- OpenFOAM v12 User Guide - Numerical schemes (fvSchemes)
의견을 반영할게요. 감사합니다.