1. 개요[편집]
정확하면 진동하고, 안정적이면 뭉개진다. 그 사이 어딘가에서 타협하는 게 도식이다.
차분 도식(differencing scheme)은 유한체적법이나 유한차분법에서 미분 항, 특히 대류항(convection term)을 이산화할 때 검사면(cell face)에서의 물리량을 이웃 격자점 값들로 어떻게 근사할지를 규정하는 규칙이다. 확산항은 대체로 얌전해서 중심차분이면 충분하지만, 대류항은 도식 선택 하나로 해가 살기도 하고 죽기도 하는 전산유체역학의 핵심 지뢰밭이다.
문제의 본질은 이렇다. 유한체적법에서는 검사체적 표면을 지나는 플럭스를 계산해야 하는데, 물리량 는 격자 중심에 저장되어 있고 표면 값은 우리가 모른다. 그래서 중심 값들로부터 표면 값을 보간(interpolation)해야 한다. 이 보간 규칙이 곧 차분 도식이며, 여기서 수치확산(numerical diffusion)과 수치진동(numerical oscillation)이라는 두 악마 사이의 영원한 줄다리기가 시작된다.
2. 두 악마: 수치확산 vs 진동[편집]
대류항 이산화의 모든 고통은 다음 딜레마로 압축된다.
- 수치확산: 저차 도식은 실제로는 존재하지 않는 인공적인 확산을 해에 집어넣는다. 날카로운 경계층이나 충격파가 뭉개져 뿌옇게 퍼진다. 특히 흐름이 격자선과 비스듬할 때 심해진다(교차확산, cross-diffusion). 해가 발산하진 않지만, 실제보다 순한 결과를 준다. 상사에게 보여주기엔 예쁘고, 물리적으론 거짓말이다.
- 수치진동: 고차 도식은 확산은 덜 넣지만, 급격한 구배 근처에서 언더슈트·오버슈트를 만든다. 온도가 음수로 내려가거나 농도가 1을 넘는 비물리적 값(unbounded)이 튀어나온다. 심하면 계산이 통째로 발산한다.
이 딜레마의 이론적 뿌리는 유계성(boundedness)이다. 어떤 도식이 물리적으로 타당한 해(새 극값을 만들지 않는 해)를 보장하려면, 이산화 계수가 모두 같은 부호여야 한다는 조건이 붙는다. 저차 도식은 이 조건을 만족해 유계지만 부정확하고, 순수 고차 도식은 정확하지만 유계성을 깬다. 세상에 공짜 점심은 없다.1
3. 기본 도식 3형제[편집]
가장 기초적인 세 도식은 국소 레이놀즈수의 격자판 버전인 격자 페클레수 로 성격이 갈린다.
- 중심차분(CDS, Central Differencing): 표면 값을 양쪽 격자의 산술평균으로 잡는다. 2차 정확도로 정확하지만, 가 되면 유계성을 잃고 진동한다. 확산 지배 흐름에선 국룰, 대류 지배 흐름에선 지뢰.
- 1차 상류차분(UDS, Upwind Differencing): 표면 값을 무조건 상류(바람 불어오는 쪽) 격자 값으로 잡는다. 항상 유계라 절대 발산 안 하는 든든함이 매력. 대신 1차 정확도라 수치확산이 흉악하다. “일단 돌려” 할 때 첫 타자로 쓰는 도식.2
- 하이브리드(Hybrid): 스팔딩이 제안한 절충안. 면 CDS, 넘으면 UDS로 스위칭한다. 두 도식의 장점을 취한다는 취지지만, 실상은 페클레수가 크면 그냥 1차 상류로 눌러앉는다.
4. 지수/파워법칙 도식[편집]
파워법칙(power-law scheme)은 파탄카가 하이브리드의 급격한 스위칭을 매끈하게 다듬은 도식이다. 1차원 대류-확산 방정식의 정확해가 페클레수에 대해 지수함수 형태를 띤다는 점에 착안해, 지수 프로파일(exponential scheme)을 다항식으로 근사한다. 검사면 계수는 다음과 같은 형태를 갖는다.
여기서 는 확산 컨덕턴스, 는 질량 유량이다. 이면 확산 기여가 완전히 0이 되어 순수 상류로 넘어간다. 파탄카의 저서 이후 오랫동안 상용 코드의 기본값이었으나, 여전히 1차 상류의 후예라 수치확산 문제에서 자유롭진 않다.
5. 고차 도식과 QUICK[편집]
수치확산을 진지하게 줄이려면 3점 이상을 쓰는 고차 도식이 필요하다.
- QUICK(Quadratic Upstream Interpolation for Convective Kinematics): 리어나드(Leonard)가 1979년 제안. 상류 2점과 하류 1점을 지나는 2차 포물선으로 표면 값을 보간한다. 3차 정확도의 절단오차를 가져 수치확산이 확 준다. 다만 순수 QUICK은 유계성을 보장하지 못해 급구배에서 소폭 진동한다. 정확도를 위해 유계성을 조금 판 셈.
- 2차 상류(SOU / Linear Upwind): 상류 2점을 직선으로 외삽. QUICK보다 단순하면서 2차 정확도. 이것도 진동에서 완전히 자유롭진 않다.
정리하면 도식들은 아래처럼 스펙트럼을 이룬다.
| 도식 | 정확도 | 유계성 | 수치확산 |
|---|---|---|---|
| 1차 상류(UDS) | 1차 | 항상 보장 | 심각 |
| 하이브리드/파워법칙 | 1차~2차 | 대체로 보장 | 큼 |
| 중심차분(CDS) | 2차 | 에서만 | 없음(대신 진동) |
| QUICK | 3차 | 미보장 | 작음 |
6. TVD와 제한자[편집]
“고차의 정확도 + 저차의 유계성”이라는 두 마리 토끼를 동시에 잡으려는 것이 TVD(Total Variation Diminishing) 도식이다. 아이디어는 해의 전변동(total variation)이 시간에 따라 늘지 않도록 강제하는 것 — 즉 새 극값을 만들지 않게 막는다. 이를 위해 제한자(flux limiter) 를 도입한다. 여기서 은 연속한 격자 구배의 비율이다.
제한자는 해가 매끄러운 영역에서는 로 고차 도식처럼 굴고, 급구배 근처에서는 으로 저차 상류처럼 눌러앉는다. 똑똑하게 상황 봐가며 도식을 갈아탄다는 것. 스위쳐 계열마다 이름이 붙어 있는데, 유명한 것으로 minmod(가장 보수적), van Leer(부드러움), superbee(가장 공격적) 등이 있다.3 TVD 제한자는 다상유동이나 압축성 유동의 충격파 포착에서 사실상 필수 장비다.
7. 여담: 무엇을 고를 것인가[편집]
현업의 국룰은 대충 이렇다. 일단 1차 상류로 수렴시켜 판을 안정화한 뒤(수렴은 신에게 맡긴다), 결과를 초기값 삼아 QUICK이나 2차 상류, TVD 도식으로 갈아타 정확도를 올린다. 처음부터 고차로 때리면 잔차가 요동치며 발산하기 십상이라, 저차→고차 순의 웜업이 정신건강에 이롭다.4 그리고 “실험과 안 맞는데요”의 절반은 도식 탓, 나머지 절반은 격자 탓이라는 것도 알아두면 좋다.
8. 관련 문서[편집]
9. Footnotes[편집]
-
이 유계성 조건은 스칼커(Scarborough) 기준과도 맞물린다. 반복 솔버가 수렴하려면 계수 행렬이 대각지배(diagonally dominant)여야 하는데, 유계성을 깨는 도식은 이 조건도 위협한다. 즉 진동은 정확도만이 아니라 수렴성까지 갉아먹는다. ↩
-
1차 상류의 수치확산은 인공점성 로 정량화된다. 격자가 굵을수록, 속도가 빠를수록 커진다. 격자를 반으로 줄이면 확산도 반으로 준다는 게 그나마 위안. ↩
-
제한자들은 스위트-데이비스(Sweby) 다이어그램이라는 삼각형 영역 안에 살아야 TVD를 만족한다. superbee는 이 영역의 상한선을 타고, minmod는 하한선을 긴다. 이름값 하는 셈. ↩
-
OpenFOAM 유저라면
fvSchemes딕셔너리에서upwind→linearUpwind→QUICK으로 갈아타 본 경험이 있을 것이다. 그리고 그 과정에서 발산하는 케이스를 최소 세 번은 봤을 것이다. ↩