來源:CFD之道
提到開源CFD代碼,很多人想到的是OpenFOAM,不過今天要介紹的是SU2。
SU2最初由美國斯坦福大學帶領開發,是一套基于 C++和Python的用于偏微分方程 (PDE) 的數值求解和求解PDE約束優化問題開源軟件工具集,該工具集針對計算流體動力學(CFD)和空氣動力學形狀優化而設計,但可擴展用于處理其他任意控制方程組,如勢流、彈性、電動力學、化學反應流等。近幾年在用戶和開發人員的不斷努力下,SU2已成為一個相對成熟的CFD工具,含有了可壓縮和不可壓縮流體的Euler、NS和 RANS求解器。可進行從低速不可壓流動到高超速可壓縮流體的計算。支持OpenMP與MPI并行計算,同時具備了網格自適應功能。SU2開源,其遵循LGPL協議(LGPL協議是一個商用友好的協議)。
SU2相關網站:
關于 SU2 的技術細節,可參閱以下 AIAA 期刊文章:"SU2: An open-source suite for multiphysics simulation and design," AIAA Journal, 54(3):828-846, 2016. http://arc.aiaa.org/doi/10.2514/1.J053813
1 軟件安裝
這里試試在Windows下安裝SU2。
- 先下載上圖中的SU2 MPI V8.0.0 for Windows(如果本機上已經安裝了MS MPI的話可以安裝這個,否則安裝上面那個)
- 下載后得到一個壓縮文件,其中包含一個bin文件夾,其內容如下圖所示
解壓文件,并將bin文件夾改名為SU2,如放置于C盤根路徑下- 將路徑
c:\SU2
添加到環境變量Path中,確保在cmd中能夠直接運行程序SU2_CFD.exe,如下圖所示表示一切OK
2 測試計算
利用Quick Start文檔中提供的案例進行測試。該案例利用SU2計算NACA0012翼型。該案例的網格文件與配置文件可以在SU2源代碼QuickStart文件夾中找到。計算結果如下圖所示。
NACA 0012 Pressure本案例求解自由流條件的空氣,攻角為 1.25 度的 NACA 0012 翼型,計算條件為:
所提供的非結構化網格為本地 .su2 格式。它由 10216 個三角形單元、5233 個點和名為 airfoil 和 farfield 的兩個邊界組成。翼面使用流動切線歐拉壁邊界條件,而遠場使用基于標準特性的邊界條件。下圖為網格視圖。
除網格外,運行 SU2_CFD 求解器所需的唯一文件就是詳細的配置選項。它定義了問題,包括數值方法、流動條件、多網格等所有選項,還指定了輸入網格和輸出文件的名稱。為保持本教程的簡潔性,這里只討論兩個配置選項。其余教程將討論更多配置選項。
在文本編輯器中打開 inv_NACA0012.cfg 文件后,其中一個早期選項是 MATH_PROBLEM:
% Mathematical problem (DIRECT, CONTINUOUS_ADJOINT)
MATH_PROBLEM= DIRECT
SU2 能夠運行多組方程的直接問題和鄰接問題。直接分析可求解幾何體周圍的流動,并計算出相關量,如體上的升力和阻力系數。通過求解鄰接問題,可以采用一種有效的方法,獲得單一目標函數(如阻力系數)相對于大量設計變量(表面變形)的變化。在進行空氣動力學形狀設計時,直接求解和鄰接求解通常可以提供優化器所需的目標分析和梯度信息。在本教程中,我們將首先對 NACA 0012 機翼進行直接模擬。
用戶還可以設置輸出文件的格式:
% Output file format
OUTPUT_FILES= (RESTART, PARAVIEW, SURFACE_CSV)
SU2 可以輸出 .vtu (ParaView)、.dat (Tecplot ASCII)和 .szplt (Tecplot 二進制)格式的解文件,這些文件可分別在 ParaView 和 Tecplot 可視化軟件包中打開。在本教程中,我們將文件類型設置為 PARAVIEW。
采用以下步驟求解案例:
- 可以導航到 QuickStart 目錄,或者創建一個運行教程的目錄。如果創建新目錄,請將配置文件 (inv_NACA0012.cfg) 和網格文件 (mesh_NACA0012_inv.su2) 復制到該目錄。
- 在命令行輸入
SU2_CFD inv_NACA0012.cfg
,運行可執行文件。如果沒有設置適當的環境變量,可能需要在命令行中指定 SU2_CFD 可執行文件的路徑。
- SU2 將在流量求解器的每次迭代中輸出殘差更新,模擬將在達到指定的收斂標準后停止。計算完畢后如下圖所示。
- SU2計算完畢后,將寫入包含流動結果的文件(文件名中包含 "flow")。計算結果數據可在 ParaView (.vtu) 或 Tecplot (.dat 或 .szplt) 中進行可視化。更具體地說,這些文件包括:
- flow.vtu(或 flow.szplt)- 全區域流動解。
- surface_flow.csv(或surface_flow.vtu或surface_flow.szplt)-包含翼型表面數值的文件。
- restart_flow.dat - 內部格式的重啟文件,用于在 SU2 中重啟該模擬。
- history.csv (或 history.dat)- 包含收斂歷史信息的文件。
生成的文件如下圖所示。
利用ParaView讀取flow.vtu
文件進行后處理。
計算結果看起來還不錯。
3 其他
SU2擁有比較完善的文檔系統,網站上可以直接查看理論文檔、用戶文檔、開發文檔、案例文檔、V&V等。
不過目前從官網提供的案例來看,SU2可以用于流動、傳熱、多組分、結構計算、多物理場(流固耦合、共軛傳熱等)、伴隨求解優化等方面,目前尚不清楚其是否能夠求解多相流、多參考系、動網格之類的問題。
SU2的求解參數通過一個cfg文件來編寫,調試和修改都比較方便。
SU2的資料似乎挺少,遠沒有OpenFOAM豐富,不過在可壓縮流動方面,SU2似乎比OpenFOAM有更好的表現。
目前還不清楚SU2的代碼開發機制是怎樣的,后面有時間可以研究一下。
原文鏈接:https://mp.weixin.qq.com/s/KLQPpR_TADzhOg-7b3v_mg