0、环境准备
该并行应用程序需要使用 openmpi
,因此需要事先安装openmpi
。MPI 的安装方式可以查看之前的博客。
需要实现在系统上安装以下依赖项:
sudo apt-get install build-essential autoconf autotools-dev cmake gawk gnuplot
sudo apt-get install flex libfl-dev libreadline-dev zlib1g-dev openmpi-bin libopenmpi-dev mpi-default-bin mpi-default-dev
sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev
要检查可用的系统版本,请使用 apt-cache show
命令。例如:
apt-cache show libopenmpi-dev
如果要使用系统组件,还需要安装以下组件:
apt-get install libfftw3-dev libscotch-dev libptscotch-dev libboost-system-dev libboost-thread-dev libcgal-dev
其他的软件要求如下:
一、安装步骤
OpenFOAM有两种版本:一个是商业版本,版本编号为从1开始的数字(如:OpenFOAM v11);一个公益开源版本,版本编号为年份加月份(如:OpenFOAM v2212)。
1、下载源码
从网站上下载OpenFOAM v2212
和ThirdParty v2212
源代码,并将其上传到服务器。我存放的路径为:/home/czhang/openfoam
。进入该存放路径,解压缩两个源代码压缩包。
tar -zxvf OpenFOAM-v2212.tgz
tar -zxvf ThirdParty-v2212.tgz
2、设置环境变量
在构建之前,要先满足系统要求,并获取正确的 OpenFOAM 环境。例如,对于 OpenFOAM-v2212 版本:
source <installation path>/OpenFOAM-v2212/etc/bashrc
在我这里,我安装在 ~/openfoam
目录下,所以我这里是:
source ~/openfoam/OpenFOAM-v2212/etc/bashrc
建议:将这句命令添加到用户根目录下的 .bashrc/.zshrc
文件中
3、编译OpenFOAM
进入OpenFOAM所在的目录进行操作:
cd /home/czhang/openfoam/OpenFOAM-v2212
测试系统就绪情况:
foamSystemCheck
新建一个shell命令窗口,切换到 OpenFOAM 主目录 ($WM_PROJECT_DIR)。如果此操作失败,则环境配置不正确。
foam
编译openfoam:
./Allwmake -j -s -q -l
该命令使用所有内核 (-j),缩减输出 (-s, -silent)、队列 (-q, -queue) ,将编译信息一起输出到日志文件 (-l, -log) log.linux64GccDPInt32Opt
供以后检查。
4、编译后检验
打开一个新的 shell 窗口并获取 OpenFOAM 环境。
通过运行以下命令来验证生成:
foamInstallationTest
如果报错显示 icoFoam
没有找到,则使用Allwmake
去掉参数 -q
重新编译。
之后测试任何给定的教程案例,例如:
foamTestTutorial -full incompressible/simpleFoam/pitzDaily
手动测试教程案例:
# Create the user "run" directory:
mkdir -p "$FOAM_RUN"
# Change to the user "run" directory:
run
# Copy tutorial
cp -r "$FOAM_TUTORIALS"/incompressible/simpleFoam/pitzDaily ./
# Run the tutorial
cd pitzDaily && blockMesh && simpleFoam
二、安装第三方部分
1、环境准备
将第三方部分所需的依赖项引入系统的一种快速方法是使用 paraview 开发包:
sudo apt install paraview-dev
这是一个软件包,可以寻求系统管理员安装。
同时也要安装以下依赖:
sudo apt install cmake qtbase5-dev qttools5-dev qttools5-dev-tools libqt5opengl5-dev libqt5x11extras5-dev libxt-dev
可以用之前的 apt-cache show
命令查看系统是否拥有。
2、构建第三方部分
切换目录到第三方部分的目录:
cd /home/czhang/openfoam/ThirdParty-v2212
运行命令:
./Allwmake -j -s -q -l
期间可能会报错显示部分库找不到,如:gmp等,可以安装相应的依赖库:
sudo apt-get install libmpfr-dev, libgmp-dev, libboost-all-dev
三、测试安装结果
foamVersion
# icoFoam
blockMesh
simpleFoam
若输出结果均无报错则安装成功,在运行求解器(如icoFoam,simpleFoam等)之前需要先用blockMesh划分网格。
四、案例测试
运行命令 run
跳转到测试运行目录,运行命令:
cp -r "$FOAM_TUTORIALS"/incompressible/icoFoam/cavity ./
cd cavity
将tutorials中的cavity测试案例复制到run目录下,并进入cavity文件夹中。
在system文件夹中有一些运行控制文件,可通过修改这些文件中的值来调整运行参数
运行命令:
blockMesh
icoFoam
在运行求解器之前需要运行blockMesh划分网格。
如果要使用mpi进行并行运行,则需要先使用OpenFOAM的并行工具来分割计算域
decomposePar
该命令会自动创建像processor0
这样的目录,分解了多少个计算域,就会产生多少个目录,之后要使用多少个线程运行。目录如图所示:
划分网格、分解计算域后,使用mpi并行运行分解器,要是用哪个分解器可在 controlDict
中查看。
mpirun -np 9 icoFoam -parallel > icoFoamRun.log
Reference: