多重網格法是一種用於求解方程組的方法,可用於插值、解微分方程等。
從專業角度講多重網格法實際上是一種多分辨率的算法,由於直接在高分辨率(用於求解的間隔小)上進行求解時對於低頻部分收斂較慢,與間隔的平方成反比。就想到先在低分辨率(間隔較大)上進行求解,因為此時,間隔小,數據量小,進行松弛時的時空耗費小,而且收斂快,而且一個很重要的優點是在低分辨率上對初值的敏感度顯然要低於對高分辨率的初值的要求。這一點是顯而易見的,例如我們平時看一個很復雜的物體,在很遠的地方,你可能就覺得它是一個點或一個球,但是在近處你就不能這么近似,或許發明多重網格法的人就是從這一基本生活常識發現的吧。
多重網格法可以直接在低分辨率上以一個隨意的初值進行計算,然后再進行插值,提高其分辨率,再在更高分辨率進行計算;也可以現在高分辨率以隨意初值進行計算,得到一個結果,再將其限制(插值)到低分辨率去,再在低分辨率上進行解算,最終再從低分辨率經插值計算達到高分辨率。
有關多重網格法的資料可以到這里下載:https://computation.llnl.gov/casc/people/henson/mgtut/ps/mgtut.pdf
多重網格技術(multigrid solver)
微分方程的誤差分量可以分為兩大類,一類是頻率變化較緩慢的低頻分量;另一類是頻率高,擺動快的高頻分量。一般的迭代方法可以迅速地將擺動誤差衰減,但對那些低頻分量,迭代法的效果不是很顯著。高頻分量和低頻分量是相對的,與網格尺度有關,在細網格上被視為低頻的分量,在粗網格上可能為高頻分量。
多重網格方法作為一種快速計算方法,迭代求解由偏微分方程組離散以后組成的代數方程組,其基本原理在於一定的網格最容易消除波長與網格步長相對應的誤差分量。該方法采用不同尺度的網格,不同疏密的網格消除不同波長的誤差分量,首先在細網格上采用迭代法,當收斂速度變緩慢時暗示誤差已經光滑,則轉移到較粗的網格上消除與該層網格上相對應的較易消除的那些誤差分量,這樣逐層進行下去直到消除各種誤差分量,再逐層返回到細網格上。
目前兩層網格方法從理論上已證明是收斂的,並且其收斂速度與網格尺度無關[哈克布思,1988]。多重網格法是迭代法與粗網格修正的組合,經過證明,迭代法可迅速地將那些高頻分量去掉,粗網格修正則可以幫助消除那些光滑了的低頻分量,而對那些高頻分量基本不起作用。
在多重網格計算中,需要一些媒介把細網格上的信息傳遞到粗網格上去,同時還需要一些媒介把粗網格上的信息傳遞到細網格上去。限制算子Iih(i-1)h是把細網格i-1層上的殘余限制到粗網格i層上的算子,最簡單的算子是平凡單射,另外還有特殊加權限制;插值算子Iih(i-1)h是把粗網格i層上的結果插值到細網格i-1層上的算子,一般采用線性插值或完全加權限制算子。
需要說明的是在多重網格迭代方法中,粗網格修正之前,細網格必須進行光滑迭代,以消除高頻誤差,使粗網格修正最有效地發揮其作用;在粗網格修正之后,不可避免的引入高頻誤差,所以也必須進行光滑迭代,不過高頻誤差能很快的通過光滑迭代消除。
多重網格,最開始是用來求解橢圓型方程的。其原理為:數值求解的誤差可以展開成級數的形式,從級數的的形式我們可以看出誤差的振動分量有很多頻段,只要消除了這些頻段的誤差,整個解也就收斂了。而網格,我們則可以看成一種濾波器,不同尺度的網格可以濾掉不同頻段上的誤差。如果網格一定,那么對於某些誤差來說,可以很快濾掉,對於與其頻段不匹配的誤差來說,這種網格可能完全失敗而根本無法濾掉。於是,人們開始采用多重網格技術進行數值求解,這樣可以很快的濾掉各個頻段上的誤差,從而加速求解。上面所說的是多重網格理論上的技術,而實行多重網格技術卻還有很多困難,首要的困難粗糙網格的生成,對於結構網格來說這是比較容易的,只需要進行相應的采樣即可,對於非結構網格,粗網格的構造要麻煩的多,所以我說多重網格技術也是一種網格生成技術。對於我們自己編程序來說,非結構網格是一個難點,生成了非結構網格,再形成多重網格更是一個難點,與其相比,數值格式的確很簡單。對於雙曲型方程的多重網格方法大家見到過沒有?其實,這方面的資料特別的少,這主要是有雙曲型方程的本性和多重網格法的原理決定的。目前來說,雙曲型方程的多重網格法,在理論上還有很多問題要解決,與實際的工程應用還有很大距離。
多重網格對於橢圓型方程有比較完備的理論,尤其是對於線性橢圓型方程,其理論收斂速度為每步下降一個量級。對於雙曲型方程,至今沒有很完備的理論,最早是Brandtl,后來Ni應用於Euler方程求解,Jameson把該方法應用於他的Runge-Kutta顯式推進技術,效率非常高。非結構網格,法國人走的比較快,采用聚合體技術,使得粗網格可以比較容易得到,收斂效果比較好。
對於euler方程這種雙曲方程,雖然沒有完備的multigrid收斂理論,但是卻已經應用比較長時間了(從Jamson算起)。好像做CFD的暫時先實用化了,不管理論上如何。Fluent里面對於非結構網格葉實現了凝聚式的多重網格。劉超群的那本多重網格書里面就有一個multigrid用於葉柵跨音速無粘計算的例子,記得是4層網格,FVM,Roe格式配合四階龍格庫塔推進。一般來說,似乎都用多重網格加速顯示推進的,因為顯示步長受限制,少而有隱格式配合多重網格的。記得好像在王保國的葉柵計算的書里面,提到了隱式推進的多重網格,不記得他實現了沒有。不過SIMPLE算法配合多重網格其實就是一種隱格式的多重網格了。
Multi-grid是一種加速收斂技術,多為譯‘多重網格’Multi-block是網格生成技術,多為譯‘多塊網格’。
AMG(代數多重網格) 直接根據離散后的Matrix生成"COARSER" MATRIX, 和網格不發生直接關系。上面討論的是幾何為基礎的多重網格法。幾何多重網格法一般在粗網格上直接構造守恆方程,對合適的問題,收斂會很快。缺點是對復雜幾何形狀,粗網格很難生成。AMG 收斂也很好而且不受網格限制。AMG已經被很多CFD商用軟件采用。好象FLUENT就一直用AMG作為主求解器。誰用過FLUENT的幾何多重網格法?
一種新的並行代數多重網格粗化算法
<<計算數學 >>2005年03期 徐小文,莫則堯
近年來,受實際應用領域中大規模科學計算問題的驅動,在大規模並行機上實現代數多重網格(AMG)算法成為數值計算領域的研究熱點。本文針對經典AMG方法,提出一種新的並行網格粗化算法--多階段並行RS算法(MPRS)。我們將新算法集成到了高性能預條件子軟件包Hypre中。大量數值實驗結果顯示,新算法適合更廣泛的問題,相對其他並行粗化算法,明顯地改善了AMG並行計算的可擴展性。對三維27點格式有限差分離散的Poisson方程,在64個處理機上並行AMG求解,含8百萬個未知量,新算法比RS3算法減少了近60的三維Poisson方程,近32萬個未知量,在16個處理機上並行AMG-GMRES求解,新算法所需的迭代步數大約為其他粗化算法的一半,顯示了很好的算法可擴展性。