很想掌握如何編程求解一維水動力模型,具備基本理論基礎,請問如何一步步實現這一目標?
本科學習了水力學,研究生階段熟練運用Mike11開展項目研究,但一直想掌握一維水動力模型計算的機理,也嘗試過編程求解,但總感覺無從下手,請教大家如何一步一步培養編程及方程離散相關能力,謝謝啦
推薦幾本書,順序僅供參考(在數值計算+編程的基礎上):
1. Shock-Capturing Methods for Free-Surface Shallow Flows
Eleuterio F. Toro2. Computational Hydraulics
M. B. Abbott
3. Practical aspects of computational river hydraulics
J.A. Cunge, F.M. Holly, Jr., A. Verwey.4. OPEN CHANNEL FLOW Numerical Methods and Computer Applications
Roland Jeppson(國外亞馬遜有讀者評價說code有一些錯誤)5. Shallow Water Hydrodynamics: Mathematical Theory and Numerical Solution for a Two-dimensional System
Weiyan Tan(有中文版)6. Hydraulics of pipeline systems
Bruce E. Larock Roland W. Jeppson Gary Z. Watters
(裡面的水錘計算是step by step的FORTRAN code)7. Computer Modeling of Free-Surface and Pressurized Flows
Chaudhry Mays (很多大牛寫的論文集)8. Pressure surge in pipe and duct systems
J. A. Swaffield,A. P. Boldy(這個是我亂放的,只是突然想起在 Transient Free Surface Flows in Building Drainage Systems 書裡面曾看到 Dr. Jean Swaffield 紀念她的丈夫 Dr. John Swaffield,就把這本寫上來了)9. 未完待續
其中1、4、6都是較為step by step的(code對應的章節),方便入門,我是把他們的code都改寫成Matlab了,你也可以試試。
希望我明天工作順利吧。
//-------------------------------------
9. Godunov-type schemesGuinot10. 還有一本書,像另一個答案里說的那樣,從曼寧公式等基本的水力學公式迭代法計算開始,但是比較抱歉實在想不起來是哪本書了,可能這本對提問者來說最有用…… @@只懂有限體積,以基於格心數據結構為例,三步:重構,求通量,投影平均拿到核心均值。把每一步都搞明白就可以了,其他都是trick沒必要發力氣。以解Euler或者NS為例:重構,一階,二階限制器,高階weno;求通量最簡單就是rieman solver和approximate riemann solver,一維還是有一些exact結果的;投影就不用說了。進階的話,就是時間推進格式和各類加速方法了,不過我覺得一維就沒必要了吧…
我們實驗室計算流體力學課程的大作業是用四種差分格式求解一維聖維南方程計算一個明渠雍波。在圖書館看了一堆廢紙之後,終於Google到某校的PPT,照著PPT搞定了一種差分格式。然後就交差了。還有一個作業是解一維熱方程,這方程也是邊界層方程,很簡單,網上大量現成代碼。
如果水力學理論基礎一般,數學功底也不是很強,編程也只是hello world水平——如果的話。
建議先從最最簡單的水力模型入手——噹噹噹噹,就是統治我大水利200餘年的謝才-曼寧公式!水力學方面,它是公式,參數就那麼幾個,上過本科的人不會看不懂,理解各個參數的意義就ok了;數學方面,知道迭代試算是怎麼一回事,二分法的基本用法;編程方面,可以先做面向過程,掌握變數、數組、循環、判斷、文件讀寫。。。。
搞定了謝才-曼寧公式,可以進階到能量方程!好歹從經驗公式進化到和諧量綱了,水力學方面,加深對水頭概念的理解,加深對急流、緩流的掌握,加深阻力項和糙率關係的理解;數學方面,因為方程是二次的,判斷流態是很重要的環節,流態判斷好了,繼續二分法;編程方面,可以嘗試面向對象,比如把斷面做成一個類。。。。
搞定了能量方程,就可以攻堅聖維南方程!各種偏導,看著就有一種高級的感覺呢,水力學方面,理解聖維南方程的幾個守恆,加深阻力項和糙率關係的理解,對了,聖維南就可以非恆定流了,非恆定你懂的,各種波啊;數學方面,差分,各種差分,向前差分,向後差分,顯格式,隱格式,有限元——幾乎困擾了我整個讀研階段;編程方面,學會構思程序的框架,各個函數(類)的作用,代碼量會有明顯增加。
個人感覺呢,謝才-曼寧公式,重點在於公式理解,難點在於編程;能量方程,重點在於流態判斷,無大難點;聖維南方程,重點在於公式理解,難點在於數學差分。
一維大概就這樣了——不過很多人,就算碩士畢業,比如我,也還是不能完全掌握——好在大神們已經做好了很多模型。
理論基礎分為物理控制方程基礎和數值方法基礎,還有編程基礎,三者缺一不可。如果三個搞定了,就沒什麼問題。不說了,接著擼代碼去.....
推薦閱讀:
※數值實驗怎麼進行參數率定?
※單晶高溫合金行業現狀及其數值模擬有什麼應用?
※血流數值模擬研究前景和研究方向,國內外研究現狀以及最新成果?