1. 개요
| CFL 조건 Courant–Friedrichs–Lewy Condition | |
|---|---|
| 발표 | 1928년, Mathematische Annalen 100권 32–74쪽 |
| 제안자 | R. Courant, K. Friedrichs, H. Lewy |
| 핵심 물리량 | Courant 수 (CFL 수) |
| 적용 대상 | 명시적 시간 전진 기법 전반 |
| 지위 | 안정성의 필요조건 (충분조건 아님) |
잔차 그래프가 우주로 떠났다면, 가장 먼저 확인할 것은 Courant 수다.
CFL 조건(Courant–Friedrichs–Lewy condition)은 편미분방정식을 명시적(explicit) 시간 전진 기법으로 풀 때 수치 안정성을 위해 시간 간격 가 만족해야 하는 필요조건이다. 1차원 대류 문제에서 다음과 같이 쓴다.
여기서 무차원수 를 Courant 수(Courant number)라 하며, 직관적으로는 “한 시간 스텝 동안 정보가 몇 개의 셀을 가로지르는가”를 뜻한다. 전산유체역학 실무자가 시뮬레이션이 터질 때마다 주문처럼 되뇌는 그 수 맞다. 허용 한계 는 기법에 따라 다르며, 1차 명시적 상류도식의 경우 1이다.
주의할 점이 하나 있다. CFL 조건은 필요조건일 뿐 충분조건이 아니다. 을 지켜도 불안정한 도식은 얼마든지 있다(대표적으로 대류 방정식에 중앙차분 + 전진 오일러를 쓰면 어떤 에서도 불안정하다). 어떤 도식이 실제로 안정한지는 폰 노이만 안정성 해석으로 증폭계수를 직접 따져야 알 수 있고, 안정성과 수렴성을 잇는 다리는 락스 등가정리가 놓는다.1
숫자로 한 번만 보면 남는다. 주기 경계의 64칸 중 가운데 16칸만 1인 사각 펄스를 1차 상류도식으로 밀면, 은 40스텝 뒤에도 값이 안에 있고 이면 펄스가 한 칸씩 그대로 미끄러진다. 가 되는 순간 첫 스텝에서 앞단이 1.2, 뒷단이 −0.2 로 튀고, 10스텝이면 최댓값 6.2, 30스텝이면 2500 을 넘는다. 같은 펄스를 중앙차분과 전진 오일러로 밀면 여도 5스텝에 1.51 과 −0.51 이 나오고 40스텝에 12 까지 자란다. ” 이면 안전하다”가 필요조건에 불과하다는 말이 숫자로는 이렇다.
2. 정의와 수식
다차원 유동에서는 방향별 기여를 합산한 형태를 쓴다.
비정렬 격자를 쓰는 코드에서는 셀별로 면 플럭스와 셀 체적으로부터 국소 Courant 수를 계산하고, 도메인 내 최댓값으로 를 제한하는 것이 일반적이다. 유한체적 코드의 관용적 정의는
로, 는 면 의 체적 플럭스, 는 셀 체적이다. 들어오는 플럭스와 나가는 플럭스를 모두 더한 뒤 2로 나누는 것이라 실질적으로 “셀을 통과하는 유량 / 셀 부피”가 된다.
압축성 유동에서는 정보가 유속뿐 아니라 음파로도 전달되므로 전파 속도에 (는 음속)를 사용해야 하며, 저마하수 유동을 압축성 솔버로 풀면 음속이 를 인질로 잡는 바람에 계산이 한없이 느려지는 고전적 문제가 여기서 나온다.2
는 공간 이산화와 시간 적분법의 조합에 따라 달라진다. 예컨대 같은 공간 도식이라도 4단계 룽게-쿠타법으로 시간 적분하면 안정 영역이 넓어진다. 전진 오일러의 안정 영역은 허수축과 원점에서만 닿아 중앙차분 대류에 대해 무조건 불안정한 반면, 고전적 4단계 RK의 안정 영역은 허수축을 까지 품는다. 그래서 중앙차분 + RK4 조합이 실제로 쓸 만해진다.
2.1. 확산항은 CFL이 아니다
초보자가 가장 자주 헷갈리는 지점이다. 확산(점성·열전도)항을 명시적으로 풀면 제약의 형태 자체가 다르다.
의 제곱에 반비례하므로 격자를 절반으로 줄이면 는 1/4이 된다. Courant 수는 멀짱한데 발산한다면 이 확산수(diffusion number, 폰 노이만 수)를 의심해야 한다. 점성이 지배하는 미세 격자나 저 해석에서는 이쪽이 진짜 병목이고, 그래서 많은 코드가 대류는 명시적, 확산은 암시적으로 처리하는 IMEX 조합을 쓴다.
3. 물리적 의미
CFL 조건의 본질은 의존 영역(domain of dependence)의 포함 관계다. 쌍곡형 방정식에서 어떤 점의 해는 특성곡선을 따라 전파되어 온 과거 정보에 의해 결정된다. 그런데 명시적 기법은 다음 스텝 값을 계산할 때 인접한 몇 개 셀의 현재 값만 참조한다. 만약 가 너무 커서 물리적 정보가 한 스텝 만에 수치 기법이 참조하는 범위 바깥까지 이동해 버리면, 수치해는 해에 영향을 주어야 할 정보를 구조적으로 놓치게 된다. 즉 수치적 의존 영역이 물리적 의존 영역을 포함해야 한다는 것이 CFL 조건이다.
비유하자면, 시속 100 km로 달리는 차를 1초에 한 번씩만 찍는 CCTV로 추적하는데 CCTV 간격이 10 m라면 차는 카메라 세 대를 건너뛴다. 어느 카메라도 차의 궤적을 재구성할 수 없다. 정보가 셀을 건너뛰면 수치해도 같은 처지가 된다.
이 관점은 왜 CFL이 필요조건에 그치는지도 설명한다. 의존 영역을 포함하는 것은 “정보가 도달할 수 있다”는 최소 요건일 뿐, 그 정보를 도식이 증폭 없이 전달한다는 보장은 따로 필요하다. 후자가 폰 노이만 해석의 못이다.
4. 역사
1928년 괴팅겐 대학의 리하르트 쿠랑(R. Courant), 쿠르트 프리드리히스(K. Friedrichs), 한스 레비(H. Lewy)가 Mathematische Annalen 100권에 발표한 논문 “Über die partiellen Differenzengleichungen der mathematischen Physik”(32–74쪽)에서 유래한다. 흥미로운 점은 이 논문의 목적이 수치계산이 아니었다는 것이다. 세 사람은 편미분방정식 해의 존재성을 증명하는 이론적 도구로 차분법을 사용했고, 차분해가 미분방정식의 해로 수렴하기 위한 조건으로 이 부등식을 유도했다. 전자계산기가 가동되기 십수 년 전의 일이다.3
이 순수 수학 논문은 전자계산기 시대가 열리면서 수치해석의 초석으로 재발견되었고, 1967년 IBM Journal of Research and Development 11권 2호(215–234쪽)에 영역판이 실리며 고전의 지위를 굳혔다.4 유한차분법의 안정성 이론, 나아가 현대 CFD 전체가 이 논문에 빚을 지고 있다.
5. 명시적 기법과 암시적 기법
CFL 조건의 구속력은 시간 적분 방식에 따라 극적으로 달라진다.
5.1. 명시적 기법
다음 스텝 값을 현재 스텝 값만으로 계산한다. 스텝당 비용이 싸고 병렬화가 쉬운 대신 CFL 조건을 정직하게 따라야 한다. 격자 어디엔가에 아주 작은 셀이 하나라도 있으면 그 셀이 전체 도메인의 를 결정한다. 셀 수백만 개가 최소 셀 하나에게 인질로 잡히는 구조다.
5.2. 암시적 기법
다음 스텝 값들이 서로 엮힌 연립방정식을 매 스텝 풀어야 한다. 스텝당 비용은 비싸지만 후진 오일러처럼 무조건 안정(unconditionally stable)한 기법은 CFL 제약에서 해방된다. 다만 여기에는 함정이 있는데, 안정하다는 것과 정확하다는 것은 다르다. Courant 수 50으로 돌려도 발산은 안 하지만, 한 스텝에 정보가 셀 50개를 건너뛰는 만큼 과도 현상은 뭉개진다. 그래서 실무 감각은 다음과 같이 정리된다.
- 정상상태 해석: 시간 정확도가 무의미하므로 큰 Courant 수로 수렴만 가속하면 된다.
- 비정상(transient) 해석: 암시적이라도 관심 있는 시간 스케일을 해상하려면 수준을 유지하는 것이 안전하다. LES처럼 난류 구조를 좁는 해석이라면 더욱 그렇다. 난류 모델링 참고.
6. 실무 팁
- 발산하면 일단 Courant 수부터 낮춰라. 초기 과도 구간은 0.1~0.5로 시작해 유동장이 자리 잡으면 올리는 것이 정석이다. 첫 스텝부터 로 달리는 것은 만용이다.
- 가변 시간 스텝을 활용하라. OpenFOAM은
controlDict에서adjustTimeStep yes;와maxCo(예: 0.5)를 주면 목표 Courant 수에 맞춰 를 자동 조절한다. 자유표면 솔버는 계면 전용 제한인maxAlphaCo와 상한maxDeltaT를 함께 쓴다. 웨만하면 켜두는 것이 이득이다. - 정상상태 가속에는 국소 시간 전진(local time stepping)이 유효하다. 셀마다 자신의 CFL 한계에 맞는 를 쓰는 방법으로, 시간 이력은 망하약이 되지만 어차피 정상해만 필요하다면 문제없다. 비정상 해석에서 암시적 기법과 결합하는 이중 시간 전진(dual time stepping)도 같은 계열의 기술이다.
- 확산수를 따로 확인하라. 위에서 본 는 Courant 수 모니터에 안 잡힌다. 경계층 격자처럼 가 극단적으로 작은 영역에서 특히 잘 문다.
- 범인은 CFL이 아니라 격자일 수 있다. Courant 수를 아무리 낮춰도 발산한다면 찌그러진 셀이나 경계 조건 설정을 의심하라. 최대 Courant 수가 찍히는 셀의 위치를 확인하면 격자의 환부가 어디인지 대체로 드러난다.5
7. 관련 문서
8. Footnotes
-
락스 등가정리: 적합(consistent)한 선형 차분도식에 대해 “안정성 ⟺ 수렴성”. 즉 CFL만으로는 수렴을 약속받지 못하고, 안정성을 따로 확보해야 비로소 격자를 줄일 때 참해로 간다는 뜻이다. ↩
-
이 문제를 우회하려고 예조건화(preconditioning), 인공 압축성 등 온갖 기법이 개발되었다. 마하 0.01짜리 유동을 압축성 솔버로 푸는 것은 달팽이를 추적하겠다고 초고속 카메라를 동원하는 격이다. ↩
-
세 저자는 계산기가 아니라 연필로 이 조건을 유도했다. 훇날 쿠랑은 뉴욕대에, 프리드리히스와 레비도 미국에 정착해 나치를 피해 망명한 괴팅겐 수학의 유산을 이어갔다. 논문 한 편이 저자들보다 먼저 시대를 옮겨 다니 셈이다. ↩
-
번역은 뉴욕대 AEC 계산시설의 필리스 폭스(Phyllis Fox)가 맡았다. 같은 호에 이 논문을 당대 수치해석의 발전에 비춰 해설한 리뷰 논문도 함께 실렸다. 39년 묵은 독일어 논문을 굳이 번역해 실었다는 사실 자체가 1960년대에 이 조건이 얼마나 급하게 필요해졌는지를 말해 준다. ↩
-
실무 격언: “최대 Courant 수 셀의 좌표를 찍어보면 십중팔구 격자 생성기가 사고 친 자리다.” 시간 스텝을 줄이는 것은 치료가 아니라 진통제일 때가 많다. ↩
이 문서의 주요 출처
- R. Courant, K. Friedrichs, H. Lewy (1928), "Über die partiellen Differenzengleichungen der mathematischen Physik", Math. Ann. 100, 32–74 (원논문)
- R. Courant, K. Friedrichs, H. Lewy (1967), "On the Partial Difference Equations of Mathematical Physics", IBM J. Res. Dev. 11(2), 215–234 (공식 영역)
- 위 영역판 전문 PDF (Stanford CME 324 강의자료 사본)
- OpenFOAM User Guide — Time and data input/output control (adjustTimeStep · maxCo)
의견을 반영할게요. 감사합니다.