Linux-在Linux上从源代码编译OpenFOAM

OpenFOAM 是一款基于有限体积法的开源场操作软件,其全称为Open Field Operation and Munipilation。OpenFOAM是自2004年以来主要由OpenCFD Ltd开发的免费开源CFD软件。它在工程和科学的大多数领域拥有庞大的用户群,包括商业和学术组织。OpenFOAM具有广泛的功能,可以解决从涉及化学反应,湍流和传热的复杂流体流动到声学,固体力学和电磁学的任何问题。

OpenFOAM提供了以下发行版的预编译包,可以使用APT或者YUM安装:

  • Debian/Ubuntu
  • openSUSE
  • CentOS/RedHat/Fedora
  • Docker

但是我就偏要从源代码安装,我乐意。

首先从OpenFOAM官网下载源代码和第三方库的源代码,以版本v2306为例,有如下文件

  • OpenFOAM-v2306.tgz
  • ThirdParty-v2306.tgz

在文件夹下分别解压(不需要合并目录)。

可能第三方库并不完整,例如2306版本会缺少metis-5.1.0或者paraview,所以在目录“ThirdParty-v2306/sources”中,新建文件夹“metis”,并把metis-5.1.0放入其中。也就是说,metis代码的主目录,应该是“ThirdParty-v2306/sources/metis/metis-5.1.0”。

第三方库也可能缺少依赖项导致编译失败,例如cgal依赖mpfr和gmp,用包管理器或者自己从源代码编译都看心情。

在编译任何代码前,都需要先载入OpenFOAM的环境变量,即如下命令:

source ***/OpenFOAM-v2306/etc/bashrc

***是你的OpenFOAM路径。

如果出现错误“gcc: error: unrecognized command line option ‘--showme:link’”,将bashrc中的“export WM_MPLIB=SYSTEMOPENMPI”改成“export WM_MPLIB=OPENMPI”,可以解决此问题,或者也可以忽略。

测试操作系统是否支持OpenFOAM:

foamSystemCheck

进入OpenFOAM主文件夹,输入以下命令测试是否正确的载入了环境变量(没有输出说明正确):

foam

第三方库可以自己编译,或者在编译openFOAM的时候会先编译第三方库。自己编译的好处在于可以看到哪些第三方库编译报错,如果直接编译OpenFOAM的话报错的库会被忽略,且不可使用。

如果想要先编译第三方库,则进入“ThirdParty-v2306”,输入

./Allwmake

-j -s -l -q 分别对应不同选项,可以参考“./Allwmake -help”中的解释。

然后进入“OpenFOAM-v2306”,同样输入以上命令进行编译,编译过程会很漫长,耐心等待。

编译完成后,验证:

foamInstallationTest

可以验证编译和安装的完整性。也可以运行测试样例:

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. 缺少flex等,需要安装flex和libfl-dev。

 

posted @ 2023-07-05 16:46  流光Light  阅读(374)  评论(1编辑  收藏  举报