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中文愛好者之家網站(頁面存檔備份,存於網際網路檔案館)
- 入門課程