SIMWIKI DOC // 수치해석

CFL 조건

수치해석 CONVERGED last update 2026-06-29 11:33:56

CFL 조건
Courant–Friedrichs–Lewy Condition
발표1928년, Mathematische Annalen
제안자R. Courant, K. Friedrichs, H. Lewy
핵심 물리량Courant 수 (CFL 수)
적용 대상명시적 시간 전진 기법 전반

1. 개요[편집]

잔차 그래프가 우주로 떠났다면, 가장 먼저 확인할 것은 Courant 수다.

CFL 조건(Courant–Friedrichs–Lewy condition)은 편미분방정식을 명시적(explicit) 시간 전진 기법으로 풀 때 수치 안정성을 위해 시간 간격 Δt\Delta t가 만족해야 하는 필요조건이다. 1차원 대류 문제에서 다음과 같이 쓴다.

C=uΔtΔxCmaxC = \frac{u\,\Delta t}{\Delta x} \le C_{max}

여기서 무차원수 CCCourant 수(Courant number)라 하며, 직관적으로는 “한 시간 스텝 동안 정보가 몇 개의 셀을 가로지르는가”를 뜻한다. 전산유체역학 실무자가 시뮬레이션이 터질 때마다 주문처럼 되뇌는 그 수 맞다. 허용 한계 CmaxC_{max}는 기법에 따라 다르며, 1차 명시적 상류도식의 경우 1이다.

2. 정의와 수식[편집]

다차원 유동에서는 방향별 기여를 합산한 형태를 쓴다.

C=ΔtiuiΔxiCmaxC = \Delta t \sum_{i} \frac{|u_i|}{\Delta x_i} \le C_{max}

비정렬 격자를 쓰는 코드에서는 셀별로 면 플럭스와 셀 체적으로부터 국소 Courant 수를 계산하고, 도메인 내 최댓값으로 Δt\Delta t를 제한하는 것이 일반적이다. 압축성 유동에서는 정보가 유속뿐 아니라 음파로도 전달되므로 전파 속도에 u+c|u| + c(cc는 음속)를 사용해야 하며, 저마하수 유동을 압축성 솔버로 풀면 음속이 Δt\Delta t를 인질로 잡는 바람에 계산이 한없이 느려지는 고전적 문제가 여기서 나온다.1

CmaxC_{max}는 공간 이산화와 시간 적분법의 조합에 따라 달라진다. 예컨대 같은 공간 도식이라도 4단계 룽게-쿠타(Runge-Kutta)로 시간 적분하면 전진 오일러보다 안정 영역이 넓어져 CmaxC_{max}가 커진다. 정확한 값은 폰 노이만 안정성 해석으로 구한다.

3. 물리적 의미[편집]

CFL 조건의 본질은 의존 영역(domain of dependence)의 포함 관계다. 쌍곡형 방정식에서 어떤 점의 해는 특성곡선을 따라 전파되어 온 과거 정보에 의해 결정된다. 그런데 명시적 기법은 다음 스텝 값을 계산할 때 인접한 몇 개 셀의 현재 값만 참조한다. 만약 Δt\Delta t가 너무 커서 물리적 정보가 한 스텝 만에 수치 기법이 참조하는 범위 바깥까지 이동해 버리면, 수치해는 해에 영향을 주어야 할 정보를 구조적으로 놓치게 된다. 즉 수치적 의존 영역이 물리적 의존 영역을 포함해야 한다는 것이 CFL 조건이다.

비유하자면, 시속 100 km로 달리는 차를 1초에 한 번씩만 찍는 CCTV로 추적하는데 CCTV 간격이 10 m라면 차는 카메라 세 대를 건너뛴다. 어느 카메라도 차의 궤적을 재구성할 수 없다. 정보가 셀을 건너뛰면 수치해도 같은 처지가 된다.

4. 역사[편집]

1928년 괴팅겐 대학의 리하르트 쿠랑(R. Courant), 쿠르트 프리드리히스(K. Friedrichs), 한스 레비(H. Lewy)가 Mathematische Annalen에 발표한 논문 “Über die partiellen Differenzengleichungen der mathematischen Physik”에서 유래한다. 흥미로운 점은 이 논문의 목적이 수치계산이 아니었다는 것이다. 세 사람은 편미분방정식 해의 존재성을 증명하는 이론적 도구로 차분법을 사용했고, 차분해가 미분방정식의 해로 수렴하기 위한 조건으로 이 부등식을 유도했다. 컴퓨터가 등장하기 17년 전의 일이다.2 이 순수 수학 논문은 전자계산기 시대가 열리면서 수치해석의 초석으로 재발견되었고, 1967년 IBM Journal에 영역판이 실리며 고전의 지위를 굳혔다. 유한차분법의 안정성 이론, 나아가 현대 CFD 전체가 이 논문에 빚을 지고 있다.

