---
# System prepended metadata

title: Openfoam

---

# OpenFOAM

如果尚未登入，請登入 Rancher 並參考 [Rancher 教學文件](https://hackmd.io/@hoover0201/Bk2QcEj7A)。

OpenFOAM（Open Field Operation and Manipulation）是一個開源的計算流體動力學（CFD）軟體包，廣泛應用於模擬物理過程中的複雜流體動力學和熱力學現象，本文**OpenFOAM版本為1.0.0**
## 版本要求
**Kubernetes 1.25+ 
Rancher 2.7.3+**

## 主要功能 ##
* 流體動力學模擬：模擬從層流到湍流的各種流動現象，支持廣泛的湍流模型，適用於多種流體動力學研究和工業應用。
* 熱力學模擬：涵蓋導熱、對流和輻射等傳熱過程，廣泛應用於熱管理和熱設計領域。
* 顆粒動力學：處理顆粒物的運動和交互作用，包括顆粒跟蹤和離散相建模等功能。
## Notes #
* **CPU**:建議使用多核心處理器，例如 AMD EPYC 或 Intel Xeon。
* **Number of cores**:每個記憶體通道建議配置 2-4 個 CPU 核心。
* **記憶體需求**：
1. 對於少於 10M 網格的模擬，建議配置 32GB RAM。
2. 對於等於 10M 網格的模擬，若在單一電腦上執行多項分析，則需 64GB RAM。
3. 對於超過 10M 網格的模擬，每增加 1M 網格，建議增加 2GB RAM。
*  **GPU** : 4GB 或更多記憶體的 GPU 卡。
5. **OpenFOAM 的輸入和輸出數據放置於相同的路徑下。**



# 請按照以下步驟部署 
## 選擇要部署的應用程式 ##
選擇使用者所創建的**namespace**(1)、點選**Apps**(2)、點選**Charts**(3)、點選**Hpc-apps**(4)、點選**Openfoam**(5)
![螢幕擷取畫面 2024-05-24 114139](https://hackmd.io/_uploads/SyIi3YpmR.png)


## 選擇應用程式版本 ##
選擇需要的應用程式版本"**Chart Versions**"(1)，點選**Install**(2)
![螢幕擷取畫面 2024-05-24 160611](https://hackmd.io/_uploads/ryeEia6XA.png)





## 安裝應用程式 ##
在"**name**"裡輸入使用者想要的name(1)，如果沒有勾選"**Custom Helm options before install**"(2)請直接按下**Next**(3)。
![螢幕擷取畫面 2024-05-24 115449](https://hackmd.io/_uploads/B1n6J5TQC.png)



## 編輯選項 ##

在 安裝Openfoam的過程中可以看到以下編輯選項：General、Input/Output Data。這些選項可協助使用者配置和管理應用程式的各種參數。

以下是這些選項的詳細說明及其配置方法:
### 通用設定 ###
* **Name**:填入使用者的應用程式或服務的名稱。
* **Worker Replicas**:指應用程式在節點的數量。
* **CPU Minimum Require for Master** :運行集群控制所需的最少 CPU 資源。
* **Memory Minimum Require for Master**:集群控制所需要的最低內存量。
* **GPU Minimum Require for Master**:運行集群控制所需的最少 GPU 資源。
* **CPU Minimum Require for worker**:每個 worker 節點在運行應用程序和處理工作負載時所需的最低 CPU 資源配置。
* **Memory Minimum Require for worker**:每個 worker 節點在運行應用程序和處理工作負載時所需的最低內存資源配置。
* **GPU Minimum Require for Worker**:每個 worker 節點運行應用程序和處理工作負載所需的最低 GPU 資源配置。
* ![螢幕擷取畫面 2024-05-24 131227](https://hackmd.io/_uploads/BJJC-i6QC.png)
配置完後點選右下角的Next




### 輸出/輸入資料 ###
* **NFS Server IP**:NFS允許伺服器將檔案系統共享給網路上的客戶端，使得客戶端可以像訪問本地磁盤一樣訪問和操作存儲在遠端伺服器上的檔案。
* **NFS Path** :使用者可以將所需的輸入數據檔案放置在這個路徑下。這個路徑內的檔案可以被網路上的所有授權客戶端訪問和使用。
* **Mount Path** :這是本地系統上的掛載點路徑，用於掛載NFS伺服器上的共享檔案系統。將NFS共享掛載到這個路徑後，OpenFOAM等應用程序可以直接讀取或寫入掛載路徑下的數據，方便使用者可以在這個路徑下找到模擬的輸出數據，便於進行後續分析和處理。

配置完後點選右下角的"Install"

![螢幕擷取畫面 2024-05-24 163152](https://hackmd.io/_uploads/Sk8qeApX0.png)



## Custom Hlem options before install ##
如果勾選了"Custom Helm options before install"，使用者可以看到以下額外的配置選項，這些選項可以對Helm chart的安裝過程進行細微的控制：
* **Apply Custom Resource Definitions**: 勾選此選項允許 Rancher 自動應用 Helm chart 中包含的自定義資源定義(CRDs)。
* **Execute Chart Hooks**：選此選項允許 Rancher 執行 Helm chart 中定義的 hooks。Hooks 是 Helm 提供的一種機制，可在部署的不同階段（如安裝前、安裝後）自動執行腳本或命令，用於執行額外的配置或清理任務。
* **Validate OpenAPI Schema**：勾選此選項將啟用 OpenAPI schema 驗證，以確保 Helm chart 中的資源定義符合 Kubernetes API 的 schema 要求。
* **Wait**：勾選此選項會讓 Rancher 在 Helm chart 安裝過程中等待，直到所有資源都準備就緒並且處於預期的運行狀態。

最後點選右下角的"install"後開始安裝Openfoam

![螢幕擷取畫面 2024-06-04 135123](https://hackmd.io/_uploads/ByYuimnNR.png)





## 等待應用程式安裝 ##

點選install後，將看到安裝日誌，看到"successful:helm install"且state為deployed。
![螢幕擷取畫面 2024-05-24 132856](https://hackmd.io/_uploads/SkpiSsa7R.png)
左側點選jobs，確認Openfoam的job成功執行
![螢幕擷取畫面 2024-06-04 142956](https://hackmd.io/_uploads/B18FEN34A.png)



## HPC-Desktop ##
HPC-Desktop提供了一種安全、靈活的方法來連接和控制遠端的HPC系統，使用者無需身處實驗室或辦公室即可執行複雜的計算任務。

**以下是安裝HPC-Desktop的步驟**

***Step1***
點選Charts(1)、輸入HPC Desktop(2)、點選HPC Desktop(3)
![螢幕擷取畫面 2024-05-31 152036](https://hackmd.io/_uploads/HkAqcxPNA.png)
***Step2***
點選右上角的Install
![螢幕擷取畫面 2024-05-31 152357](https://hackmd.io/_uploads/B1YcsxPEC.png)
***Step3***
**Name**中輸入使用者想要的name，接著點選Next
![螢幕擷取畫面 2024-05-31 152748](https://hackmd.io/_uploads/Bk5XnxvE0.png)
***Step4***
在**Service**中填入使用者想要的URL。
![螢幕擷取畫面 2024-05-31 153544](https://hackmd.io/_uploads/rJqMAxvEC.png)
***Step5***
這邊的NFS PATH改為"/demo/HPC_12T/openfoam/view"
![螢幕擷取畫面 2024-06-03 132800](https://hackmd.io/_uploads/rJO0VC5N0.png)


***Step6***
接著到**Advanced**中選擇對應的HPC-APPS，這邊就是OpenFOAM，最後點選install。
![螢幕擷取畫面 2024-05-31 153755](https://hackmd.io/_uploads/H1vYAeP40.png)
***Step7***
點選Jobs(1)、接著點選Console下的Open with VNC(2)
![螢幕擷取畫面 2024-05-31 180326](https://hackmd.io/_uploads/SJFE-7P40.png)
***Step8***
點選連線、接著點選**noVNC Full Client**、輸入密碼:headless、最後點選**Send Credentials**
![螢幕擷取畫面 2024-05-31 181555](https://hackmd.io/_uploads/H1FFQQv4A.png)






























