2024年3月26日发(作者:)

OpenFOAM 安装记录

最开始找到

/download/4-1-source/ 按照官网的安装步骤进行,发现linux系统不对

查看linux系统 # more /etc/issue

显示 Fedora release 22 (Twenty Two)

安装步骤为 /download/4-1-linux/

Unpacking the Sources

1. 新建文件夹 /usr/local/OpenFOAM

2. cd /usr/local/OpenFOAM

3. su root

4. 下载代码

wget -O - /source/4-1 | tar xvz

wget -O - /third-party/4-1 | tar xvz

5. 解压

mv ThirdParty-4.x-version-4.1 ThirdParty-4.1

mv OpenFOAM-4.x-version-4.1 OpenFOAM-4.1

Software for Compilation

1. GCC

2. FLEX website /westes/flex

i. 新建文件夹 /usr/local/FLEX

ii. cd /usr/local/FLEX

iii. git clone /westes/

iv. ./

A. 报错:

Can't exec "autopoint": No such file or directory at /usr/local/share/autoconf/Autom4te/ line 344.

autoreconf: failed to run autopoint: No such file or directory

autoreconf: autopoint is needed because this package uses Gettext

a. 安装 help2man // Done

b. 安装 gettext // Done

Problem solved

B. 报错:

stdin:1: error: Autoconf version 2.69 or higher is required

a. 安装 autoconf-2.69 // Done

Problem solved

./configure

A. 报错:

:31: option `dist-lzip' not recognized

autoreconf: automake failed with exit status: 1

a. 安装 26.x86_ // Done but useless

b. figuring out what is " dist-lzip"

暂时决定把这一行注释掉,啥后果之后再说

v.

c. 中:

AM_INIT_AUTOMAKE([-Wno-portability foreign check-news std-options dist-lzip parallel-tests

subdir-objects 1.14.1])

直接删除“dist-lzip”报错::31: require Automake 1.14.1, but have 1.11

重新安装Automake 1.15

B. 报错:

Can't locate Thread/ in @INC (you may need to install the Thread::Queue module) (@INC

contains: /usr/local/share/automake-1.15 /usr/local/lib64/perl5 /usr/local/share/perl5

/usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at

/usr/local/bin/automake line 55.

BEGIN failed--compilation aborted at /usr/local/bin/automake line 58.

a. sudo yum install perl-Thread-Queue

C. 报错:

.in': error: cannot find input file: `Makefile

a. 如果出现这种报错: error: cannot find input file: src/,就在configure 之前

执行如下命令

aclocal

libtoolize -force

automake -add-missing

autoconf

autoheader

make clean

//useless

b. 不知道为什么把flex删了,重新下载之后 ./configure 时的报错都没有了,猜测应该是automake

的版本太低,没有“dist-lzip”这个选项,所以重装automake1.5之后,问题消失

make

A. 新的报错:

You should only need it if you modified a '.y' file.

You may want to install the GNU Bison package:

/software/bison/

安装 Bison

B. 报错:

Makefile:1420: recipe for target 'scan.c' failed

make[2]: *** [scan.c] Error 127

locate scan.c发现包含于boost_1_63_0中,才发现虽然之前下载了,但还没有安装

把相关的.c 和 .h 文件拷到 /usr/include 中。

C. 报错:

gcc -DHAVE_CONFIG_H -I. -DLOCALEDIR="/usr/local/share/locale" -g -O2 -MT stage1flex-scan.o

-MD -MP -MF .deps/ -c -o stage1flex-scan.o `test -f 'scan.c' || echo './'` file

included from scan.c:13:0:

/usr/include/scan.h:40:5: error: unknown type name ‘PARSE’

PARSE * parse;

后面还有相似的报错,推测应该是boost库没有配置好,so what should i do?

所谓的未知名PARSE应该是来源于scan.h中所引用的 parse.h ,而其居然不是来源于boost而是flex,

但scan.h这个文件是从boost中拷过来的„„而parse.h 中没有关于PARSE的定义„„,所以为什

么安装软件时会有这种错误?又不是调试程序,我怎么知道PARSE是干什么的,怎么解决啊,又不

能自己编一个„„即使注释掉PARSE的部分(但人家这么编的一定是有原因的啊),又会有一大堆

的错误„„为什么呀,一个我不知道是干什么的程序,我怎么会调试?!!!

vi.

考虑到除了parse.h 和 parse.c 是flex自带的,其他的都是从boost库中拷过来的,然而在flex 的

readme 文件中并没有提到boost 库,所以这一步到底有多大的正确性?

a. 不知道怎么解决,把readme 再检查一遍,把能装的都装上„„

安装

GNU texinfo //DONE

安装 GNU indent //期间也有报错,但解决得挺容易,就不赘述了

b. 在flex的readme 文件中:* GNU bison; to generate parse.c from parse.y

So where dose parse.h come from ?

vii. make install

也不知道为什么,找来的外援不小心把/usr/local里的文件都给删了,我又把要用的东西给重装了一遍,

还好之前都是用windows下载的安装包,也记录了报错的解决办法,用了一上午的时间把能装的都装上

了,而且莫名其妙地之前的关于“scan.h”的问题也没有了„„

3. cmake //前段时间才装的,应该是可以用的

4. QT 4.8.x // 才把原来装的Qt-5.8删了,重装了Qt-4.8.6,应该是没问题了

5. Git // Done

6. OpenMPI // 已安装 intelMPI 不知道可不可以,但也可以不用mpi

