偏微分方程的數值方法

有限體積法(finite volume method)

許多最重要的偏微分方程——流體流動、氣體動力學、交通——都是守恆律:它們說某個量(質量、動量、能量、車輛)既不被創造也不被消滅,只是被搬來搬去。一個好的數值方法對這類方程應「精確」地守恆該量,而非只是近似,否則它會漏掉質量、謊報總量。有限體積法從根基上就是為此而建的,這正是它主宰計算流體力學的原因。

其想法是在小盒子上記帳。把區域分成許多小控制體積(即「格子」),不追蹤某點的值,而是追蹤未知函數在每個格子上的「平均」。然後對每個格子套用守恆律的積分形式:格子內總量的變化率,等於透過其各面流入的淨通量減去流出的通量——這正是散度定理化成的資產負債表。一維格子 i 的更新讀作 (u_i 新 - u_i 舊)/dt = -(F_{i+1/2} - F_{i-1/2})/h,其中 F_{i+1/2} 是格子 i 與 i+1 之間那個面上的數值通量。美妙的後果是:「離開」一個格子的通量,恰恰等同於「進入」其鄰居的通量,於是對所有格子求和時,內部一切相消,總量只透過外邊界改變。守恆是內建的、精確的,無論網格品質如何。

於是一切取決於你如何選每個面上的數值通量 F,因為兩側的格子平均一般並不相同——這是每個面上的一個微型黎曼問題。簡單的中央通量對對流不穩定;迎風通量(取流動來向那一側的值)穩定卻具耗散性;Godunov 方法求解局部的黎曼問題;而通量限制器混合高階與低階通量,以保持銳利而不振盪。拉克斯-溫德羅夫定理回報了這一切用心:若一個守恆格式收斂,它收斂到守恆律的「真正」弱解(震波在正確的位置,以正確的朗肯-雨貢尼奧速度移動)——這是非守恆格式可能做不到的,它會把震波擺錯位置。

把一條道路上的交通建模為守恆律,有限體積更新追蹤每一路段中的車輛數;從路段 i 的右面離開多少,就恰好有多少進入路段 i+1。道路上的總車數只透過兩端的進出而改變——即使在塞車的震波形成處,也沒有虛假的創造或損失。

一格流出的通量等於下一格流入的通量——守恆因構造而精確。

守恆是結構性的,但精度與把震波擺在「正確」位置卻不是自動的——它完全取決於數值通量。一個天真的中央通量守恆得完美無缺,卻在震波附近劇烈振盪;單靠守恆並不能換來一個好答案。

又称
FVMcontrol-volume method有限容積法控制體積法