1.下载OpenFOAM源文件和第三方库
https://sourceforge.net/projects/openfoam/files/v2006/OpenFOAM-v2006.tgz/download
https://sourceforge.net/projects/openfoam/files/v2006/ThirdParty-v2006.tgz/download
2.在home目录下新建文件夹OpenFOAM
cd ~
mkdir OpenFOAM
3.将源文件拷入OpenFOAM文件夹下,并解压源文件和第三方库文件
cd ~/OpenFOAM
tar -xvf OpenFOAM-v2006.tgz
tar -xvf ThirdParty-v2006.tgz
4.配置临时环境变量并更新
gedit ~/OpenFOAM/OpenFOAM-v2006/etc/bashrc
找到 WM_LABEL_SIZE,将其值改为64(64位系统设置为64,32位系统设置为32,其他的参考这里),找到WM_MPLIB,将其值改为OPENMPI,这里我们选用OPENMPI是来自第三方库,而不是系统中使用的mpich或者已经安装的openmpi,避免出现版本问题。
更新环境变量
source ~/OpenFOAM/OpenFOAM-v2006/etc/bashrc
5.安装第三方库
cd /home/npu/OpenFOAM/ThirdParty-v2006
./Allwmake -j
在第四步里配置环境变量是因为在编译第三方库文件的时候会使用到相关环境变量。-j 后面可以指定一个数字代表需要几个核进行编译,如果不写则代表全核编译 。比如需要两个核 就 -j 2,注意空格。
6.编译OpenFOAM-v2006
cd ~/OpenFOAM/OpenFOAM-v2006
./Allwmake -j
如果不想开到满屏滚动的安装信息,可以在编译命令里追加 > log.make 2>&1,安装信息都写入到log.make 文件夹里,此外还可以添加 -k命令,跳过当前编译出现error的模块,等编译完成以后,在将错误的部分单独编译,参考
./Allwmake -j > log.make 2>&1
等待大概30分钟到4个小时应该就能编译完成
7.最后配置一下环境变量使得可以通过直接输入命令的方式启动OpenFOAM
echo "alias of2006='source \$HOME/OpenFOAM/OpenFOAM-v2006/etc/bashrc $FOAM_SETTINGS'" >> $HOME/.bashrc
这样下次启动的时候,控制台输入of2006 ,就可以自动加载OpenFOAM-v2006的环境变量,这时候输入icoFoam -help 查看帮助信息。这里$HOME前面加 \ 是让$HOME 以字符的形式写入到.bashrc ,不加的话,系统就会把$HOME转换成全路径 比如/home/你的用户名,还有 >> 是追加的意思,就是在文件的末端添加,参考,千万别写成 > ,这个是把源文件里的内容全部删除以后再添加你要写的东西,弄错的话,环境变量会全部丢失!!!
使用alias命令的好处在于可以使用多个版本,比如再安装一个1806,设置为 alias of1806 ,这时候在控制台输入of1806,再查看icoFoam -help 就可以看到,OpenFOAM版本已经切换到1806版了。
至此,安装过程基本完成,这里给出的是openfoam.com网站版本的OF,还有openfoam.org 网站版本的OF,就是数字开头的如v4.1,v5.x,v6等,这些再源码安装的时候容易出问题,主要是因为第三方库给的不完整(openmpi,CGAL,boost需要自手动下载到第三方库,参考网址2),而且对系统版本好像有一定的要求,不过该版本也有相应的安装方法,具体可以看参考网址2和3。
这里使用的是低版本的ubunutu安装高版本的OF都没有什么问题,那么在高版本的ubuntu 如1804,2004等问题应该也不大。
其他补充:
openfoam.com版本我在安装过程中基本没有什么问题,但是openfoam.org版本安装的过程中遇到了一些问题,如
1.无法安装过程中无法cd,可能的原因有没有该文件夹,需要手动创建(多是版本号的问题)。
2.找不到MPI_*****,这里给出的解决方案是在bashrc文件里修改WM_MPLIB为OPENMPI(第三方库里安装的,非系统自带的)
3.unrecognized command line option '--showme:link',解决方法参考上面一条,同样使用OPENMPI
4.找不到scotch相关文件,这时候需要看一下第三方库里有没scotch这个库,一般都有,没有的话需要自行下载在第三方库文件夹下,此外,还有版本部对应的问题,查看一下~/OpenFOAM/OpenFOAM-v2006/etc/config.sh 目录下的scotch文件 里指定的scotch 版本是否与第三方库文件夹下的scotch文件版本一致。
参考网址:
1.http://openfoamwiki.net/index.php/Installation/Linux/OpenFOAM%2B-v1806%2B/Ubuntu
2.https://zhuanlan.zhihu.com/p/62508304
3.http://www.dyfluid.com/docs/install.html
安装完成后 出现 /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /public/home/**/OpenFOAM/OpenFOAM-***/platforms/linux64GccDPInt64Opt/lib/libfileFormats.so) 问题,这是由于gcc版本太低,这时候需要自己更新gcc版本,并让 libstdc++.so.6 重新指定对应的文件。若无管理员权限,则需要用户在自己的home目录下安装新版的gcc 并 更新动库的环境变量,gcc的无管理员权限安装自行百度(仅供参考),下面给出的是更新动库环境变量的方法,
超算上的GLIBCXX版本在编译的时候版本低而又无管理员权限的时候(参考1,参考2.),可以考虑在 OpenFOAM/OpenFOAM-v****/etc/bashrc 文件夹里重新配置高版本的动库位置,***代表版本号。我的gcc 版本
export LD_LIBRARY_PATH=/public/opensource/gcc-4.9.3/lib64:$LD_LIBRARY_PATH
记得在~/.bashrc 目录下使用 alias 设置启动环境变量
alias of***='source $HOME/OpenFOAM/OpenFOAM-v****/etc/bashrc '
在/etc/bashrc目录里配置动库新位置的原因主要在于防止影响到其他用户使用mpi。
注意使用of*** 命令之后,其他用户只能新建窗口再操作了,直接使用该窗口则无法正常使用某些软件如lammps等。