@gunshooter
2019-12-24T06:38:11.000000Z
字数 4133
阅读 1955
OpenFOAM
低碳的HPC是centos系统,并且由于管理员(我估计)不会折腾docker 并且极其怂,不肯给我装docker,只好尝试编译安装
前提:所有编译用软件齐备(wget gcc g++ perl openmpi flex)并且不需要paraview
Step1 在家目录下($home),下载源码并解包
wget -O - http://dl.openfoam.org/source/7 | tar xvz
wget -O - http://dl.openfoam.org/third-party/7 | tar xvz
mv OpenFOAM-7-version-7 OpenFOAM-7
mv ThirdParty-7-version-7 ThirdParty-7
Step2 配置环境变量
source $HOME/OpenFOAM/OpenFOAM-7/etc/bashrc
Step3 进入ThirdParty-7路径,编译安装Scotch/PT-Scotch
./Allwmake
Step4 进入OpenFOAM-7路径,编译安装Openfoam
./Allwmake
Step5 回到$home,创建run路径
mkdir -p $FOAM_RUN
Enjoy
anyway,首选还是docker,毕竟这是官方推荐的ubuntu以外系统的使用方法。优点是装起来比较简单,比正常的ubuntu下安装只多两步左右:安装docker然后把要使用openfoam的用户权限修改一下。详见官方教程。
据超算管理员说,docker会导致权限问题,而他给我截的一个图里说用sigularity就可以避免这个问题,不过我懒得跟他扯淡了,所以没让他用这个。估计跟他说了他还是会推三阻四,呵呵。
使用sigularity的话就需要从docker hub上下载openfoam的包,可能不是官方的。这里也有一个可以参考的教程。关于sigularity本身和openfoam的使用这里也有一个教程。
超算的话当然就不用自己装了,不过虚拟机的话还是需要装一下的。至少要本地试一下是怎么回事别直接把超算玩崩了。所以首先要选择一个跟超算一样的系统,我们的这个事centos7.4,所以下载这个系统。
系统安装之后,启动虚拟机。此时vmstation可能会报一个错误:"vmci.sys"的版本不正确 ,这个问题可以参考这个教程解决。
虚拟机日常连不上网,所以启动之后先ping一下8.8.8.8(当然具体ping谁都是可以的)。如果返回network is unreachable,那就参考这个教程解决。
以下参照官方教程进行
自己装好的新的centos是p都没有的,所以第一步,下载软件包就需要先把下载工具下载一下。前面已经解决了连不上网的问题,现在就直接运行:
yum -y install wget
即可
此步之后,官方建议准备编译软件。但是页面中软件太多,搞不清楚怎么弄,因此这一步先跳过,后面需要哪个装哪个即可。
source $HOME/OpenFOAM/OpenFOAM-7/etc/bashrc
设置这一步的时候会报错 找不到mpicc,所以此时要安装openmpi
yum install perl*
参考教程
根据教程,首先下载并解压openmpi:
wget https://download.open-mpi.org/release/open-mpi/v3.1/openmpi-3.1.0.tar.gz
tar -zxvf openmpi-3.1.0.tar.gz
(目前2019.12最新版本似乎是
wget https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.1.tar.gz
tar -zxvf openmpi-4.0.1.tar.gz )
接下来需要cd到该目录下运行配置文件./configure,但是直接运行的话会试图把软件装在没有权限的路径下,因此必须指定路径。根据教程首先创建一个路径,比如
mkdir openmpi-install
然后cd
到openmpi的路径下,
./configure --prefix=/public/home/lcc-zcy01/openmpi-isntall
这里的路径只是举个例子,因为prefix要求绝对路径而已。只要只想之前创建的那个安装路径即可
然后编译安装
make && make install
由于配置步骤更改了默认安装路径,还需要配置环境变量。
vi ~.bashrc
在其中另起一行键入
OPENMPI=/opt/openmpi/2.0.2/intel/2017.0.098
PATH=$OPENMPI/bin:$PATH
LD_LIBRARY_PATH=$OPENMPI/lib:$LD_LIBRARY_PATH
INCLUDE=$OPENMPI/include:$INCLUDE
CPATH=$OPENMPI/include:$CPATH
MANPATH=$OPENMPI/share/man:$MANPATH
显然第一行的路径应改为实际安装的路径
注意上述原文中的转义字符\
这个时候运行
mpicc
应改不再报错找不到该命令。
make命令应该是编译的命令,详见这个教程和这个阮一峰教程。make通过makefile来管理需要编译的源文件和要链接的库,openfoam的求解器也是用类似的办法编译的。
显然,这一步需要相应的编译器,因此我们需要按照之前跳过步骤的要求,安装gcc
运行命令
yum install gcc
yum install gcc-c++
之后可以使用which命令可以查看是否安装成功,例如
which g++
这些都搞定之后就可以回头source了。
source一瞬间就搞定了,然后开始真正的编译和安装
这一步教程写的太简略,只能边尝试边写。
首先是Scotch/PT-Scotch。按照教程这是一个管理并行计算的东西。编译的办法是:先cd到第三方软件的路径下,然后
./Allwmake
在上述同一个路径下,运行命令
./makeParaView
这个命令会首先下载paraviw,并且会下载很长时间。教程说这一步在家用电脑上会花费几个小时,可能并不包括下载时间。
目前正卡在这一步。
下载到一半死了,ctrl C切出重试之后下载成功。报错找不到qmake,查了一下应该是qt的问题
于是下载qt
qt竟然是个商软。查到一个教程,要从官网下载开源版本的qt然后copy到相应目录安装。可惜我用windows下载的都是windows版本,不知道能不能用。于是我转而尝试另一个教程:
yum install qt4 qt4-devel qt4-x11
cd /usr/bin/
ln -s qmake-qt4 qmake
成功解决找不到qmake的问题,然后报错找不到cmake
cmake是个输出makefile的工具,用于跨平台编程
假装明白了
根据教程,第一步依然是下载并解压:
wget https://cmake.org/files/v3.3/cmake-3.3.2.tar.gz
tar -zxvf cmake-3.3.2.tar.gz
原教程解压的文件版本号写错了,我给改成了这样的。不知道会不会有影响。
然后cd到解压出的路径,运行bootstrap:
./bootstrap
这一步应该是编译生成了很多可执行文件一类的东西。然后再运行:
gmake
应该还是在编译,然后才到安装的步骤:
gmake install
这个很快。
然后继续回去编译paraview,提示缺少vtk
但是我懒得装了,毕竟在hpc上也没有可视化的条件,所以我尝试跳过这一步。
终于到了这一步。。。
运行命令
./Allwmake
提示缺少flex。很简单,装一下flex
运行命令:
yum install flex
然后回去重新allwmake。这一步目测要花很久,今晚估计搞不定了。先这样吧 吃个日料回寝了。
由于下雨,吃日料失败。今天过来一看,编译安装结束了,似乎没有发生什么变化。
下一步,创建run文件夹
mkdir -p $FOAM_RUN
这个命令会在当前用户的家目录下创建OpenFOAM/[用户名]-7/run文件夹
所以如果是root用户的话,就会把这个搞到root目录下去(感觉这个解释还是有点问题。。不过确实创建到root下去了。。)
然后
cd $FOAM_RUN
cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily .
cd pitzDaily
blockMesh
simpleFoam
paraFoam
显然最后一步省略掉就ok了
注意上一段代码第一句原文中的转义符号\
到这一步就基本ok了,说明不装paraview是完全可以的 反正也没有gui,paraview装了也没用啊
下一步就是到hpc上重复一遍
或者直接打包上传也可以???
不存在的 因为source命令卡在mpicc那里,环境变量是没有配置过的