HPC app - OpenFOAM - 2 == ### 1. Openfoam different version and docker image ### 2. Openfoam case review <br> <br> <br> <br> <br> ## Openfoam different version and docker image Openfoam主要有兩個機構的版本,兩者皆為開源 : * **ESI-OpenCFD** * **OpenFOAM Foundation** * **foam-extend** <br> #### [ESI-OpenCFD](https://www.openfoam.com/about-esi-opencfd) ESI-OpenCFD 是 OpenFOAM® 軟體的開發者,屬於 ESI Group 的一部分。 *(ESI Group 是法國一家國際性的軟體和服務公司,專注於虛擬產品的開發和測試。)* ESI-OpenCFD 負責 OpenFOAM 軟體的開發和維護。他們使用特定的版本編號系統,即“vYYMM”(例如“v1706”表示 2017 年 6 月發布)。 ![image](https://hackmd.io/_uploads/H19p0seGR.png) #### [OpenFOAM Foundation](https://openfoam.org/) 該基金會是一個非營利組織,目的是提供和維護 OpenFOAM 作為一個免費和開源的軟體,確保其廣泛可用性和持續更新。基金會使用“年.版本”(如 5.0, 5.1)的版本編號方式, ![image](https://hackmd.io/_uploads/rkvkk3lMA.png) <br> History * 2004年12月10日 - OpenCFD 發布 OpenFOAM 1.0。 * 2011年8月 - OpenCFD 被 Silicon Graphics International (SGI) 收購。在這次收購後,OpenCFD 和 SGI 一起在美國創建了 OpenFOAM Foundation Inc.,並將 OpenFOAM 軟件版權轉讓給了這個新成立的基金會。 * 2012年9月12日 - OpenCFD 被 Engineering Systems International (ESI) Group 收購。收購後,ESI Group 的代表取代了 SGI 的代表,成為 OpenFOAM Foundation Inc. 的董事會成員。 * 2013 - 2014年間 - OpenCFD 準備並發布了多個 OpenFOAM 版本,這些版本由 OpenFOAM Foundation Inc. 發布。 * 2014年4月25日 - OpenFOAM Foundation Ltd. 在英國注冊成立,這一次注冊是與 ESI Group 的代表共同進行的。 [foam-extend](https://openfoamwiki.net/index.php/Changes) 它是OpenFOAM®開源庫的一個分支。 **開放和歡迎貢獻**:鼓勵和整合來自**所有用戶和開發者的貢獻**,使其成為一個**高度協作和開放的開發環境**。 **增強功能和修覆**:與原始的 OpenFOAM 相比,foam-extend 包含了許多社區貢獻者提供的 **bug 修覆、性能改進、擴展功能和附加特性**。 例如,它支持動態網格和拓撲變化、渦輪機械擴展(包括通用網格插值(GGI)、循環 GGI 和混合平面)、塊耦合矩陣支持、隱式耦合的對流換熱和其他物理過程耦合、有限區域方法、全面的動態網格功能(包括運動和拓撲變化)以及 **GPU 支持**。 **版本和歷史**:foam-extend 有自己的版本命名和發布策略,回溯到最初的 OpenFOAM 編號方案。例如,foam-extend 的版本 3.2 被昵稱為“Ann Arbor”,繼承並延續了由 Hrvoje Jasak 教授和 Henry Weller 先生在帝國理工學院(Imperial College)開發的原始 FOAM 代碼的傳統和精神。 **社區非官方項目**:雖然 OPENFOAM 是 ESI Group 的注冊商標,**foam-extend 作為社區努力的產物,並沒有得到 ESI Group 的官方認可或背書**。 ![image](https://hackmd.io/_uploads/H1oUUaZzR.png) <br> rescale使用ESI-OpenCFD下的Openfoam版本。 ![image](https://hackmd.io/_uploads/HktVyhlf0.png) <br> 使用OpenCFD提供docker image作為使用。 ![image](https://hackmd.io/_uploads/rkcqknxfC.png) **(ESI) [Openfoam third-party libraries list](https://develop.openfoam.com/Development/ThirdParty-common)** ADIOS2 CCMIO CGAL CMake FFTW Gcc Gperftools HYPRE KAHIP LLVM METIS MGridGen MPICH MVAPICH Mesa OPENMPI PETSC ParaView Qt SCOTCH VTK <br> <br> <br> ## Openfoam case review ### 1.汙染物例子 Pollutant Dispersion Modelling using CFD openfoam版本 : 2012 -> 2312 mpirun -np : 2 memory : 4G 網格總數量 : 182,249 運行時間 : 約40min 資料量大小 : 約23GB **模擬會因為眾多不同參數的設定而影響整體運算時間。** EX. **adjustTimeStep**: 此選項設定為 yes 表示 OpenFOAM 將根據特定條件(通常是基於 Courant 數)動態調整時間步長 (deltaT)。 **開啟這個功能有助於在模擬過程中維持數值穩定性**,特別是在流體動力學模擬中,當物理或數值條件變化較大時。 **maxCo** (最大 Courant 數): Courant 數是一個重要的無量綱數,用於評估數值解的穩定性。 **它表示在一個時間步長內流體移動的距離與計算網格大小的比例**。 在CFD模擬中,較高的 Courant 數可能會導致不穩定或不準確的結果。maxCo 設定了允許的最大 Courant 數,通常設定為 0.5 或更低,以確保穩定性。當 adjustTimeStep 開啟時,如果計算出來的 Courant 數超過這個限制,OpenFOAM 會自動減小時間步長。 **deltaT** (時間步長): 這是模擬中每個時間步進的實際物理時間,以秒為單位。 時間步長的選擇對模擬的準確性和效率有顯著影響。 **太小的時間步長會導致模擬過程緩慢,而太大可能會導致數值不穩定。** 在 adjustTimeStep 為 yes 的情況下,如果計算出的 Courant 數超過 maxCo 所設定的值,deltaT 會被自動調整。 <br> <br> ### 2.子彈列車例子 openfoam版本 : 5.0(openfoam foundation) -> 2312 mpirun -np : 網格數量 : 運行時間 : https://www.reddit.com/r/CFD/comments/g8yds2/is_there_any_difference_between_openfoam_7_and/ ESI-OpenCFD團隊過去有重寫網格library。 openfoam no mpirun 2312 V openfoam mpirun 2312 X (多增加了 decomposePar & reconstructPar 動作) ### 3.船體阻力例子 openfoam版本 : 2112 -> 2312 mpirun -np : 2 網格數量 : 570K ~ 2M running