2023年9月1日至2023年9月7日在曙光超算上部署了OpenFOAM-7、OpenFOAM-8、OpenFOAM-9、OpenFOAM-10、OpenFOAM-11、OpenFOAM-v1812,在此记录下安装过程。
假设软件目录仿照如下方式进行设置(以OpenFOAM-7为例),且以下目录均已存在。
123456v7 |---- app # 存放可执行文件 |---- case # 存放算例文件 |---- doc # 存放说明文档 |---- scripts # 存放脚本文件 |---- source # 存放源代码文件
OpenFOAM-7
下载源代码
以下为download.sh脚本内容,该脚本位于scripts文件夹下。
12345678#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)cd $SCRIPTDIR/sourcegit clone https://github.com/OpenFOAM/OpenFOAM-7.gitgit clone https://github.com/OpenFOAM/ThirdParty-7.git
安装
以下为install.sh脚本内容,该脚本位于scripts文件夹下。
1234567891011121314151617181920212223242526272829303132333435363738394041424344#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)module purge # 卸载之前的环境module load compiler/cmake/3.23.3 # 加载cmakemodule load compiler/intel/2021.3.0 # intel-2021module load mpi/intelmpi/2021.3.0 # intel-2021# 安装目录INSTALL_PATH=$SCRIPTDIRINSTALL_PATH_NEW=${INSTALL_PATH//\//\\\/}FOAM_NAME=OpenFOAM-7THIRD_NAME=ThirdParty-7# 进入安装目录cd $INSTALL_PATH/apprm -rf ./*cp -r ../source/$FOAM_NAME ./cp -r ../source/$THIRD_NAME ./# 修改配置文件sed -i 's/export\ WM_PROJECT=OpenFOAM/export\ MY_INSTALL_PATH='$INSTALL_PATH_NEW'\/app\nexport\ WM_PROJECT=OpenFOAM/' $FOAM_NAME/etc/bashrc # 更改安装路径sed -i 's/export\ FOAM_INST_DIR=\$HOME\/\$WM_PROJECT/export\ FOAM_INST_DIR=\$MY_INSTALL_PATH/' $FOAM_NAME/etc/bashrc # 更改安装路径sed -i 's/export\ WM_PROJECT_USER_DIR=\$HOME\/\$WM_PROJECT\/\$USER-\$WM_PROJECT_VERSION/export\ WM_PROJECT_USER_DIR=\$WM_PROJECT_INST_DIR\/\$USER-\$WM_PROJECT_VERSION/' $FOAM_NAME/etc/bashrc # 更改安装路径sed -i 's/export\ WM_COMPILER=Gcc/export WM_COMPILER=Icc/' $FOAM_NAME/etc/bashrc # 使用intel编译器sed -i 's/export\ WM_MPLIB=SYSTEMOPENMPI/export\ WM_MPLIB=INTELMPI\nMPI_ROOT=\$I_MPI_ROOT/' $FOAM_NAME/etc/bashrc # 使用intelMPIecho 'export WM_CC=icc' >> $FOAM_NAME/etc/bashrc # 使用intel编译器编译第三方库echo 'export WM_CXX=icpc' >> $FOAM_NAME/etc/bashrc # 使用intel编译器编译第三方库sed -i 's/gcc/$(WM_CC)/g' $THIRD_NAME/etc/wmakeFiles/scotch/Makefile.inc.i686_pc_linux2.shlib-OpenFOAM # 使用intel编译器编译scotchsed -i 's/mpicc/mpiicc/g' $THIRD_NAME/etc/wmakeFiles/scotch/Makefile.inc.i686_pc_linux2.shlib-OpenFOAM # 使用intel编译器编译scotchsed -i 's/include64/include/g' $FOAM_NAME/wmake/rules/General/mplibINTELMPI64sed -i 's/lib64/lib\/release/g' $FOAM_NAME/wmake/rules/General/mplibINTELMPI64# 加载环境变量source $FOAM_NAME/etc/bashrc# 编译第三方程序cd $THIRD_NAME./Allwmake -j 24 > ../log.thirdparty-7 2>&1# 编译OpenFOAMcd ../$FOAM_NAME./Allwmake -j 24 > ../log.openfoam-7 2>&1
加载环境变量
以下为env.sh脚本内容,该脚本位于scripts文件夹下。
12345678910#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)module load compiler/cmake/3.23.3 # 加载cmakemodule load compiler/intel/2021.3.0 # intel-2021module load mpi/intelmpi/2021.3.0 # intel-2021# 加载环境变量source $SCRIPTDIR/app/OpenFOAM-7/etc/bashrc
软件测试
以下为job.sh脚本内容,该脚本位于case文件夹下。
1234567891011121314151617181920212223242526#!/bin/bash#SBATCH -J cavity#SBATCH -p xahctar#SBATCH -N 2#SBATCH --ntasks-per-node=2module purge # 卸载之前的环境source ../scripts/env.sh# 拷贝官方自带算例文件rm -rf ./cavitycp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity .cd cavitycp $FOAM_ETC/caseDicts/preProcessing/decomposeParDict ./system # 自带算例为串行算例,将其修改为并行算例sed -i 's/4/2/g' system/decomposeParDict # 设置为4核并行sed -i 's/8/4/g' system/decomposeParDict # 设置为4核并行sed -i 's/20/100/g' system/blockMeshDict # 增大网格分辨率sed -i 's/0\.005/0\.00004/g' system/controlDict # 保证计算稳定sed -i 's/20/2500/g' system/controlDict # 设置输出文件间隔sed -i 's/0\.5/1/g' system/controlDict # 设置计算时间blockMesh > log.blockMesh 2>&1 # 划分网格decomposePar > log.decomposePar 2>&1 # 并行分区mpirun icoFoam -parallel > log.icoFoam 2>&1 # 开始计算reconstructPar > log.reconstructPar 2>&1 #将并行计算的数据归纳,便于后处理
在case目录下运行sbatch ./job.sh命令即可提交任务。
OpenFOAM-8
下载源代码
以下为download.sh脚本内容,该脚本位于scripts文件夹下。
12345678#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)cd $SCRIPTDIR/sourcegit clone https://github.com/OpenFOAM/OpenFOAM-8.gitgit clone https://github.com/OpenFOAM/ThirdParty-8.git
安装
以下为install.sh脚本内容,该脚本位于scripts文件夹下。
123456789101112131415161718192021222324252627282930313233343536373839404142#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)module purge # 卸载之前的环境module load compiler/cmake/3.23.3 # 加载cmakemodule load compiler/intel/2021.3.0 # intel-2021module load mpi/intelmpi/2021.3.0 # intel-2021# 安装目录INSTALL_PATH=$SCRIPTDIRINSTALL_PATH_NEW=${INSTALL_PATH//\//\\\/}FOAM_NAME=OpenFOAM-8THIRD_NAME=ThirdParty-8# 进入安装目录cd $INSTALL_PATH/apprm -rf ./*cp -r ../source/$FOAM_NAME ./cp -r ../source/$THIRD_NAME ./# 修改配置文件sed -i 's/export\ WM_PROJECT=OpenFOAM/export\ MY_INSTALL_PATH='$INSTALL_PATH_NEW'\/app\nexport\ WM_PROJECT=OpenFOAM/' $FOAM_NAME/etc/bashrc # 更改安装路径sed -i 's/export\ FOAM_INST_DIR=\$HOME\/\$WM_PROJECT/export\ FOAM_INST_DIR=\$MY_INSTALL_PATH/' $FOAM_NAME/etc/bashrc # 更改安装路径sed -i 's/export\ WM_PROJECT_USER_DIR=\$HOME\/\$WM_PROJECT\/\$USER-\$WM_PROJECT_VERSION/export\ WM_PROJECT_USER_DIR=\$WM_PROJECT_INST_DIR\/\$USER-\$WM_PROJECT_VERSION/' $FOAM_NAME/etc/bashrc # 更改安装路径sed -i 's/export\ WM_COMPILER=Gcc/export WM_COMPILER=Icc/' $FOAM_NAME/etc/bashrc # 使用intel编译器sed -i 's/export\ WM_MPLIB=SYSTEMOPENMPI/export\ WM_MPLIB=INTELMPI\nMPI_ROOT=\$I_MPI_ROOT/' $FOAM_NAME/etc/bashrc # 使用intelMPIecho 'export WM_CC=icc' >> $FOAM_NAME/etc/bashrc # 使用intel编译器编译第三方库echo 'export WM_CXX=icpc' >> $FOAM_NAME/etc/bashrc # 使用intel编译器编译第三方库sed -i 's/gcc/$(WM_CC)/g' $THIRD_NAME/etc/wmakeFiles/scotch/Makefile.inc.i686_pc_linux2.shlib-OpenFOAM # 使用intel编译器编译scotchsed -i 's/mpicc/mpiicc/g' $THIRD_NAME/etc/wmakeFiles/scotch/Makefile.inc.i686_pc_linux2.shlib-OpenFOAM # 使用intel编译器编译scotch# 加载环境变量source $FOAM_NAME/etc/bashrc# 编译第三方程序cd $THIRD_NAME./Allwmake -j 24 > ../log.thirdparty-8 2>&1# 编译OpenFOAMcd ../$FOAM_NAME./Allwmake -j 24 > ../log.openfoam-8 2>&1
加载环境变量
以下为env.sh脚本内容,该脚本位于scripts文件夹下。
12345678910#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)module load compiler/cmake/3.23.3 # 加载cmakemodule load compiler/intel/2021.3.0 # intel-2021module load mpi/intelmpi/2021.3.0 # intel-2021# 加载环境变量source $SCRIPTDIR/app/OpenFOAM-8/etc/bashrc
软件测试
以下为job.sh脚本内容,该脚本位于case文件夹下。
1234567891011121314151617181920212223242526#!/bin/bash#SBATCH -J cavity#SBATCH -p xahctar#SBATCH -N 2#SBATCH --ntasks-per-node=2module purge # 卸载之前的环境source ../scripts/env.sh# 拷贝官方自带算例文件rm -rf ./cavitycp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity .cd cavitycp $FOAM_ETC/caseDicts/preProcessing/decomposeParDict ./system # 自带算例为串行算例,将其修改为并行算例sed -i 's/4/2/g' system/decomposeParDict # 设置为4核并行sed -i 's/8/4/g' system/decomposeParDict # 设置为4核并行sed -i 's/20/100/g' system/blockMeshDict # 增大网格分辨率sed -i 's/0\.005/0\.00004/g' system/controlDict # 保证计算稳定sed -i 's/20/2500/g' system/controlDict # 设置输出文件间隔sed -i 's/0\.5/1/g' system/controlDict # 设置计算时间blockMesh > log.blockMesh 2>&1 # 划分网格decomposePar > log.decomposePar 2>&1 # 并行分区mpirun icoFoam -parallel > log.icoFoam 2>&1 # 开始计算reconstructPar > log.reconstructPar 2>&1 #将并行计算的数据归纳,便于后处理
在case目录下运行sbatch ./job.sh命令即可提交任务。
OpenFOAM-9
下载源代码
以下为download.sh脚本内容,该脚本位于scripts文件夹下。
12345678#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)cd $SCRIPTDIR/sourcegit clone https://github.com/OpenFOAM/OpenFOAM-9.gitgit clone https://github.com/OpenFOAM/ThirdParty-9.git
安装
以下为install.sh脚本内容,该脚本位于scripts文件夹下。
1234567891011121314151617181920212223242526272829303132333435363738#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)module purge # 卸载之前的环境module load compiler/cmake/3.23.3 # 加载cmake# 由于安装时曙光超算上的intel编译器不支持C++14标准,因而采用gcc编译module load compiler/gcc/9.3.0 # 加载gccmodule load mpi/intelmpi/2021.3.0 # intel-2021# 安装目录INSTALL_PATH=$SCRIPTDIRINSTALL_PATH_NEW=${INSTALL_PATH//\//\\\/}FOAM_NAME=OpenFOAM-9THIRD_NAME=ThirdParty-9# 进入安装目录cd $INSTALL_PATH/apprm -rf ./*cp -r ../source/$FOAM_NAME ./cp -r ../source/$THIRD_NAME ./# 修改配置文件sed -i 's/export\ WM_PROJECT=OpenFOAM/export\ MY_INSTALL_PATH='$INSTALL_PATH_NEW'\/app\nexport\ WM_PROJECT=OpenFOAM/' $FOAM_NAME/etc/bashrc # 更改安装路径sed -i 's/export\ FOAM_INST_DIR=\$HOME\/\$WM_PROJECT/export\ FOAM_INST_DIR=\$MY_INSTALL_PATH/' $FOAM_NAME/etc/bashrc # 更改安装路径sed -i 's/export\ WM_PROJECT_USER_DIR=\$HOME\/\$WM_PROJECT\/\$USER-\$WM_PROJECT_VERSION/export\ WM_PROJECT_USER_DIR=\$WM_PROJECT_INST_DIR\/\$USER-\$WM_PROJECT_VERSION/' $FOAM_NAME/etc/bashrc # 更改安装路径sed -i 's/export\ WM_MPLIB=SYSTEMOPENMPI/export\ WM_MPLIB=INTELMPI\nMPI_ROOT=\$I_MPI_ROOT/' $FOAM_NAME/etc/bashrc # 使用intelMPI# 加载环境变量source $FOAM_NAME/etc/bashrc# 编译第三方程序cd $THIRD_NAME./Allwmake -j 24 > ../log.thirdparty-9 2>&1# 编译OpenFOAMcd ../$FOAM_NAME./Allwmake -j 24 > ../log.openfoam-9 2>&1
加载环境变量
以下为env.sh脚本内容,该脚本位于scripts文件夹下。
1234567891011#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)module load compiler/cmake/3.23.3 # 加载cmake# 由于安装时曙光超算上的intel编译器不支持C++14标准,因而采用gcc编译module load compiler/gcc/9.3.0 # 加载gccmodule load mpi/intelmpi/2021.3.0 # intel-2021# 加载环境变量source $SCRIPTDIR/app/OpenFOAM-9/etc/bashrc
软件测试
以下为job.sh脚本内容,该脚本位于case文件夹下。
1234567891011121314151617181920212223242526#!/bin/bash#SBATCH -J cavity#SBATCH -p xahctar#SBATCH -N 2#SBATCH --ntasks-per-node=2module purge # 卸载之前的环境source ../scripts/env.sh# 拷贝官方自带算例文件rm -rf ./cavitycp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity .cd cavitycp $FOAM_ETC/caseDicts/preProcessing/decomposeParDict ./system # 自带算例为串行算例,将其修改为并行算例sed -i 's/4/2/g' system/decomposeParDict # 设置为4核并行sed -i 's/8/4/g' system/decomposeParDict # 设置为4核并行sed -i 's/20/100/g' system/blockMeshDict # 增大网格分辨率sed -i 's/0\.005/0\.00004/g' system/controlDict # 保证计算稳定sed -i 's/20/2500/g' system/controlDict # 设置输出文件间隔sed -i 's/0\.5/1/g' system/controlDict # 设置计算时间blockMesh > log.blockMesh 2>&1 # 划分网格decomposePar > log.decomposePar 2>&1 # 并行分区mpirun icoFoam -parallel > log.icoFoam 2>&1 # 开始计算reconstructPar > log.reconstructPar 2>&1 #将并行计算的数据归纳,便于后处理
在case目录下运行sbatch ./job.sh命令即可提交任务。
OpenFOAM-10
下载源代码
以下为download.sh脚本内容,该脚本位于scripts文件夹下。
12345678#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)cd $SCRIPTDIR/sourcegit clone https://github.com/OpenFOAM/OpenFOAM-10.gitgit clone https://github.com/OpenFOAM/ThirdParty-10.git
安装
以下为install.sh脚本内容,该脚本位于scripts文件夹下。
1234567891011121314151617181920212223242526272829303132333435363738#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)module purge # 卸载之前的环境module load compiler/cmake/3.23.3 # 加载cmake# 由于安装时曙光超算上的intel编译器不支持C++14标准,因而采用gcc编译module load compiler/gcc/9.3.0 # 加载gccmodule load mpi/intelmpi/2021.3.0 # intel-2021# 安装目录INSTALL_PATH=$SCRIPTDIRINSTALL_PATH_NEW=${INSTALL_PATH//\//\\\/}FOAM_NAME=OpenFOAM-10THIRD_NAME=ThirdParty-10# 进入安装目录cd $INSTALL_PATH/apprm -rf ./*cp -r ../source/$FOAM_NAME ./cp -r ../source/$THIRD_NAME ./# 修改配置文件sed -i 's/export\ WM_PROJECT=OpenFOAM/export\ MY_INSTALL_PATH='$INSTALL_PATH_NEW'\/app\nexport\ WM_PROJECT=OpenFOAM/' $FOAM_NAME/etc/bashrc # 更改安装路径sed -i 's/export\ FOAM_INST_DIR=\$HOME\/\$WM_PROJECT/export\ FOAM_INST_DIR=\$MY_INSTALL_PATH/' $FOAM_NAME/etc/bashrc # 更改安装路径sed -i 's/export\ WM_PROJECT_USER_DIR=\$HOME\/\$WM_PROJECT\/\$USER-\$WM_PROJECT_VERSION/export\ WM_PROJECT_USER_DIR=\$WM_PROJECT_INST_DIR\/\$USER-\$WM_PROJECT_VERSION/' $FOAM_NAME/etc/bashrc # 更改安装路径sed -i 's/export\ WM_MPLIB=SYSTEMOPENMPI/export\ WM_MPLIB=INTELMPI\nMPI_ROOT=\$I_MPI_ROOT/' $FOAM_NAME/etc/bashrc # 使用intelMPI# 加载环境变量source $FOAM_NAME/etc/bashrc# 编译第三方程序cd $THIRD_NAME./Allwmake -j 24 > ../log.thirdparty-10 2>&1# 编译OpenFOAMcd ../$FOAM_NAME./Allwmake -j 24 > ../log.openfoam-10 2>&1
加载环境变量
以下为env.sh脚本内容,该脚本位于scripts文件夹下。
1234567891011#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)module load compiler/cmake/3.23.3 # 加载cmake# 由于安装时曙光超算上的intel编译器不支持C++14标准,因而采用gcc编译module load compiler/gcc/9.3.0 # 加载gccmodule load mpi/intelmpi/2021.3.0 # intel-2021# 加载环境变量source $SCRIPTDIR/app/OpenFOAM-10/etc/bashrc
软件测试
以下为job.sh脚本内容,该脚本位于case文件夹下。
1234567891011121314151617181920212223242526#!/bin/bash#SBATCH -J cavity#SBATCH -p xahctar#SBATCH -N 2#SBATCH --ntasks-per-node=2module purge # 卸载之前的环境source ../scripts/env.sh# 拷贝官方自带算例文件rm -rf ./cavitycp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity .cd cavitycp $FOAM_ETC/caseDicts/preProcessing/decomposeParDict ./system # 自带算例为串行算例,将其修改为并行算例sed -i 's/4/2/g' system/decomposeParDict # 设置为4核并行sed -i 's/8/4/g' system/decomposeParDict # 设置为4核并行sed -i 's/20/100/g' system/blockMeshDict # 增大网格分辨率sed -i 's/0\.005/0\.00004/g' system/controlDict # 保证计算稳定sed -i 's/20/2500/g' system/controlDict # 设置输出文件间隔sed -i 's/0\.5/1/g' system/controlDict # 设置计算时间blockMesh > log.blockMesh 2>&1 # 划分网格decomposePar > log.decomposePar 2>&1 # 并行分区mpirun icoFoam -parallel > log.icoFoam 2>&1 # 开始计算reconstructPar > log.reconstructPar 2>&1 #将并行计算的数据归纳,便于后处理
在case目录下运行sbatch ./job.sh命令即可提交任务。
OpenFOAM-11
下载源代码
以下为download.sh脚本内容,该脚本位于scripts文件夹下。
12345678#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)cd $SCRIPTDIR/sourcegit clone https://github.com/OpenFOAM/OpenFOAM-11.gitgit clone https://github.com/OpenFOAM/ThirdParty-11.git
安装
以下为install.sh脚本内容,该脚本位于scripts文件夹下。
12345678910111213141516171819202122232425262728293031323334353637#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)module purge # 卸载之前的环境module load compiler/cmake/3.23.3 # 加载cmakemodule load compiler/gcc/9.3.0 # 加载gccmodule load mpi/intelmpi/2021.3.0 # intel-2021# 安装目录INSTALL_PATH=$SCRIPTDIRINSTALL_PATH_NEW=${INSTALL_PATH//\//\\\/}FOAM_NAME=OpenFOAM-11THIRD_NAME=ThirdParty-11# 进入安装目录cd $INSTALL_PATH/apprm -rf ./*cp -r ../source/$FOAM_NAME ./cp -r ../source/$THIRD_NAME ./# 修改配置文件sed -i 's/export\ WM_PROJECT=OpenFOAM/export\ MY_INSTALL_PATH='$INSTALL_PATH_NEW'\/app\nexport\ WM_PROJECT=OpenFOAM/' $FOAM_NAME/etc/bashrc # 更改安装路径sed -i 's/export\ FOAM_INST_DIR=\$HOME\/\$WM_PROJECT/export\ FOAM_INST_DIR=\$MY_INSTALL_PATH/' $FOAM_NAME/etc/bashrc # 更改安装路径sed -i 's/export\ WM_PROJECT_USER_DIR=\$HOME\/\$WM_PROJECT\/\$USER-\$WM_PROJECT_VERSION/export\ WM_PROJECT_USER_DIR=\$WM_PROJECT_INST_DIR\/\$USER-\$WM_PROJECT_VERSION/' $FOAM_NAME/etc/bashrc # 更改安装路径sed -i 's/export\ WM_MPLIB=SYSTEMOPENMPI/export\ WM_MPLIB=INTELMPI\nMPI_ROOT=\$I_MPI_ROOT/' $FOAM_NAME/etc/bashrc # 使用intelMPI# 加载环境变量source $FOAM_NAME/etc/bashrc# 编译第三方程序cd $THIRD_NAME./Allwmake -j 24 > ../log.thirdparty-11 2>&1# 编译OpenFOAMcd ../$FOAM_NAME./Allwmake -j 24 > ../log.openfoam-11 2>&1
加载环境变量
以下为env.sh脚本内容,该脚本位于scripts文件夹下。
12345678910#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)module load compiler/cmake/3.23.3 # 加载cmakemodule load compiler/gcc/9.3.0 # 加载gccmodule load mpi/intelmpi/2021.3.0 # intel-2021# 加载环境变量source $SCRIPTDIR/app/OpenFOAM-11/etc/bashrc
软件测试
以下为job.sh脚本内容,该脚本位于case文件夹下。
1234567891011121314151617181920212223242526#!/bin/bash #SBATCH -J NACA0012#SBATCH -p xahctar #SBATCH -N 2 #SBATCH --ntasks-per-node=2 module purge # 卸载之前的环境 source ../scripts/env.sh # 拷贝官方自带算例文件 rm -rf ./aerofoilNACA0012Steady cp -r $FOAM_TUTORIALS/fluid/aerofoilNACA0012Steady . cd aerofoilNACA0012Steady cp $FOAM_ETC/caseDicts/preProcessing/decomposeParDict ./system/ sed -i 's/8/4/g' ./system/decomposeParDict sed -i 's/4\ 2\ 1/2\ 1\ 2/g' ./system/decomposeParDict sed -i 's/nNonOrthogonalCorrectors\ 0/nNonOrthogonalCorrectors\ 2/g' ./system/fvSolution cp $FOAM_TUTORIALS/resources/geometry/NACA0012.obj.gz constant/geometry/ blockMesh > log.blockMesh 2>&1 transformPoints "scale=(1 0 1)" > log.transformPoints 2>&1 extrudeMesh > log.extrudeMesh 2>&1 decomposePar > log.decomposePar 2>&1 mpirun foamRun -parallel > log.foamRun 2>&1 reconstructPar > log.reconstructPar 2>&1
在case目录下运行sbatch ./job.sh命令即可提交任务。
OpenFOAM-v1812
下载源代码
以下为download.sh脚本内容,该脚本位于scripts文件夹下。
12345678910#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)cd $SCRIPTDIR/sourcewget https://sourceforge.net/projects/openfoam/files/v1812/OpenFOAM-v1812.tgzwget https://sourceforge.net/projects/openfoam/files/v1812/ThirdParty-v1812.tgztar -zxf OpenFOAM-v1812.tgztar -zxf ThirdParty-v1812.tgzrm -rf OpenFOAM-v1812.tgz ThirdParty-v1812.tgz
安装
以下为install.sh脚本内容,该脚本位于scripts文件夹下。
123456789101112131415161718192021222324252627282930313233343536#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)# 加载cmake环境module load compiler/cmake/3.23.3# 安装目录所需环境变量INSTALL_PATH=$SCRIPTDIRINSTALL_PATH_NEW=${INSTALL_PATH//\//\\\/}FOAM_NAME=OpenFOAM-v1812THIRD_NAME=ThirdParty-v1812# 进入安装目录cd $INSTALL_PATH/app# 拷贝源代码至安装目录rm -rf ./*cp -r ../source/$FOAM_NAME ./cp -r ../source/$THIRD_NAME ./# 修改etc/bashrc文件sed -i 's/export\ WM_PROJECT=OpenFOAM/export\ MY_INSTALL_PATH='$INSTALL_PATH_NEW'\/app\nexport\ WM_PROJECT=OpenFOAM/' $FOAM_NAME/etc/bashrc # 更改安装路径sed -i 's/HOME\/OpenFOAM/MY_INSTALL_PATH/g' $FOAM_NAME/etc/bashrc # 更改安装路径sed -i 's/HOME\/\$WM_PROJECT/MY_INSTALL_PATH/g' $FOAM_NAME/etc/bashrc # 更改安装路径# 加载环境变量source $FOAM_NAME/etc/bashrc# 编译第三方程序cd $THIRD_NAME./Allwmake -j 24 > ../log.thirdparty-v1812 2>&1# 编译OpenFOAMcd ../$FOAM_NAME./Allwmake -j 24 > ../log.openfoam-v1812 2>&1
加载环境变量
以下为env.sh脚本内容,该脚本位于scripts文件夹下。
12345678#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)module load compiler/cmake/3.23.3 # 加载cmake# 加载环境变量source $SCRIPTDIR/app/OpenFOAM-v1812/etc/bashrc
软件测试
以下为job.sh脚本内容,该脚本位于case文件夹下。
123456789101112131415161718192021222324#!/bin/bash#SBATCH -J cavity#SBATCH -p xahctar#SBATCH -N 2#SBATCH --ntasks-per-node=2# 系统默认环境,无需purgesource ../scripts/env.sh# 拷贝官方自带算例文件rm -rf ./cavitycp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity .cd cavitycp $FOAM_TUTORIALS/incompressible/icoFoam/cavityMappingTest/system/coarseMesh/decomposeParDict ./system # 自带算例为串行算例,将其修改为并行算例sed -i 's/20/100/g' system/blockMeshDict # 增大网格分辨率sed -i 's/0\.005/0\.00002/g' system/controlDict # 保证计算稳定sed -i 's/20/5000/g' system/controlDict # 设置输出文件间隔sed -i 's/0\.5/1/g' system/controlDict # 设置计算时间blockMesh > log.blockMesh 2>&1 # 划分网格decomposePar > log.decomposePar 2>&1 # 并行分区mpirun icoFoam -parallel > log.icoFoam 2>&1 # 开始计算reconstructPar > log.reconstructPar 2>&1 #将并行计算的数据归纳,便于后处理
在case目录下运行sbatch ./job.sh命令即可提交任务。
OpenFOAM-v2312
注:OpenFOAM-v2312的安装方法为仿照OpenFOAM-v1812完成,已在个人电脑中测试通过。
下载源代码
以下为download.sh脚本内容,该脚本位于scripts文件夹下。
12345678910#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)cd $SCRIPTDIR/sourcewget https://sourceforge.net/projects/openfoam/files/v2312/OpenFOAM-v2312.tgzwget https://sourceforge.net/projects/openfoam/files/v2312/ThirdParty-v2312.tgztar -zxf OpenFOAM-v2312.tgztar -zxf ThirdParty-v2312.tgzrm -rf OpenFOAM-v2312.tgz ThirdParty-v2312.tgz
安装
以下为install.sh脚本内容,该脚本位于scripts文件夹下。
12345678910111213141516171819202122232425262728293031323334353637#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)# 加载cmake环境module load compiler/cmake/3.23.3# 安装目录所需环境变量INSTALL_PATH=$SCRIPTDIRINSTALL_PATH_NEW=${INSTALL_PATH//\//\\\/}FOAM_NAME=OpenFOAM-v2312THIRD_NAME=ThirdParty-v2312# 进入安装目录cd $INSTALL_PATH/app# 拷贝源代码至安装目录rm -rf ./*cp -r ../source/$FOAM_NAME ./cp -r ../source/$THIRD_NAME ./# 修改etc/bashrc文件sed -i 's/export\ WM_PROJECT=OpenFOAM/export\ MY_INSTALL_PATH='$INSTALL_PATH_NEW'\/app\nexport\ WM_PROJECT=OpenFOAM/' $FOAM_NAME/etc/bashrc # 更改安装路径sed -i 's/HOME\/OpenFOAM/MY_INSTALL_PATH/g' $FOAM_NAME/etc/bashrc # 更改安装路径sed -i 's/HOME\/\$WM_PROJECT/MY_INSTALL_PATH/g' $FOAM_NAME/etc/bashrc # 更改安装路径# 加载环境变量source $FOAM_NAME/etc/bashrc# 编译第三方程序cd $THIRD_NAME./Allwmake -j 24 > ../log.thirdparty-v2312 2>&1# 个别需要单独编译的第三方库,如metis、petsc等,可在此编译,出现问题根据需要进行调整即可,调整难度不大,在此不再赘述# 编译OpenFOAMcd ../$FOAM_NAME./Allwmake -j 24 > ../log.openfoam-v2312 2>&1
加载环境变量
以下为env.sh脚本内容,该脚本位于scripts文件夹下。
123456789#!/bin/bashSCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)module load compiler/cmake/3.23.3 # 加载cmake# 加载环境变量# petscFoam使用前需要保证petsc库可以被找到,因此需要加载petsc环境变量source $SCRIPTDIR/app/OpenFOAM-v2312/etc/bashrc && source $SCRIPTDIR/app/OpenFOAM-v2312/etc/config.sh/petsc -force