5. 명시적 기법과 암시적 기법[편집]

CFL 조건의 구속력은 시간 적분 방식에 따라 극적으로 달라진다.

5.1. 명시적 기법[편집]

다음 스텝 값을 현재 스텝 값만으로 계산한다. 스텝당 비용이 싸고 병렬화가 쉬운 대신 CFL 조건을 정직하게 따라야 한다. 격자 어딘가에 아주 작은 셀이 하나라도 있으면 그 셀이 전체 도메인의 Δt\Delta t를 결정한다. 셀 수백만 개가 최소 셀 하나에게 인질로 잡히는 구조다.

5.2. 암시적 기법[편집]

다음 스텝 값들이 서로 얽힌 연립방정식을 매 스텝 풀어야 한다. 스텝당 비용은 비싸지만 후진 오일러처럼 무조건 안정(unconditionally stable)한 기법은 CFL 제약에서 해방된다. 다만 여기에는 함정이 있는데, 안정하다는 것과 정확하다는 것은 다르다. Courant 수 50으로 돌려도 발산은 안 하지만, 한 스텝에 정보가 셀 50개를 건너뛰는 만큼 과도 현상은 뭉개진다. 그래서 실무 감각은 다음과 같이 정리된다.

  • 정상상태 해석: 시간 정확도가 무의미하므로 큰 Courant 수로 수렴만 가속하면 된다.
  • 비정상(transient) 해석: 암시적이라도 관심 있는 시간 스케일을 해상하려면 CO(1)C \sim \mathcal{O}(1) 수준을 유지하는 것이 안전하다. LES처럼 난류 구조를 좇는 해석이라면 더욱 그렇다. 난류 모델링 참고.

6. 실무 팁[편집]

  • 발산하면 일단 Courant 수부터 낮춰라. 초기 과도 구간은 0.1~0.5로 시작해 유동장이 자리 잡으면 올리는 것이 정석이다. 첫 스텝부터 C=5C=5로 달리는 것은 만용이다.
  • 가변 시간 스텝을 활용하라. OpenFOAMadjustTimeStep/maxCo처럼 목표 Courant 수에 맞춰 Δt\Delta t를 자동 조절하는 기능은 웬만하면 켜두는 것이 이득이다.
  • 정상상태 가속에는 국소 시간 전진(local time stepping)이 유효하다. 셀마다 자신의 CFL 한계에 맞는 Δt\Delta t를 쓰는 방법으로, 시간 이력은 엉망이 되지만 어차피 정상해만 필요하다면 문제없다. 비정상 해석에서 암시적 기법과 결합하는 이중 시간 전진(dual time stepping)도 같은 계열의 기술이다.
  • 범인은 CFL이 아니라 격자일 수 있다. Courant 수를 아무리 낮춰도 발산한다면 찌그러진 셀이나 경계 조건 설정을 의심하라. 최대 Courant 수가 찍히는 셀의 위치를 확인하면 격자의 환부가 어디인지 대체로 드러난다.3

7. 관련 문서[편집]

8. Footnotes[편집]

  1. 이 문제를 우회하려고 예조건화(preconditioning), 인공 압축성 등 온갖 기법이 개발되었다. 마하 0.01짜리 유동을 압축성 솔버로 푸는 것은 달팽이를 추적하겠다고 초고속 카메라를 동원하는 격이다.

  2. 세 저자는 계산기가 아니라 연필로 이 조건을 유도했다. 훗날 쿠랑은 뉴욕대에, 프리드리히스와 레비도 미국에 정착해 나치를 피해 망명한 괴팅겐 수학의 유산을 이어갔다. 논문 한 편이 저자들보다 먼저 시대를 옮겨 다닌 셈이다.

  3. 실무 격언: “최대 Courant 수 셀의 좌표를 찍어보면 십중팔구 격자 생성기가 사고 친 자리다.” 시간 스텝을 줄이는 것은 치료가 아니라 진통제일 때가 많다.