偏微分方程的數值方法:有限差分

CFL 條件(Courant-Friedrichs-Lewy condition)

/ C-F-L; koo-RAHNT FREED-rikhs LAY-vee /

假設一個波以速度 c 沿弦行進,而你用一個顯式格式模擬它,該格式在一個時間步內只讓每個格點與其緊鄰交談。若物理波在單一時間步內能越過超過一格,數值格式就字面上跟不上——資訊在物理上抵達某點,早於格式有任何辦法把它帶到那裡。CFL 條件是「別讓波跑得比網格快」的精確陳述,它限制顯式格式的時間步能有多大。

對速度 c、網格間距 h、時間步 k 的一維對流或波動,CFL 條件是庫朗數 C = c*k/h 必須滿足 |C| <= 1(確切界視格式而定;蛙跳與迎風為 1)。其背後的圖像是「依賴域」:某點的真解依賴於過去的一個三角形區域(距離 c*t 內的一切)。數值格式在該點的值只能依賴其模板在 n 步內觸及的格——一個斜率為 h/k 的離散三角形。CFL 說數值依賴域必須「包含」真實依賴域;若網格三角形太窄(k 太大),格式就缺少所需的資料,於是失穩。

CFL 是顯式時間推進只條件穩定的根本原因,而且很有殺傷力。要讓模擬更準你縮小 h,但 CFL 隨即逼你按比例縮小 k(對對流)或更快——故把空間解析度加倍,至少使時間步數加倍,成本超線性成長。這也是為何「剛性」問題與快速波把人推向隱式格式,後者的數值依賴域是整個網格(每步解一個全域系統),故無 CFL 限制。誠實的細微處:CFL 對穩定性必要但未必充分——一個格式可滿足 CFL 仍因別的原因不穩定——且確切常數取決於格式與空間維數。

c = 2、h = 0.1 的對流需要 k 使 2*k/0.1 = 20k <= 1,故 k <= 0.05。選 k = 0.04(庫朗數 0.8)穩定;k = 0.06(庫朗數 1.2)違反 CFL,迎風格式爆炸。對顯式熱方程,類比的限制是拋物型的 k <= h^2/(2*alpha),更嚴苛,因為它隨 h^2 縮放。

數值依賴域必須包含真實依賴域:c*k/h <= 1。

CFL 對顯式格式的穩定性「必要」但本身不「充分」——一個格式可遵守 CFL 卻仍不穩定(對流的 FTCS 是經典例:它滿足依賴域的想法卻無條件不穩定)。庫朗數界(1、1/2 等)也取決於具體格式與空間維數。

又稱
Courant conditionCourant number bound庫朗條件庫朗-弗里德里希斯-列維條件