2023年9月1日至2023年9月7日在曙光超算上部署了OpenFOAM-7
、OpenFOAM-8
、OpenFOAM-9
、OpenFOAM-10
、OpenFOAM-11
、OpenFOAM-v1812
,在此记录下安装过程。
假设软件目录仿照如下方式进行设置(以OpenFOAM-7
为例),且以下目录均已存在。 1 2 3 4 5 6
| v7 |---- app # 存放可执行文件 |---- case # 存放算例文件 |---- doc # 存放说明文档 |---- scripts # 存放脚本文件 |---- source # 存放源代码文件
|
OpenFOAM-7
下载源代码
以下为download.sh
脚本内容,该脚本位于scripts
文件夹下。
1 2 3 4 5 6 7 8
| #!/bin/bash
SCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)
cd $SCRIPTDIR/source
git clone https://github.com/OpenFOAM/OpenFOAM-7.git git clone https://github.com/OpenFOAM/ThirdParty-7.git
|
安装
以下为install.sh
脚本内容,该脚本位于scripts
文件夹下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| #!/bin/bash
SCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)
module purge # 卸载之前的环境 module load compiler/cmake/3.23.3 # 加载cmake module load compiler/intel/2021.3.0 # intel-2021 module load mpi/intelmpi/2021.3.0 # intel-2021
# 安装目录 INSTALL_PATH=$SCRIPTDIR INSTALL_PATH_NEW=${INSTALL_PATH//\//\\\/} FOAM_NAME=OpenFOAM-7 THIRD_NAME=ThirdParty-7
# 进入安装目录 cd $INSTALL_PATH/app rm -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 # 使用intelMPI echo '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编译器编译scotch sed -i 's/mpicc/mpiicc/g' $THIRD_NAME/etc/wmakeFiles/scotch/Makefile.inc.i686_pc_linux2.shlib-OpenFOAM # 使用intel编译器编译scotch sed -i 's/include64/include/g' $FOAM_NAME/wmake/rules/General/mplibINTELMPI64 sed -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
# 编译OpenFOAM cd ../$FOAM_NAME ./Allwmake -j 24 > ../log.openfoam-7 2>&1
|
加载环境变量
以下为env.sh
脚本内容,该脚本位于scripts
文件夹下。
1 2 3 4 5 6 7 8 9 10
| #!/bin/bash
SCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)
module load compiler/cmake/3.23.3 # 加载cmake module load compiler/intel/2021.3.0 # intel-2021 module load mpi/intelmpi/2021.3.0 # intel-2021
# 加载环境变量 source $SCRIPTDIR/app/OpenFOAM-7/etc/bashrc
|
软件测试
以下为job.sh
脚本内容,该脚本位于case
文件夹下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #!/bin/bash #SBATCH -J cavity #SBATCH -p xahctar #SBATCH -N 2 #SBATCH --ntasks-per-node=2
module purge # 卸载之前的环境 source ../scripts/env.sh
# 拷贝官方自带算例文件 rm -rf ./cavity cp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity .
cd cavity cp $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
文件夹下。
1 2 3 4 5 6 7 8
| #!/bin/bash
SCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)
cd $SCRIPTDIR/source
git clone https://github.com/OpenFOAM/OpenFOAM-8.git git clone https://github.com/OpenFOAM/ThirdParty-8.git
|
安装
以下为install.sh
脚本内容,该脚本位于scripts
文件夹下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| #!/bin/bash
SCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)
module purge # 卸载之前的环境 module load compiler/cmake/3.23.3 # 加载cmake module load compiler/intel/2021.3.0 # intel-2021 module load mpi/intelmpi/2021.3.0 # intel-2021
# 安装目录 INSTALL_PATH=$SCRIPTDIR INSTALL_PATH_NEW=${INSTALL_PATH//\//\\\/} FOAM_NAME=OpenFOAM-8 THIRD_NAME=ThirdParty-8
# 进入安装目录 cd $INSTALL_PATH/app rm -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 # 使用intelMPI echo '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编译器编译scotch sed -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
# 编译OpenFOAM cd ../$FOAM_NAME ./Allwmake -j 24 > ../log.openfoam-8 2>&1
|
加载环境变量
以下为env.sh
脚本内容,该脚本位于scripts
文件夹下。
1 2 3 4 5 6 7 8 9 10
| #!/bin/bash
SCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)
module load compiler/cmake/3.23.3 # 加载cmake module load compiler/intel/2021.3.0 # intel-2021 module load mpi/intelmpi/2021.3.0 # intel-2021
# 加载环境变量 source $SCRIPTDIR/app/OpenFOAM-8/etc/bashrc
|
软件测试
以下为job.sh
脚本内容,该脚本位于case
文件夹下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #!/bin/bash #SBATCH -J cavity #SBATCH -p xahctar #SBATCH -N 2 #SBATCH --ntasks-per-node=2
module purge # 卸载之前的环境 source ../scripts/env.sh
# 拷贝官方自带算例文件 rm -rf ./cavity cp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity .
cd cavity cp $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
文件夹下。
1 2 3 4 5 6 7 8
| #!/bin/bash
SCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)
cd $SCRIPTDIR/source
git clone https://github.com/OpenFOAM/OpenFOAM-9.git git clone https://github.com/OpenFOAM/ThirdParty-9.git
|
安装
以下为install.sh
脚本内容,该脚本位于scripts
文件夹下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| #!/bin/bash
SCRIPTDIR=$(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 # 加载gcc module load mpi/intelmpi/2021.3.0 # intel-2021
# 安装目录 INSTALL_PATH=$SCRIPTDIR INSTALL_PATH_NEW=${INSTALL_PATH//\//\\\/} FOAM_NAME=OpenFOAM-9 THIRD_NAME=ThirdParty-9
# 进入安装目录 cd $INSTALL_PATH/app rm -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
# 编译OpenFOAM cd ../$FOAM_NAME ./Allwmake -j 24 > ../log.openfoam-9 2>&1
|
加载环境变量
以下为env.sh
脚本内容,该脚本位于scripts
文件夹下。
1 2 3 4 5 6 7 8 9 10 11
| #!/bin/bash
SCRIPTDIR=$(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 # 加载gcc module load mpi/intelmpi/2021.3.0 # intel-2021
# 加载环境变量 source $SCRIPTDIR/app/OpenFOAM-9/etc/bashrc
|
软件测试
以下为job.sh
脚本内容,该脚本位于case
文件夹下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #!/bin/bash #SBATCH -J cavity #SBATCH -p xahctar #SBATCH -N 2 #SBATCH --ntasks-per-node=2
module purge # 卸载之前的环境 source ../scripts/env.sh
# 拷贝官方自带算例文件 rm -rf ./cavity cp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity .
cd cavity cp $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
文件夹下。
1 2 3 4 5 6 7 8
| #!/bin/bash
SCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)
cd $SCRIPTDIR/source
git clone https://github.com/OpenFOAM/OpenFOAM-10.git git clone https://github.com/OpenFOAM/ThirdParty-10.git
|
安装
以下为install.sh
脚本内容,该脚本位于scripts
文件夹下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| #!/bin/bash
SCRIPTDIR=$(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 # 加载gcc module load mpi/intelmpi/2021.3.0 # intel-2021
# 安装目录 INSTALL_PATH=$SCRIPTDIR INSTALL_PATH_NEW=${INSTALL_PATH//\//\\\/} FOAM_NAME=OpenFOAM-10 THIRD_NAME=ThirdParty-10
# 进入安装目录 cd $INSTALL_PATH/app rm -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
# 编译OpenFOAM cd ../$FOAM_NAME ./Allwmake -j 24 > ../log.openfoam-10 2>&1
|
加载环境变量
以下为env.sh
脚本内容,该脚本位于scripts
文件夹下。
1 2 3 4 5 6 7 8 9 10 11
| #!/bin/bash
SCRIPTDIR=$(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 # 加载gcc module load mpi/intelmpi/2021.3.0 # intel-2021
# 加载环境变量 source $SCRIPTDIR/app/OpenFOAM-10/etc/bashrc
|
软件测试
以下为job.sh
脚本内容,该脚本位于case
文件夹下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #!/bin/bash #SBATCH -J cavity #SBATCH -p xahctar #SBATCH -N 2 #SBATCH --ntasks-per-node=2
module purge # 卸载之前的环境 source ../scripts/env.sh
# 拷贝官方自带算例文件 rm -rf ./cavity cp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity .
cd cavity cp $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
文件夹下。
1 2 3 4 5 6 7 8
| #!/bin/bash
SCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)
cd $SCRIPTDIR/source
git clone https://github.com/OpenFOAM/OpenFOAM-11.git git clone https://github.com/OpenFOAM/ThirdParty-11.git
|
安装
以下为install.sh
脚本内容,该脚本位于scripts
文件夹下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #!/bin/bash
SCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)
module purge # 卸载之前的环境 module load compiler/cmake/3.23.3 # 加载cmake module load compiler/gcc/9.3.0 # 加载gcc module load mpi/intelmpi/2021.3.0 # intel-2021
# 安装目录 INSTALL_PATH=$SCRIPTDIR INSTALL_PATH_NEW=${INSTALL_PATH//\//\\\/} FOAM_NAME=OpenFOAM-11 THIRD_NAME=ThirdParty-11
# 进入安装目录 cd $INSTALL_PATH/app rm -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
# 编译OpenFOAM cd ../$FOAM_NAME ./Allwmake -j 24 > ../log.openfoam-11 2>&1
|
加载环境变量
以下为env.sh
脚本内容,该脚本位于scripts
文件夹下。
1 2 3 4 5 6 7 8 9 10
| #!/bin/bash
SCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)
module load compiler/cmake/3.23.3 # 加载cmake module load compiler/gcc/9.3.0 # 加载gcc module load mpi/intelmpi/2021.3.0 # intel-2021
# 加载环境变量 source $SCRIPTDIR/app/OpenFOAM-11/etc/bashrc
|
软件测试
以下为job.sh
脚本内容,该脚本位于case
文件夹下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #!/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
文件夹下。
1 2 3 4 5 6 7 8 9 10
| #!/bin/bash
SCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)
cd $SCRIPTDIR/source wget https://sourceforge.net/projects/openfoam/files/v1812/OpenFOAM-v1812.tgz wget https://sourceforge.net/projects/openfoam/files/v1812/ThirdParty-v1812.tgz tar -zxf OpenFOAM-v1812.tgz tar -zxf ThirdParty-v1812.tgz rm -rf OpenFOAM-v1812.tgz ThirdParty-v1812.tgz
|
安装
以下为install.sh
脚本内容,该脚本位于scripts
文件夹下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| #!/bin/bash
SCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)
# 加载cmake环境 module load compiler/cmake/3.23.3
# 安装目录所需环境变量 INSTALL_PATH=$SCRIPTDIR INSTALL_PATH_NEW=${INSTALL_PATH//\//\\\/} FOAM_NAME=OpenFOAM-v1812 THIRD_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
# 编译OpenFOAM cd ../$FOAM_NAME ./Allwmake -j 24 > ../log.openfoam-v1812 2>&1
|
加载环境变量
以下为env.sh
脚本内容,该脚本位于scripts
文件夹下。
1 2 3 4 5 6 7 8
| #!/bin/bash
SCRIPTDIR=$(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
文件夹下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #!/bin/bash #SBATCH -J cavity #SBATCH -p xahctar #SBATCH -N 2 #SBATCH --ntasks-per-node=2
# 系统默认环境,无需purge source ../scripts/env.sh
# 拷贝官方自带算例文件 rm -rf ./cavity cp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity .
cd cavity cp $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
文件夹下。
1 2 3 4 5 6 7 8 9 10
| #!/bin/bash
SCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)
cd $SCRIPTDIR/source wget https://sourceforge.net/projects/openfoam/files/v2312/OpenFOAM-v2312.tgz wget https://sourceforge.net/projects/openfoam/files/v2312/ThirdParty-v2312.tgz tar -zxf OpenFOAM-v2312.tgz tar -zxf ThirdParty-v2312.tgz rm -rf OpenFOAM-v2312.tgz ThirdParty-v2312.tgz
|
安装
以下为install.sh
脚本内容,该脚本位于scripts
文件夹下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #!/bin/bash
SCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") >/dev/null && cd .. && pwd)
# 加载cmake环境 module load compiler/cmake/3.23.3
# 安装目录所需环境变量 INSTALL_PATH=$SCRIPTDIR INSTALL_PATH_NEW=${INSTALL_PATH//\//\\\/} FOAM_NAME=OpenFOAM-v2312 THIRD_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等,可在此编译,出现问题根据需要进行调整即可,调整难度不大,在此不再赘述
# 编译OpenFOAM cd ../$FOAM_NAME ./Allwmake -j 24 > ../log.openfoam-v2312 2>&1
|
加载环境变量
以下为env.sh
脚本内容,该脚本位于scripts
文件夹下。
1 2 3 4 5 6 7 8 9
| #!/bin/bash
SCRIPTDIR=$(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
|