Compiling OpenFOAM

1. # cd /usr/local/OpenFOAM/ThirdParty-4.1

# ./Allwmake

# ./makeParaView

A. 报错:

CMake Error at

/usr/local/OpenFOAM/ThirdParty-4.1/ParaView-5.0.1/CMake/generate_:22(message):

No xmlpatterns executable was defined!!!

a. 找到一个解决方案,不知道能不能work ,等待时间略长,因为要在编译时加上

-xmlpatterns

:

/Forums/openfoam-installation/162189-openfoam-3-0-0-installation-source-code

.html

大概是解决了吧,因为出现了新的问题

B. 报错:

Building up

QSqlDatabase: QSQLITE driver not loaded

QSqlDatabase: available drivers:

Cannot open data base file

/usr/local/OpenFOAM/ThirdParty-4.1/build/linux64Gcc/ParaView-5.0.1/Applications/ParaView/Documentation/pa

!

a. 安装MySQL 安装过程:/bookwed/p/

b. 添加路径 /ljasdf123/article/details/7426291

vim /etc/profile

在最后添加 export QT_PLUGIN_PATH=/usr/local/Trolltech/Qt-4.8.6/plugins

//Problem solved

2. # cd /usr/local/OpenFOAM/OpenFOAM-4.1

# ./Allwmake

A. 报错:

Boost does not appear to be installed

stopping build

a. 安装boost 安装过程:/henuyx/article/details/46661933

b. 安装Qt 安装过程: /chen_swe/article/details/50636857

./configure -- qmake -- qmake install

源码:C:UsersUSERPicturesSoftware for LInux

c. 安装 cmake 安装过程:/install/

./bootstrap -- make -- make install

d. 安装CGAL

e. 安装 METIS 不知道为什么,好像OpenFOAM 不能识别,不过不是强制性要求

i. # cmake .

报错:

Cannot find source file:

GKlib/conf/check_thread_storage.c

Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp .hxx .in .txx

解决:cmake -DCMAKE_CONFIGURATION-TYPES="Release" -DGKLIB_PATH="/usr/local/metis-5.1.0/GKlib" .

ii. # make

iii. # make install

报错:

CMake Error at include/cmake_:36 (file):

file INSTALL destination: /include is not a directory.

Call Stack (most recent call first): cmake_:37 (include)

f. 在文件 makeCGAL中改为 BOOST_SOURCE_DIR=/usr/local/boost_1_63_0,

//Problem solved

B. 报错:

cc1plus: warning: /include: not a directory

scotchDecomp.C:36:20: fatal error: scotch.h: No such file or directory

a. 安装 scotch

以为在ThirdParty-4.1里的./Allwmake会安装所有需要的软件呢,看来我高估它了„„

报错:

../../lib/libscotch.a(parser_ll.o): In function `scotchyylex':

parser_ll.c:(.text+0xf0f): undefined reference to `scotchyywrap'

在一个网页/show_?id=598258 中写道:说是因为Flex的版本升级后,与之

前的版本在某方面不一样了,因此需要打一个补丁。补丁:

/tracker/?func=detail&aid=21095&group_id=248&atid=1081

找到这个补丁后,发现是对scotch-6.0.4的补丁,而OpenFOAM所包含的scotch为scotch-6.0.3, 尝试修

改补丁文件中的相关部分,然而任然会报错,所以重新下载scotch-6.0.4,对其进行补丁修改,之后编译

通过,完成是scotch-6.0.4的安装,但是不知道对OpenFOAM的编译有没有影响。

关于patch 文件,可见/huguangshanse00/article/details/35780081

具体步骤:

i. 将补丁放入文件夹 /usr/local/OpenFOAM/ThirdParty-4.1/scotch_6.0.4

ii. # cd /usr/local/OpenFOAM/ThirdParty-4.1/scotch_6.0.4/src

iii. # patch -p1 < ../

iv. 提示 can't find file to patch at input line 3

„„

File to patch:

v.

键入 /usr/local/OpenFOAM/ThirdParty-4.1/scotch_6.0.4/src/libscotch/parser_ll.l

# make

vi. # make install

//Problem solved

C. 报错:

/usr/local/OpenFOAM/OpenFOAM-4.1/platforms/linux64GccDPInt32Opt/lib/openmpi-system/:

undefined reference to `MPI_Waitall'

a. 解决过程比较曲折,首先找到这个帖子:

/questions/31200858/openfoam-openmpi-error-libmpi-so-0-not-found

跟我出现相同的问题,不过我一开始没看懂,他说的/etc/bashrc文件中环境变量的设置,我以为就是系

统的环境变量设置,所以完全不知道他说的是啥,只知道大概是可以用其他的mpi编译。

b. 然后找到这篇文章:/s/blog_才知道原来/etc 前面还有一个

地址,然后就是漫长的修改参数的过程,试了好多遍,最终终于算是试对了,然而我也不记得修改了哪

些参数„„只记得是用了intelMPI。

i. # vim $WM_PROJECT_DIR/etc/bashrc

ii.

iii.

iv.

v.

92行,修改为 export WM_MPLIB=INTELMPI , 保存退出

# vim /usr/local/OpenFOAM/OpenFOAM-4.1/etc//mpi

23行 INTELMPI) 下添加MPI_ROOT="/opt/intel/parallelstudio/impi/5.0.1.035/intel64" 保存,退出

source $WM_PROJECT_DIR/etc/bashrc

//Problem solved,修改大致如上,记不清还是否有其他的变动了