OpenFOAM C1測試文件 == **Application : OpenFOAM Chart Versions : 1.0.0 Application Version : 1.0.0** ## **OpenFOAM Background介紹** OpenFOAM(Open Field Operation And Manipulation)是一個用於計算流體動力學(CFD)模擬的開源軟體。它廣泛應用於工程和科學領域,用於模擬各種流體動力學問題。 OpenFOAM 提供了豐富的數值方法庫,支持各種物理現象的模擬,如湍流、熱傳遞、化學反應、多相流等。其靈活的模組化架構允許用戶根據需求進行擴展和定制,使其成為科研和工程應用中的首選工具。 在此選擇**OpenCFD版本的OpenFOAM**作為HPC app工具使用,docker image使用**2312**版本。 [Official](https://gatk.broadinstitute.org/hc/en-us) [docker image](https://hub.docker.com/layers/opencfd/openfoam-default/2312/images/sha256-280e6f45f7614086cb74c20a074f445900c1597ef339b609634f8aa03e8d3172?context=explore) <br> <br> <br> <br> ## **Printer case介紹** [StdToolheadOpenfoam]( https://github.com/yellowfish543/StdToolheadOpenfoam) 該案例旨在為3D印表機工具刷頭的CFD分析提供一個標準化的工作流程。通過使用一系列特定的軟件工具和步驟,用戶可以高效、系統地完成CFD分析。 <br> <br> <br> <br> ## **Printer case submit job步驟** 1. 進入rancher UI頁面 pic 1 2. 點選左邊欄位「Apps」,「Charts」 pic 2 3. 在右上角欄位「Filter」內輸入"hpc" ,尋找「OpenFOAM」後點選進入 pic 3 4. 點選右上角「Install」 pic 4 5. 「Install: Step 1」,選取對應「Namespace」欄位,輸入名稱於「Name」欄位 pic 5 6. 「Install: Step 2」 「Edit Options」方框 (「Edit YAML」不需變動 ) **General** 「Name」: job的名稱 「Worker Replicas」: Worker平行運算的數量 「CPU Minimum Require for Master」: Master最少CPU需求數量 「Memory Minimum Require for Master」: Master最少Mem需求數量 「GPU Minimum Require for Master」: Master最少GPU需求數量 「CPU Minimum Require for Worker」: Worker最少CPU需求數量 「Memory Minimum Require for Worker」: Worker最少Mem需求數量 「GPU Minimum Require for Worker」: Worker最少GPU需求數量 **Input/Output Data** 「NFS Server IP」: 資料儲存IP地址 (GSX storage) 「NFS Path」: 資料儲存目錄路徑 「Mount Path」: 掛載於Pod上的目錄路徑 **APP Setting** 「Command」: 使用者輸入工作命令 完成之後點選右下角「install」 pic 6 7. 完成後畫面顯示剛剛install的app job pic 7 8. 於「Workloads」,「Pods」查看,State欄位下顯示的是job的pod狀態,通常會在一開始維持藍色橢圓框的"ContainerCreating",過一陣子即轉變成綠色橢圓框的"Running",若job執行完畢則會轉變為同樣綠色橢圓框的"Completed"狀態 pic 8-1 dashboard pic 8-2 completed 9. 點擊Pod的最右邊三個點,點選「View Logs」,在下方會顯示當前job的pod執行log,log只會顯示於”帶有master名稱的pod”,”帶有worker名稱的pod”只負責執行計算並不會顯示log pic 9 10. 點選"pod名稱"進入頁面查看其他資訊,點選「Metrics」可查看pod的不同種類使用量變化,”CPU Utilization”,”Memory Utilization”,”Network Traffic”,”Network I/O”,”Disk I/O” pic 10 11. 若想刪除已經install的app(job),可於「Apps」,「installed Apps」內點選欲刪除之installed app,在點擊「Delete」即可 pic 11 <br> <br> <br> <br> ## **Printer case job執行畫面** 1. 點選master pod的”View Logs”查看輸出資訊,若開始出現如圖所示代表成功開始執行資料前處理步驟(畫面中執行指令為”blockMesh”) pic 1 2. 若出現如圖所示,代表成功執行模擬階段(畫面中執行指令為"pimpleFoam -parallel") pic 2-1 pic 2-2 3. 若出現如圖所示,代表job成功執行完畢,在資料夾內會生成以下資料 pic 3-1 ~ 3-4 <br> <br> <br> <br> ## **Printer case 測試參數** | Parameter | Description | Default | | ----------------------------- | --------------------------------- | ------------------------------------------ | | job.name | Name of the job | openfoam-hpc-job-printer | | master.name | Name of the master | master | | master.replica | Number of master replicas | 1 | | master.image | Pod base image | infortrend/base_image_vnc_login:v3.2 | | master.resources.cpu | CPU required by master | 1 | | master.resources.memory | Memory required by master | 8Gi | | commands | Commands to run in the master pod | See the detailed commands below | | worker.name | Name of the worker | worker | | worker.replica | Number of worker replicas | 2 | | worker.image | Pod base image | infortrend/base_image_vnc_login:v3.2 | | worker.resources.cpu | CPU required by worker | 2 | | worker.resources.memory | Memory required by worker | 8Gi | | hpcAppVolume.name | Name of the HPC image volume | hpc-image | | hpcAppVolume.nfs.path | HPC image NFS path | /ForRDA25/hpc/hpc/Willie/images | | hpcAppVolume.nfs.server | HPC image NFS server | 172.27.115.31 | | hpcAppvolumeMount.name | Name of the HPC image volume mount| hpc-image | | hpcAppvolumeMount.mountPath | HPC image mount path | /img | | volumes.name | Name of the data volume | hpc-data | | volumes.nfs.path | Data NFS path | /ForRDA25/hpc/hpc/Willie/StdToolheadOpenfoam_test | | volumes.nfs.server | Data NFS server | 172.27.115.31 | | volumeMounts.name | Name of the data volume mount | hpc-data | | volumeMounts.mountPath | Data mount path | /data | <br> <br> <br> <br> ## **Printer case commands 解釋** **SINGULARITY="singularity run -B /data:/mnt --pwd /mnt/02_Run /img/openfoam-default-2312.sif";** 定義環境變數SINGULARITY,用來運行Singularity容器的指令,-B /data:/mnt是將本地的/data目錄綁定到容器內的/mnt目錄,–pwd /mnt/02_Run設置容器內的工作目錄為/mnt/02_Run,並指定Singularity image文件為/img/openfoam-default-2312.sif **cd /data/02_Run** 進入主要工作的目錄 **rm -rf ./processor\* ./dynamicCode ./0 ;** 做資料清理,主要清理舊的運行數據 **rm -rf ./processor\* ./constant/extendedFeatureEdgeMesh ./constant/polyMesh ./constant/triSurface/\* ./logs ./log\* ./postProcessing ;** 同上,清理舊的運行數據 **mkdir -p ./constant/triSurface/ ;** 建立目錄 **cp -rf ../01_Geometry/\* ./constant/triSurface/ ;** 複製資料 **${SINGULARITY} blockMesh ;** 運行openfoam指令blockMesh,用來生成網格結構 **${SINGULARITY} surfaceFeatureExtract ;** 運行openfoam指令surfaceFeatureExtract,用來提取表面特徵 **${SINGULARITY} decomposePar ;** 運行openfoam指令decomposePar,用來分解域以便進行平行運算 **mpirun --allow-run-as-root --host ${MPI_HOST} -np 2 ${SINGULARITY} bash -c "snappyHexMesh -overwrite -parallel" ;** 使用mpirun指令在指定的host(MPI_HOST內記錄著worker資訊)上運行snappyHexMesh,使用平行處理生成網格結構,overwrite表示覆蓋,parallel表示平行運算 **mpirun --allow-run-as-root --host ${MPI_HOST} -np 2 ${SINGULARITY} bash -c "checkMesh -parallel -allTopology -allGeometry -writeSets vtk" ;** 使用mpirun指令在指定的host(MPI_HOST內記錄著worker資訊)上運行checkMesh,檢查網格結構並輸出為 vtk 格式。-allTopology 和 -allGeometry 表示檢查所有的拓撲和幾何結構,-writeSets vtk 表示輸出為 vtk 格式。 **${SINGULARITY} bash -c "reconstructParMesh -constant" ;** 運行openfoam指令reconstructParMesh -constant,用來重建後平行運算後的網格結構 **rm -rf ./processor\* ./postProcessing ./0 ;** 清理數據 **cp -r 0.org/. 0 ;** 複製資料 **${SINGULARITY} decomposePar ;** 運行openfoam指令decomposePar,用來分解域以便進行平行運算 **mpirun --allow-run-as-root --host ${MPI_HOST} -np 2 ${SINGULARITY} bash -c "renumberMesh -overwrite -parallel" ;** 使用mpirun指令在指定的host(MPI_HOST內記錄著worker資訊)上運行renumberMesh,用來重新編號網格結構overwrite表示覆蓋,parallel表示平行運算 **mpirun --allow-run-as-root --host ${MPI_HOST} -np 2 ${SINGULARITY} bash -c "potentialFoam -parallel -initialiseUBCs" ;** 使用mpirun指令在指定的host(MPI_HOST內記錄著worker資訊)上運行potentialFoam,用來進行初始的速度邊界條件計算,parallel表示平行運算,l-initialiseUBCs表示初始化速度邊界條件 **mpirun --allow-run-as-root --host ${MPI_HOST} -np 2 ${SINGULARITY} bash -c "pimpleFoam -parallel" ;** 使用mpirun指令在指定的host(MPI_HOST內記錄著worker資訊)上運行pimpleFoam,進行主要模擬計算,parallel表示平行運算 **${SINGULARITY} reconstructParMesh ;** 運行openfoam指令reconstructParMesh,用來重建平行處理,將前面分解的計算域重新組合成一個原本完整的域 <br> <br> <br> <br> #### 備註1 : 若要自行找OpenFOAM的case,請尋找CFD OpenFOAM 版本編寫的檔案,否則極大機率因版本不同而發生錯誤停止 #### 備註2 : 若要修改mpirun -np數量,請修改case/system/decomposeParDict檔案中的變數值,修改成2,ex. numberOfSubdomains 2,即可使用mpirun -np2,數字沒有對應在parallel模擬時會發生錯誤
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up