Godunov 格式(Godunov scheme)
/ GO-doo-nof /
假設你正用有限體積法解一個守恆律,來到關鍵問題:在兩個格子之間的面上,由誰的值來決定通量?兩個格子平均彼此不同,而這個不同是一個微小的跳變——資料中內建的一個階梯,恰是黎曼問題的設定(初始資料在左邊是某常數、在右邊是另一常數)。Godunov 在 1959 年的卓越想法,是把這個跳變當真,「求解」每個面上的小黎曼問題,再用其答案來定義通量。
具體而言,該格式把分段常數的格子平均視為一群局部黎曼問題的初始資料,每個面上一個。對每一個,你(往往精確地)求解這單一跳變如何演化——成為震波、稀疏波或接觸間斷,以物理上正確的速度移動——再讀出恰好坐落在該面上的值。那個值給出守恆更新所需的數值通量。由於黎曼解尊重方程真正的波結構,Godunov 格式天生「迎風」:資訊取自波實際來向的那一側,這正是它穩定的原因。對最簡單的純量問題,它退化為單純的迎風;對如氣體動力學的系統,它需要一個真正的黎曼求解器,並成為一切現代捕捉震波方法的原型。
Godunov 方法是奠基性的捕捉震波格式:它守恆(故藉拉克斯-溫德羅夫定理把震波擺在正確位置)、單調,且能捕捉間斷而沒有困擾天真高階格式的劇烈振盪。它的代價有二。其一,它只有「一階」精度,故以沉重的數值耗散抹糊平滑特徵——這是換取穩健的代價。其二,精確的黎曼求解器可能昂貴,故實務上人們使用近似的(Roe、HLL、HLLC)。著名的 Godunov 階障——線性單調格式至多只有一階精度——正是非線性通量限制器與高階 Godunov 型(MUSCL、ENO/WENO)方法為了翻越而被發明出來的那道牆。
對無黏 Burgers 方程 u_t + (u^2/2)_x = 0,若某面的格子跳變從 u_L = 2 降到 u_R = 0,局部黎曼解是一個以朗肯-雨貢尼奧速度 (u_L + u_R)/2 = 1 移動的震波;Godunov 把面值讀為 2(迎風側),於是以正確的震波速度傳輸該跳變,而無虛假波紋。
在每個面上解一個黎曼問題;答案就是通量。
Godunov 階障是真實的:沒有任何「線性」單調格式能超過一階精度。要在不引入振盪下打敗它,便迫使採用「非線性」方法(限制器、ENO/WENO)——這條定理正是高階捕捉震波本質上必然非線性的原因。