蔣運華,龔 喜,王 凱
(中山大學 海洋工程與技術學院,廣東 廣州 510275)
“計算流體力學”是海洋工程與技術等眾多工科類專業的核心課程。它是20世紀60年代隨著計算機技術和數值計算算法發展而迅速發展起來的一門流體力學的分支學科[1-3]。目前,隨著計算機技術和數值計算算法的發展,計算流體力學已經成為研究流體流動問題的三個有效手段之一,即理論研究、實驗研究和數值計算。而流體的流動問題廣泛存在于海洋工程與技術、航空宇航科學與技術、兵器科學與技術、核科學與技術、力學、機械工程、材料科學與工程、動力工程及工程熱物理、土木工程、水利工程、環境科學與工程、石油與天然氣工程、化學工程與技術、生物醫學工程等工科類學科[2-5]。因此,大多數工科專業都要求學生能夠利用所學的流體力學知識,分析解決所在專業領域相關流體力學問題[2]。而流體力學的核心控制方程NS方程,只有在極其簡化條件下才有理論解,因此,很難在理論上獲得各種復雜問題的理論解。現階段,研究流動問題的實驗手段,主要包括各種水洞、水槽、水箱、水池、風洞實驗等。這些實驗手段能夠很好地模擬各種實際的復雜流動,但是要想模擬得更加準確,需要耗費大量的資金,而較小尺度的實驗又存在邊界效應、尺度效應等問題。計算流體力學作為流體力學的研究手段之一,主要通過有限差分、有限體積方法離散NS方程進行數值求解。隨著計算機技術的發展,計算流體力學已經從求解雷諾應力平均的湍流數值模擬逐步發展到大渦模擬,再到目前的小規模網格的直接數值模擬,即直接求解NS方程。可以預見,未來大規模網格的直接數值模擬會得到廣泛的發展與應用。因此,計算流體力學技術必然成為流體力學研究的重要手段之一,從而也必將成為眾多工科類專業學生必須要掌握的核心專業課程。
由于“計算流體力學”課程需要學生掌握大量的數值計算方法理論(如要求學生掌握流體力學控制方程的基本形式及相對應的物理意義,理解有限差分方法、有限體積方法,掌握線性方程的求解方法,掌握網格的生成原理的方程變換等),還要求學生利用所學的各種計算流體力學理論進行數值程序的求解,并對數值計算的數據進行輸出、處理和分析,因此,“計算流體力學”課程是一門理論與實踐相結合的課程,對學生和教師都提出了很高的要求。而目前,“計算流體力學”課程教學主要是首先通過教師課堂講授計算流體力學涉及的各種理論,然后利用一些主流大型的計算流體力學軟件,如Fluent、CFX、OpenFOAM進行數值方法算列講解驗證[6-8]。這種教學模式存在兩個問題:一方面,大量的“計算流體力學”理論教學依舊是“灌輸式”,學生很難在短時間內接受有限差分、有限體積、格式精度等眾多對數學知識要求較高的理論問題;另一方面,采用如Fluent、CFX、OpenFOAM進行數值方法算列講解驗證,由于這些軟件除了OpenFOAM是開源代碼(但是代碼冗長),其他都是封裝軟件,很難讓初學“計算流體力學”課程的學生對所學的“計算流體力學”理論與實際計算完全結合理解。同時需要注意的是,這些大型的計算流體力學軟件都屬于國外相關公司,存在被禁用的風險。因此,目前的“計算流體力學”教學很難培養出掌握計算流體力學核心思想理論并能自行編寫計算流體力學計算代碼的核心創新人才。而由于Fluent、CFX、OpenFOAM等大型國外軟件在各個工科內行業的廣泛使用,未來我國在計算流體力學計算程序自主研發的道路上存在“卡脖子”問題[3]。所以,我們亟須改變目前的教學模式,要盡快培養出能夠開發自主計算流體力學軟件的核心創新人才。
結合前期在“計算流體力學”方面的教學和科學研究成果,將課題組現有的計算流體力學代碼進行整合開發一個開源的“計算流體力學”教學平臺,并將其用于實際的“計算流體力學”教學過程中。如在講授有限差分法或各種精度的格式時,可以直接調用開源計算流體力學的計算代碼,這樣在教學過程中,學生很容易掌握有限差分法或各種精度的格式和在具體編寫計算流體力學代碼時的使用方法,具有良好的互動教學效果。同時,通過開源的“計算流體力學”教學平臺,學生能夠真實感受到方程被離散開來用計算機進行加減計算,使“計算流體力學”教學更加具體,不僅會激發學生濃厚的學習興趣,而且會使學生對計算流體力學理論和實踐程序編寫留下深刻印象,吸引學生加入計算流體力學開源平臺的開發中。經過這樣的教學,這些學生未來如果從事計算流體力學相關行業,將具備解決實際工作中的流動問題的能力[4]。因此,自編開源“計算流體力學”教學平臺可有效解決“計算流體力學”理論與實踐教學脫鉤,以及教學導致的只會使用國外商業封裝軟件的問題。
于2021年春季和秋季學期,在2018級海洋工程與技術專業本科和力學學術型碩士“計算流體力學”課程中應用自編開源的“計算流體力學”教學平臺。課程成績主要包括平時課堂學習情況(15%)、編寫的數值計算程序(20%)和期末閉卷考試成績(65%),其中平時課堂學習情況中課堂學習占總成績的5%,平時作業占總成績的10%。教學過程和教學考核都強調了實際編寫計算程序的能力培養。作為開始實踐主要應用了兩個例子進行說明,一是自編不同格式求解激波相遇問題,二是自編準一維噴管流動的數值解用于“計算流體力學”教學過程。具體來說,第一個問題是使用Fortran語言,采用Godunov和Roe格式求解激波相遇問題并進行比較。在網格較密的情況下,兩種格式均能夠很好地描述激波相遇問題,得到管內各個區域的流動。其中Godunov格式采用Riemann方法構造界面值,與Roe格式的Rou平均方法相比,具有更高的精度,求解的結果能很好地驗證這一理論。通過這一問題的求解,可以讓學生直觀掌握不同差分格式的求解過程及精度問題,同時吸引學生加入教學平臺的開發中,實現界面程序的編寫。對于第二個問題,使用Fortran語言,采用MacCormack方法求解準一維噴管流動的數值解并與精確解進行比較研究,同時編寫了相應的界面,方便展示,結果見圖1所示。
通過這一個教學學年的思考和在教學過程中的具體實踐,經過與學生的交流,激發了學生學習“計算流體力學”的學習興趣,幫助學生理解有限差分方法、有限體積方法、線性方程的求解方法、網格的生成原理的方程變換等。在課程結束時,每一位學生都積極參與具體數值計算程序的編寫,且每一位學生都嘗試尋找自己感興趣的問題,使用自己熟悉的語言,從方程的離散到數值計算程序的編寫和調試,真實地提高了實際解決問題的能力。同時學生編寫的程序,經過整理,未來可以用于該課程的教學平臺,達到了良好互動,既培養了學生,又促進了教學的改革。其中一個教學班級編寫的代碼情況見圖2。

