OpenFOAM
OpenFOAM(英文 Open Source Field Operation and Manipulation 的縮寫,意為開源的場運算和處理軟件)是對連續媒介力學問題進行數值計算的C++自由軟件工具包,其代碼遵守GNU通用公眾特許條款。它可進行資料預處理、後處理和自訂求解器,常用於計算流體力學(CFD)領域。該軟件由OpenFOAM基金會維護[1](商標OpenFOAM的擁有者矽谷圖形公司(SGI)贊助)。
原作者 | Henry Weller |
---|---|
開發者 | The OpenFOAM Foundation |
首次釋出 | 2004-12-10 |
目前版本 | 4.1(2016年10月13日 | )
原始碼庫 | |
程式語言 | C++ |
作業系統 | Unix/Linux |
類型 | 計算流體力學 |
特許條款 | GNU通用公眾特許條款 |
網站 | www.openfoam.org |
歷史
編輯OpenFOAM的早期開發始於1980年代末期的倫敦帝國學院,其目標是為了編寫一個相對於當時事實上的標準,FORTRAN,更為強大和靈活的通用模擬計算平台。並且因此選擇了擁有高度模組化和物件導向特性的C++作為其程式語言。在2004年OpenFOAM以開源方式釋出之前,英國Nabla有限公司曾銷售過FOAM,OpenFOAM的前身。[2]2011年8月15日,OpenCFD宣佈它被矽谷圖形公司(SGI)收購。[3]
OpenFOAM是最早的用C++寫成的重要科學計算軟件套件之一[來源請求]。現已成為使用多面體網格的最主要的通用計算流體力學(CFD)軟件.
特色
編輯語法
編輯OpenFOAM一個非常有特色的地方是它描述張量和偏微分方程式的語法與被求解的方程式本身非常相似,事實上便捷地在程式中表現傳統的數學記號正是其語法設計的目標。例如方程式[4]
對應的OpenFOAM代碼是
solve
(
fvm::ddt(rho,U)
+ fvm::div(phi,U)
- fvm::laplacian(mu,U)
==
- fvc::grad(p)
);
得益於物件導向的程式設計和運算子多載,用戶可以相對容易地建立自己的求解器。然而,大量模板元程式設計的運用以及相應開發文件的缺乏,使得越是深入庫底層的客製化化越是困難和充滿挑戰。
可延伸性
編輯由於使用了工廠方法和基礎類別作為介面,OpenFOAM具有很好的可延伸性。用戶在建立客製化化的物體或對象(例如邊界條件或亂流模型)時,無需修改或是重新編譯OpenFOAM軟件套件,便可在已有的求解器上工作。OpenFOAM稱之為執行時決策(run-time selection)[5]
OpenFOAM的架構
編輯OpenFOAM核心功能的實現是由大量的基礎庫完成的,其中包括:
利用便捷直觀的進階語法和基礎庫提供的功能完成開發應用。通常應用可以歸為兩類:
- 求解器:執行連續媒介問題的求解計算
- 實用程式:用於準備網格、設置模擬樣例、處理結果等
每個應用有其專注的功能:如應用blockMesh用於從用戶提供的輸入檔案生成網格,而另一個應用icoFoam,則用來求解不可壓層流的Navier-Stokes方程式。
功能
編輯OpenFOAM的功能含有[14]:
- 基本的計算流體力學求解器
- 不可壓流的雷諾平均納維-斯托克斯方程式法(RANS)和大渦流模擬法(LES)求解[15]
- 可壓流的RANS和LES求解[16]
- 浮力流動求解器[17]
- 直接數值模擬(DNS) 和 LES
- 多相流體求解器[18]
- 粒子跟蹤求解器
- 燃燒問題求解器[19]
- 耦合熱傳輸求解器[20]
- 分子動力學求解器[21]
- [22]
- 電磁學求解器[23]
- 剛體動力學模擬器[24]
除以上列舉的標準求解器之外,由於OpenFOAM的語法,建立自訂的求解器也是容易的。
OpenFOAM實用程式被細分為:
- 網格實用程式
- 網格生成: 它們通過輸入檔案或幾何描述檔案(如)來自動生成計算用的網格(hex-dominant, snappyHexMesh)
- 網格格式轉化:轉化其他工具生成的網格到OpenFOAM格式
- 網格處理:執行一些網格操作,如局部最佳化,區域定義等
- 並列處理工具:提供計算任務的分解、合併和重分發功能來實現平行計算
- 預處理工具:準備模擬樣例
- 後處理工具:處理模擬結果,包含到OpenFOAM和ParaView的外掛程式
- 表面處理工具
- 熱物理工具
特許條款
編輯OpenFOAM是自由軟件和開源軟件,在GNU通用公眾特許條款版本3下釋出。[25]
優劣
編輯優點
編輯- 用戶友好的偏微分方程式描述語法
- 有非結構化多面體網格的處理能力
- 自動並列化OpenFOAM高階語言寫成的應用
- 現成的涵蓋寬領域的應用和模型
- 有由開發者提供的商業支援和培訓
- 無特許條款花費
缺點
編輯- 缺少整合的圖形化用戶介面(GUI)(但有獨立私有軟件可選)
- 開發文件缺乏足夠的細節,學習曲線陡峭
- 文件缺乏維護,入門困難
分支和改編
編輯免費軟件
編輯- blueCFD 是改編自OpenFlow的執行在 Windows 上的OpenFOAM交叉編譯版本。該軟件套件同時也含有一些有用的額外函數和工具。blueCAPE出品。[26]
- FreeFOAM[27]為了把OpenFOAM從它對系統的依賴中解脫出來,使其安裝更為可攜式和用戶友好而建立的分支。其開發緊跟最新的OpenFOAM釋出版,不附帶額外的功能,使用CMake作為編譯系統。
- OpenFlow 是一個OpenFOAM的Windows平台交叉編譯的原始碼修補程式。blueCFD中OpenFOAM的部分既是由它而來。Symscape出品[28]
- OpenFOAM-extend[29]由Wikki有限公司維護[30]。該分支有社區貢獻的大量內容,並且當中的絕大部分貢獻可以裝入到OpenFOAM的官方版本中,而只產生最低限度的影響。[31]它的開發與官方版OpenFOAM是並列進行的,對最新版OpenFOAM的合併可能要等到一至兩年後。
付費軟件
編輯替代軟件
編輯開源軟件和自由軟件
編輯- Stanford University Unstructured (SU2)[37]
- Code Saturne (GPL)
- FreeCFD[38]
- Gerris Flow Solver[39]
- OpenFVM[40]
- CLAWPACK[41]
私有軟件
編輯參考文獻
編輯- ^ The OpenFOAM Foundation homepage
- ^ OpenFOAM Release History
- ^ 存档副本. [2016-08-23]. (原始內容存檔於2012-12-06).
- ^ Creating solvers in OpenFOAM. [2012-07-17]. (原始內容存檔於2012-08-07).
- ^ OpenFOAM's run-time selection mechanism explained. [2012-07-17]. (原始內容存檔於2014-01-08).
- ^ Linear system solvers in OpenFOAM. [2012-07-17]. (原始內容存檔於2012-07-23).
- ^ Ordinary differential equation solvers in OpenFOAM. [2012-07-17]. (原始內容存檔於2012-08-07).
- ^ Dynamic mesh in OpenFOAM. [2012-07-17]. (原始內容存檔於2012-07-23).
- ^ Rheological models in OpenFOAM. [2012-07-17]. (原始內容存檔於2012-07-23).
- ^ Thermophysical models in OpenFOAM. [2012-07-17]. (原始內容存檔於2012-07-23).
- ^ Turbulence models in OpenFOAM. [2012-07-17]. (原始內容存檔於2012-07-23).
- ^ Chemical reactions and kinetics models in OpenFOAM. [2012-07-17]. (原始內容存檔於2012-08-07).
- ^ Lagrangian particle tracking in OpenFOAM. [2012-07-17]. (原始內容存檔於2012-07-23).
- ^ OpenFOAM features. [2012-07-17]. (原始內容存檔於2012-07-23).
- ^ OpenFOAM incompressible flow solvers. [2012-07-17]. (原始內容存檔於2012-07-23).
- ^ OpenFOAM Compressible flow solvers. [2012-07-17]. (原始內容存檔於2012-07-23).
- ^ OpenFOAM buoyancy-driven flow solvers. [2012-07-17]. (原始內容存檔於2012-07-23).
- ^ Multiphase flow solvers. [2012-07-17]. (原始內容存檔於2012-07-23).
- ^ OpenFOAM solvers for combustion. [2012-07-17]. (原始內容存檔於2012-07-23).
- ^ OpenFOAM solvers for conjugate heat transfer. [2012-07-17]. (原始內容存檔於2012-07-23).
- ^ OpenFOAM molecular dynamics solvers. [2012-07-17]. (原始內容存檔於2012-07-23).
- ^ OpenFOAM Direct Simulation Monte Carlo solvers. [2012-07-17]. (原始內容存檔於2012-07-23).
- ^ OpenFOAM Electromagnetics solvers. [2012-07-17]. (原始內容存檔於2012-07-23).
- ^ OpenFOAM solid dynamics solvers. [2012-07-17]. (原始內容存檔於2012-07-23).
- ^ http://www.openfoam.org/licence.php (頁面存檔備份,存於互聯網檔案館) OpenFOAM Licensing Page
- ^ blueCAPE's homepage. [2012-07-17]. (原始內容存檔於2012-04-25).
- ^ FreeFOAM Home Page. [2012-07-17]. (原始內容存檔於2012-06-17).
- ^ OpenFlow source code patch. [2012-07-17]. (原始內容存檔於2012-07-30).
- ^ OpenFOAM-extend Project Home Page. [2012-07-17]. (原始內容存檔於2012-06-17).
- ^ Wikki Ltd (頁面存檔備份,存於互聯網檔案館).
- ^ Solvers (頁面存檔備份,存於互聯網檔案館), Utilities (頁面存檔備份,存於互聯網檔案館), and Other contributions (頁面存檔備份,存於互聯網檔案館)
- ^ Caedium RANS Flow add-on. [2012-07-17]. (原始內容存檔於2012-07-02).
- ^ DHCAE Tools homepage. [2012-07-17]. (原始內容存檔於2012-04-25).
- ^ ICON FOAMpro Process. [2012-07-17]. (原始內容存檔於2012-04-25).
- ^ ICON VWG SAE paper. [2012-07-17]. (原始內容存檔於2012-04-23).
- ^ ICON FORD SAE paper. [2012-07-17]. (原始內容存檔於2012-04-23).
- ^ SU2 homepage. [2012-07-17]. (原始內容存檔於2016-10-19).
- ^ FreeCFD homepage. [2012-07-17]. (原始內容存檔於2012-07-10).
- ^ Gerris homepage. [2012-07-17]. (原始內容存檔於2019-10-19).
- ^ OpenFVM homepage. [2012-07-17]. (原始內容存檔於2016-07-29).
- ^ [depts.washington.edu/clawpack]
外部連結
編輯官方資源
編輯- Official OpenFOAM web site(頁面存檔備份,存於互聯網檔案館)
- OpenFOAM official documentation(頁面存檔備份,存於互聯網檔案館)
- OpenFOAM bug-reporting system(頁面存檔備份,存於互聯網檔案館)
社區資源
編輯- OpenFOAM Forum at CFD Online(頁面存檔備份,存於互聯網檔案館)
- OpenFOAM wiki(頁面存檔備份,存於互聯網檔案館)
- FOAM CFD web site, by one of the original developers of the code, who is not associated with OpenCFD.
- A Blog about OpenFOAM in Chinese(頁面存檔備份,存於互聯網檔案館)
- OpenFOAM中文愛好者之家網站(頁面存檔備份,存於互聯網檔案館)
- 入門課程