1. 개요[편집]
수치확산(numerical diffusion)은 이산화 오차가 물리적 확산과 똑같이 생긴 항으로 나타나 해를 실제보다 더 퍼지게 만드는 현상이다. 코드에 확산항을 넣지 않았는데도 날카로운 경계면이 뭉개지고, 온도 구배가 무뎌지고, 오염물 농도 피크가 낮아진다. “물리를 안 넣었는데 물리가 생겼다”는 점에서 가장 헷갈리기 쉬운 오차이며, 수치분산(위상 오차로 파형이 갈라지는 현상)과는 원인이 다르다.1
2. 어디서 나오는가[편집]
1차원 선형 이류 방정식 ()을 1차 상류차분으로 이산화하면
이 된다. 좌변을 테일러 급수로 전개해 원래 방정식을 대입하고 정리하면, 이 스킴이 실제로 풀고 있는 방정식이 드러난다.
여기서 는 쿠랑 수다. 우변의 계수가 바로 수치확산계수이고, 이렇게 얻은 식을 수정 방정식(modified equation)이라 부른다. 세 가지가 즉시 읽힌다.
- — 격자를 절반으로 줄이면 수치확산도 절반이 된다. 1차 정확도라는 말의 실질적 의미다.
- 이면 수치확산이 정확히 0이다. 쿠랑 수가 1일 때 상류차분이 해를 정확히 한 칸 밀어 주는 특이한 경우.
- 이면 계수가 음수가 되어 반확산이 된다. 이게 불안정성의 정체이고, 폰 노이만 안정성 해석이 말하는 CFL 조건과 같은 결론을 다른 언어로 준다.
2차원에서는 상황이 더 나쁘다. 흐름이 격자선에 비스듬할 때 수치확산은 등방적이지 않고 유선 횡단 방향으로 특히 커진다. 45° 흐름에서 최악이 되며, 격자 정렬 오차(grid alignment error)라 불린다. 오염물 플룸이 실제보다 옆으로 퍼지는 게 대표 증상이다.
3. 왜 그냥 없애지 못하는가[편집]
중앙차분을 쓰면 짝수 차수 오차항이 사라져 수치확산이 없어진다. 그런데 이류 지배 문제(페클레 수가 큰 경우)에서 중앙차분은 셀 페클레 수 에서 진동한다. 농도가 음수로 내려가고, 화학종 수송이면 곧바로 계산이 폭발한다.
즉 선택지는 “뭉개지느냐 진동하느냐”이고, 이게 이류 이산화의 근본 긴장이다. 고뎌노프의 장벽 정리는 이걸 정리로 못 박았다 — 선형이고 단조성을 보존하는 스킴은 1차 정확도를 넘을 수 없다. 그래서 현대적 해법은 모두 비선형이다.
| 접근 | 방법 | 대가 |
|---|---|---|
| 1차 상류 | 단조, 안정 | 수치확산 큼 |
| 중앙차분 | 수치확산 없음 | 진동, 음수 농도 |
| 2차 상류·QUICK | 확산 줄임 | 약한 진동 남음 |
| MUSCL·플럭스 제한자 | 매끈한 곳 2차, 불연속 근처 1차 | 비선형, 국소 1차 |
| 불연속 갤러킨법·WENO | 고차 | 비용, 구현 복잡 |
| 준라그랑주·입자추적 | 이류 오차 최소 | 질량 보존 별도 처리 |
전변분 감소(TVD) 조건을 만족하는 제한자 계열이 실무 표준이 된 이유가 여기 있다. 매끈한 영역에서는 고차 플럭스를, 구배가 급한 영역에서는 상류 플럭스를 국소적으로 섞어 진동 없이 확산을 줄인다.
4. 진단하는 방법[편집]
수치확산인지 물리적 확산인지 구분하는 실전 점검.
- 격자 세분화 시험. 를 절반으로 줄여 피크가 다시 높아지면 수치확산이다. 물리적 확산이면 값이 수렴한다. 격자 수렴 지수로 정량화하는 게 정석이고, 리처드슨 외삽법으로 격자 무한 극한을 추정할 수 있다.
- 셀 페클레 수 계산. . 이게 10을 넘으면 물리적 확산은 사실상 장식이고 수치확산이 답을 지배한다.
- 수정 방정식의 계수와 물리 계수 비교. 와 실제 를 직접 비교해 본다. 지하수 수송에서 종분산도 m인데 격자가 50 m면 수치확산이 물리 분산의 25배다. 격자가 다 한 게 아니라 격자가 다 망친 것.
- 역방향 시험. 속도장을 반전시켜 한 주기 돌린 뒤 초기 분포와 비교한다. 이류만 있으면 원래대로 돌아와야 하는데, 수치확산이 있으면 돌아오지 못한다 — 확산은 비가역이니까. 회전하는 원뿔·Zalesak 슬롯 원판 문제가 이 목적의 표준 시험이다.
5. 쓸모 있는 수치확산[편집]
늘 나쁜 건 아니다. 충격파 포착 스킴은 불연속을 안정화하려고 인공점성을 일부러 넣는다. 폰 노이만과 리흐트마이어의 1950년 아이디어가 그것이고, 오늘날 리만 솔버의 상류 편향도 결국 통제된 수치확산이다. 핵심은 양이 아니라 국소성이다. 불연속 근처에만 두 세 칸 폭으로 넣고 매끈한 영역은 건드리지 않으면, 충격파는 잡히고 정확도는 살아남는다.
난류 해석에서는 이 구분이 더 미묘해진다. 암시적 LES(ILES)는 수치 스킴의 소산을 아예 아격자 모델 대신 쓰는 접근인데, 잘 되는 경우도 있지만 격자를 바꾸면 “모델”이 바뀌는 셈이라 재현성이 떨어진다. 스킴이 물리를 대신할 때는 그렇게 쓰고 있다는 사실을 명시해야 한다. V&V 정신은 여기서도 같다 — 무엇을 풀고 있는지 알 것.23
6. 관련 문서[편집]
7. Footnotes[편집]
-
둘을 합쳐 “수치소산”이라고 뭉뚱그리는 문헌도 있는데, 수정 방정식에서 짝수 차수 미분항은 확산(진폭 감쇠), 홀수 차수는 분산(위상 오차)으로 딱 갈린다. 구분해서 보는 편이 디버깅에 훨씬 유용하다. ↩
-
그래서 “우리 코드는 난류 모델 없이도 난류가 나옵니다”라는 자랑은 절반이 칭찬이고 절반이 고백이다. ↩
-
회의에서 “격자를 더 촘촘히 하면 됩니다”가 통하지 않는 순간이 있다. 3차원에서 를 절반으로 줄이면 셀은 8배, 시간 스텝까지 CFL로 묶이면 비용은 16배다. 1차 스킴에서 오차는 겨우 절반. 고차 스킴이 비싼 게 아니라 1차 스킴이 더 비싸다. ↩