圖2 2021春季學期本科生編寫考核程序列表
由于“計算流體力學”課程在工科核心人才培養中的重要性,以及該課程理論與實踐結合的特殊性質,眾多學者對教學方法進行了有益的改革嘗試。目前,該課程的教學問題依舊存在,而自編程的開源教學平臺可以有效解決CFD理論復雜、教學不直觀,以及使用商業軟件存在看不到源代碼和被禁用風險等問題,為我國培養自主CFD核心創新人才提供一種有效的教學方法。
今后“計算流體力學”課程的持續建設計劃主要包括以下幾個方面:(1)加強課程教學課件建設,提高課件的質量;(2)加強課程思政建設,思考如何將課程思政與專業教學結合;(3)持續開展課程教學軟件建設,提高課程教學軟件的質量;(4)開展教學資源共享建設,推進課程課件、教學軟件共享推廣。該改革和嘗試仍要進一步挖掘課程思政元素,提高課件質量,改善教學軟件的接口,實現軟件共享及通用,提高可編寫和可接入的能力。
針對“計算流體力學”在海洋工程技術及相關工科專業的教學特點,思考目前“計算流體力學”課程教學存在的理論教學難度大、學生理解困難等問題。嘗試將自編的教學程序應用于實際的“計算流體力學”教學中,經過一個學年在本科和碩士研究生中的教學實踐,自編開源的“計算流體力學”教學平臺激發了學生學習“計算流體力學”的興趣,也幫助和加深了學生理解有限差分方法、有限體積方法、線性方程的求解方法、網格的生成原理的方程變換等。在課程結束時,每一位學生都積極參與具體數值計算程序的編寫,同時學生編寫的程序,經過整理,未來可以用于該課程的教學平臺,從而達到良好互動。本研究可為相關工科類“計算流體力學”教學提供一定的參考。