OpenFOAM

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

**歷史**
OpenFOAM的早期開發始於1980年代末期的倫敦帝國學院，其目標是為了編寫一個相對於當時事實上的標準，FORTRAN，更為強大和靈活的通用模擬計算平臺。並且因此選擇了擁有高度模塊化和麵向對象特性的C++作為其編程語言。在2004年OpenFOAM以開源方式發佈之前，英國Nabla有限公司曾銷售過FOAM，OpenFOAM的前身。2011年8月15日，OpenCFD宣佈它被硅谷圖形公司(SGI)收購。
OpenFOAM是最早的用C++寫成的重要科學計算軟件包之一date=October 2011。現已成為使用多面體網格的最主要的通用計算流體力學(CFD)軟件.

**特色**

**語法**
OpenFOAM一個非常有特色的地方是它描述張量和偏微分方程的語法與被求解的方程本身非常相似，事實上便捷地在程序中表達傳統的數學記號正是其語法設計的目標。例如方程
 
對應的OpenFOAM代碼是
solve
(
fvm::ddt(rho,U)
+ fvm::div(phi,U)
- fvm::laplacian(mu,U)

**
- fvc::grad(p)
);
得益於面向對象的程序設計和運算符重載，使用者可以相對容易地建立自己的求解器。然而，大量模板元編程的運用以及相應開發文檔的缺乏，使得越是深入庫底層的定製化越是困難和充滿挑戰。

**可擴展性**
由於使用了工廠方法和基類作為接口，OpenFOAM具有很好的可擴展性。使用者在建立定製化的物體或對象（例如邊界條件或湍流模型）時，無需修改或是重新編譯OpenFOAM軟件包，便可在已有的求解器上工作。OpenFOAM稱之為運行時決策(run-time selection)

**OpenFOAM的架構**
OpenFOAM核心功能的實現是由大量的基礎庫完成的，其中包括：- 張量和場操作- 人類可讀的偏微分方程離散化語法- 線性系統求解- 常微分方程求解- 高級操作的自動並行化- 動態網格- 通用物理模型
** 流變模型(Rheological models)
** 熱力學模型及相關的數據庫
** 湍流模型
** 化學反應和動理學模型
** 拉格朗日粒子追蹤模型
** 熱輻射傳輸模型
** 單參照系和多參照系方法
利用便捷直觀的高級語法和基礎庫提供的功能完成開發應用。通常應用可以歸為兩類：- 求解器：執行連續介質問題的求解計算- 實用程序：用於準備網格、設置模擬樣例、處理結果等
每個應用有其專注的功能：如應用blockMesh用於從用戶提供的輸入文件生成網格，而另一個應用icoFoam，則用來求解不可壓層流的Navier-Stokes方程。
最後，一些第三方軟件包被用來提供並行化能力（即OpenMPI）和進行圖像後處理（ParaView）。

**功能**
OpenFOAM的功能含有：
甲烷在空氣中燃燒的模擬。甲烷從底端噴出，同時被點燃。圖形界面是ParaView。圖中底色表示溫度，箭頭表示氣流速度，箭頭的顏色表示局部的氧氣含量。- 基本的計算流體力學求解器- 不可壓流的雷諾平均納維－斯托克斯方程法(RANS)和大渦流模擬法(LES)求解- 可壓流的RANS和LES求解- 浮力流動求解器- 直接數值模擬(DNS) 和 LES- 多相流體求解器- 粒子跟蹤求解器- 燃燒問題求解器- 耦合熱傳輸求解器- 分子動力學求解器- 電磁學求解器- 剛體動力學模擬器
除以上列舉的標準求解器之外，由於OpenFOAM的語法，建立自定義的求解器也是容易的。
OpenFOAM實用程序被細分為：- 網格實用程序
** 網格生成: 它們通過輸入文件或幾何描述文件（如）來自動生成計算用的網格(hex-dominant, snappyHexMesh)
** 網格格式轉化：轉化其他工具生成的網格到OpenFOAM格式
** 網格處理：執行一些網格操作，如局部優化，區域定義等- 並行處理工具：提供計算任務的分解、合併和重分發功能來實現並行計算- 預處理工具：準備模擬樣例- 後處理工具：處理模擬結果，包含到OpenFOAM和ParaView的插件- 表面處理工具- 熱物理工具

**許可證**
OpenFOAM是自由軟件和開源軟件，在GNU通用公共許可證版本3下發布。

**優劣**

**優點**
 用戶友好的偏微分方程描述語法- 有非結構化多面體網格的處理能力- 自動並行化OpenFOAM高級語言寫成的應用- 現成的涵蓋寬領域的應用和模型- 有由開發者提供的商業支持和培訓- 無許可證花費

**缺點**
 缺少集成的圖形化用戶界面(GUI)（但有獨立私有軟件可選）- 開發文檔缺乏足夠的細節，學習曲線陡峭- 文檔缺乏維護，入門困難

**分支和改編**

**免費軟件**
 blueCFD 是改編自OpenFlow的運行在 Windows 上的OpenFOAM交叉編譯版本。該軟件包同時也含有一些有用的額外函數和工具。blueCAPE出品。- FreeFOAM為了把OpenFOAM從它對系統的依賴中解脫出來，使其安裝更為便攜和用戶友好而建立的分支。其開發緊跟最新的OpenFOAM發佈版，不附帶額外的功能，使用CMake作為編譯系統。- OpenFlow 是一個OpenFOAM的Windows平臺交叉編譯的源碼補丁。blueCFD中OpenFOAM的部分既是由它而來。Symscape出品- OpenFOAM-extend由Wikki有限公司維護。該分支有社區貢獻的大量內容，並且當中的絕大部分貢獻可以裝入到OpenFOAM的官方版本中，而只產生最低限度的影響。它的開發與官方版OpenFOAM是並列進行的，對最新版OpenFOAM的合併可能要等到一至兩年後。

**付費軟件**
Caedium 是Symscape出品的通用數值模擬環境。其RANS Flow的附加功能提供了用於OpenFOAM的模型建立、解操作和後處理的圖形用戶界面。
*CastNet DHCAE Tools出品的私有建模和模擬環境。其中包含一個OpenFOAM的圖形界面前端。FOAM.
*ICON FOAMpro CFD 由ICON Process & Consulting Ltd進行維護。與大眾汽車和福特汽車合作，主要圍繞著汽車應用而開發。該分支既包含社區貢獻的內容也包含ICON專有的開發。

**替代軟件**

**開源軟件和自由軟件**
 Stanford University Unstructured (SU2)- Code Saturne (GPL)- FreeCFD- Gerris Flow Solver- OpenFVM- CLAWPACK

**私有軟件**
 ANSYS CFX- ANSYS Fluent- Pumplinx- STAR-CCM+- KIVA (software)- RELAP5-3D- PowerFlow- FOAMpro

**參考文獻**

**外部鏈接**

**官方資源**
  Official OpenFOAM web sitedate=20160922032819 -  OpenFOAM official documentationdate=20111130143849 -  OpenFOAM bug-reporting systemdate=20110521014530 

**社區資源**
  OpenFOAM Forum at CFD Onlinedate=20120718175629 -  OpenFOAM wikidate=20071216045814 -  FOAM CFD web site, by one of the original developers of the code, who is not associated with OpenCFD.-  A Blog about OpenFOAM in Chinesedate=20120415074449 -  OpenFOAM中文愛好者之家網站date=20120617201038 -  入門課程