OpenFOAM(英文 Open Source Field Operation and Manipulation 的縮寫,意為開源的場運算和處理軟件)是對連續介質力學問題進行數值計算C++自由軟件工具包,其代碼遵守GNU通用公共許可證。它可進行數據預處理、後處理和自定義求解器,常用於計算流體力學(CFD)領域。該軟件由OpenFOAM基金會維護[1](商標OpenFOAM的擁有者硅谷圖形公司(SGI)贊助)。

OpenFOAM
在命令行窗口中運行的OpenFOAM
原作者Henry Weller
開發者The OpenFOAM Foundation
首次發布2004-12-10
當前版本4.1(2016年10月13日,​8年前​(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核心功能的實現是由大量的基礎庫完成的,其中包括:

  • 張量和場操作
  • 人類可讀的偏微分方程離散化語法
  • 線性系統求解[6]
  • 常微分方程求解[7]
  • 高級操作的自動並行化
  • 動態網格[8]
  • 通用物理模型
    • 流變模型(Rheological models)[9]
    • 熱力學模型及相關的數據庫[10]
    • 湍流模型[11]
    • 化學反應和動理學模型[12]
    • 拉格朗日粒子追蹤模型[13]
    • 熱輻射傳輸模型
    • 單參照系和多參照系方法

利用便捷直觀的高級語法和基礎庫提供的功能完成開發應用。通常應用可以歸為兩類:

  • 求解器:執行連續介質問題的求解計算
  • 實用程序:用於準備網格、設置模擬樣例、處理結果等

每個應用有其專注的功能:如應用blockMesh用於從用戶提供的輸入文件生成網格,而另一個應用icoFoam,則用來求解不可壓層流Navier-Stokes方程

最後,一些第三方軟件包被用來提供並行化能力(即OpenMPI)和進行圖像後處理(ParaView)。

功能

OpenFOAM的功能含有[14]

 
甲烷在空氣中燃燒的模擬。甲烷從底端噴出,同時被點燃。圖形界面是ParaView。圖中底色表示溫度,箭頭表示氣流速度,箭頭的顏色表示局部的氧氣含量。

除以上列舉的標準求解器之外,由於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的合併可能要等到一至兩年後。

付費軟件

  • CaediumSymscape出品的通用數值模擬環境。其RANS Flow的附加功能[32]提供了用於OpenFOAM的模型建立、解操作和後處理的圖形用戶界面。
  • CastNet DHCAE Tools出品的私有建模和模擬環境。[33]其中包含一個OpenFOAM的圖形界面前端。FOAM.
  • ICON FOAMpro CFDICON Process & Consulting Ltd進行維護。[34]大眾汽車[35]福特汽車[36]合作,主要圍繞着汽車應用而開發。該分支既包含社區貢獻的內容也包含ICON專有的開發。

替代軟件

開源軟件和自由軟件

私有軟件

參考文獻

  1. ^ The OpenFOAM Foundation homepage
  2. ^ OpenFOAM Release History
  3. ^ 存档副本. [2016-08-23]. (原始內容存檔於2012-12-06). 
  4. ^ Creating solvers in OpenFOAM. [2012-07-17]. (原始內容存檔於2012-08-07). 
  5. ^ OpenFOAM's run-time selection mechanism explained. [2012-07-17]. (原始內容存檔於2014-01-08). 
  6. ^ Linear system solvers in OpenFOAM. [2012-07-17]. (原始內容存檔於2012-07-23). 
  7. ^ Ordinary differential equation solvers in OpenFOAM. [2012-07-17]. (原始內容存檔於2012-08-07). 
  8. ^ Dynamic mesh in OpenFOAM. [2012-07-17]. (原始內容存檔於2012-07-23). 
  9. ^ Rheological models in OpenFOAM. [2012-07-17]. (原始內容存檔於2012-07-23). 
  10. ^ Thermophysical models in OpenFOAM. [2012-07-17]. (原始內容存檔於2012-07-23). 
  11. ^ Turbulence models in OpenFOAM. [2012-07-17]. (原始內容存檔於2012-07-23). 
  12. ^ Chemical reactions and kinetics models in OpenFOAM. [2012-07-17]. (原始內容存檔於2012-08-07). 
  13. ^ Lagrangian particle tracking in OpenFOAM. [2012-07-17]. (原始內容存檔於2012-07-23). 
  14. ^ OpenFOAM features. [2012-07-17]. (原始內容存檔於2012-07-23). 
  15. ^ OpenFOAM incompressible flow solvers. [2012-07-17]. (原始內容存檔於2012-07-23). 
  16. ^ OpenFOAM Compressible flow solvers. [2012-07-17]. (原始內容存檔於2012-07-23). 
  17. ^ OpenFOAM buoyancy-driven flow solvers. [2012-07-17]. (原始內容存檔於2012-07-23). 
  18. ^ Multiphase flow solvers. [2012-07-17]. (原始內容存檔於2012-07-23). 
  19. ^ OpenFOAM solvers for combustion. [2012-07-17]. (原始內容存檔於2012-07-23). 
  20. ^ OpenFOAM solvers for conjugate heat transfer. [2012-07-17]. (原始內容存檔於2012-07-23). 
  21. ^ OpenFOAM molecular dynamics solvers. [2012-07-17]. (原始內容存檔於2012-07-23). 
  22. ^ OpenFOAM Direct Simulation Monte Carlo solvers. [2012-07-17]. (原始內容存檔於2012-07-23). 
  23. ^ OpenFOAM Electromagnetics solvers. [2012-07-17]. (原始內容存檔於2012-07-23). 
  24. ^ OpenFOAM solid dynamics solvers. [2012-07-17]. (原始內容存檔於2012-07-23). 
  25. ^ http://www.openfoam.org/licence.php頁面存檔備份,存於網際網路檔案館) OpenFOAM Licensing Page
  26. ^ blueCAPE's homepage. [2012-07-17]. (原始內容存檔於2012-04-25). 
  27. ^ FreeFOAM Home Page. [2012-07-17]. (原始內容存檔於2012-06-17). 
  28. ^ OpenFlow source code patch. [2012-07-17]. (原始內容存檔於2012-07-30). 
  29. ^ OpenFOAM-extend Project Home Page. [2012-07-17]. (原始內容存檔於2012-06-17). 
  30. ^ Wikki Ltd頁面存檔備份,存於網際網路檔案館).
  31. ^ Solvers頁面存檔備份,存於網際網路檔案館), Utilities頁面存檔備份,存於網際網路檔案館), and Other contributions頁面存檔備份,存於網際網路檔案館
  32. ^ Caedium RANS Flow add-on. [2012-07-17]. (原始內容存檔於2012-07-02). 
  33. ^ DHCAE Tools homepage. [2012-07-17]. (原始內容存檔於2012-04-25). 
  34. ^ ICON FOAMpro Process. [2012-07-17]. (原始內容存檔於2012-04-25). 
  35. ^ ICON VWG SAE paper. [2012-07-17]. (原始內容存檔於2012-04-23). 
  36. ^ ICON FORD SAE paper. [2012-07-17]. (原始內容存檔於2012-04-23). 
  37. ^ SU2 homepage. [2012-07-17]. (原始內容存檔於2016-10-19). 
  38. ^ FreeCFD homepage. [2012-07-17]. (原始內容存檔於2012-07-10). 
  39. ^ Gerris homepage. [2012-07-17]. (原始內容存檔於2019-10-19). 
  40. ^ OpenFVM homepage. [2012-07-17]. (原始內容存檔於2016-07-29). 
  41. ^ [depts.washington.edu/clawpack]

外部連結

官方資源

社區資源