OpenFOAM+petsc

Openfoam 多版本管理+openfoam V2006和pestc接口结合

1 单版openfoam安装

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

在这里插入图片描述
编译成功

2 多版本共存(openfoam 8+openfoam v2006)

在已经存在一个版本的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,但是仅在该终端下可用,切换终端,要重新加载。

3 OpenFOAM V2006+petsc

在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

4 总结

在对大量算例进行测试时,该接口在测试动网格AMI面时好像出现失败,失败信息为不支持AMI面,但是对旋转区域改为MRF方式时,则可以支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值