openfoam安装时分为两种安装方式,主要介绍源码编译的方法(方便服务器使用)
安装包准备:OpenFOAMv8, ThirdParty
git clone https://github.com/OpenFOAM/OpenFOAM-dev.git
git clone https://github.com/OpenFOAM/ThirdParty-dev.git
安装编译器:
编译器版本应为gcc 4.8及以上 也可采用mpi +intel-compilers(天河二号)
gcc --version
安装依赖库:
sudo apt-get install build-essential flex bison git-core cmake zlib1g-dev libboost-system-dev libboost-thread-dev libopenmpi-dev openmpi-bin gnuplot libreadline-dev libncurses-dev libxt-dev
设置OpenFOAM编译环境:
vim ~/.bashrc
source 自己解压的OpenFOAM包位置路径/etc/bashrc
配置后更新~/.bashrc或者重启终端
source ~/.bashrc
可以测试是否配置完毕:
echo $WM_PROJECT_DIR
返回OpenFOAM 安装路径
之后进入ThirdParty包位置,编译第三方软件
./Allwmake
或者
./Allwmake -j //多核编译
wmRefresh //更新配置环境
第三方软件编译完成后进入OpenFOAM 文件内,编译OpenFOAM
./Allwmake
./Allwmake -j //多核编译
测试是否编译成功,在终端直接执行命令:
blockMesh
在已经存在一个版本的OpenFOAM时,此时想要再额外安装另一个版本OpenFOAM,并实现不同命令符加载不同版本的OpenFOAM,如:
of8
of2006
准备安装包:OpenFOAM-v2006 和ThirdParty-v2006
wget -c https://sourceforge.net/projects/openfoam/files/v2006/OpenFOAM-v2006.tgz?use_mirror=nchc -O OpenFOAM-v2006.tgz
wget -c https://sourceforge.net/projects/openfoam/files/v2006/ThirdParty-v2006.tgz?use_mirror=nchc -O ThirdParty-v2006.tgz
#解压文件
tar -xzf OpenFOAM-v2006.tgz
tar -xzf ThirdParty-v2006.tgz
首先进入vim ~/.bashrc
将之前的安装OpenFOAM设置的环境变量
source $HOME/openfoam/OpenFOAM-dev/etc/bashrc
注释掉,更新一下source ~/.bashrc
然后进入ThirdParty-v2006内,进行编译
./Allwmake
之后进入OpenFOAM-2006中,可手动对编译设置进行修改,vim /etc/bashrc
之后进行编译
./Allwmake
编译结束后,配置环境变量:
vim ~/.bashrc
在最下面一行添加
alias of8='source 自己OpenFOAM8位置/etc/bashrc'
alias of2006='source 自己OpenFOAM2006位置/etc/bashrc'
alias 为添加别名,即输入of8相当于输入source 自己OpenFOAM8位置/etc/bashrc
,此时使得在该终端加载进去了of8
,但是仅在该终端下可用,切换终端,要重新加载。
在2020年7月以后,OpenFOAM V2006 提供了和petsc的接口,直接在OpenFOAM内调用petsc的求解器。
进入第三方库中ThirdParty-2006,下载petsc包:
wget http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-3.13.2.tar.gz
tar xzf petsc-lite-3.13.2.tar.gz
# Try and see if the PETSc source are there
./makePetsc
之后需要对OpenFOAM进行更新,进入OpenFOAM-2006
#建立额外求解器
cd modules/external-solver
./Allwmake -prefix=openfoam
#更新OpenFOAM
wmRefresh
Allwmake将构建与PETSc通信的OpenFOAM求解器接口,检查编译选择了正确的include目录(通过-I指定之前记录下的目录),并且链接选择了正确的链接目录(通过-L指定之前记录下的目录)。链接应该以下类似情况结束
-o platforms/linux64GccDPInt32Opt/lib/libpetscFoam.so
此时可以加载该库,在system/controlDict文件中
libs (petscFoam);
需要用到LD_LIBRARY_PATH中的基础PETSc库。对于我们构建ThirdParty,通常使用以下命令完成:
eval $(foamEtcFile -sh -config petsc -- -force)
验证是否加载进入
foamHasLibrary -verbose petscFoam
自带算例测试:
Time = 1
Initializing PETSc
PETSc-bicg: Solving for Ux, Initial residual = 1, Final residual = 0.0165669, No Iterations 1
PETSc-bicg: Solving for Uy, Initial residual = 1, Final residual = 0.0143104, No Iterations 1
PETSc-cg: Solving for p, Initial residual = 1, Final residual = 0.0981241, No Iterations 154
time step continuity errors : sum local = 1.71696, global = -0.010057, cumulative = -0.010057
PETSc-bicg: Solving for epsilon, Initial residual = 0.199669, Final residual = 0.00505847, No Iterations 2
bounding epsilon, min: -1.45735 max: 1080.25 average: 48.855
PETSc-bicg: Solving for k, Initial residual = 1, Final residual = 0.0131958, No Iterations 3
ExecutionTime = 0.47 s ClockTime = 1 s
算例位置:modules/external-solver/tutorials/incompressible/simpleFoam
在对大量算例进行测试时,该接口在测试动网格AMI面时好像出现失败,失败信息为不支持AMI面,但是对旋转区域改为MRF方式时,则可以支持。