如何直接在linux下安装of
-
@韬智tz 我简单说一下吧。后续有需要我有空可以写个详细的教程。
- 检查集群/工作站的GCC、MPI版本以及路径;
- 下载解压两个源码包OpenFOAM和Thirdparty;
- 修改etc/bashrc和etc/config/mpi的mpi设置;
- 在Thirdparty/Allwmake里面关掉不必要/安装失败的库,例如MPI和CGAL(CGAL我长期装不上,不过这个库就一个我用不上的功能才会用到,关掉没所谓。)
建议MPI单独安装,方便以后多版本共存复用。 - 编译Thirdparty,确保MPI和Scotch/metis装上了。
- 编译OpenFOAM本体,不装CGAL会有个库装不上,也一样关掉不编译就好,除非你要用那个库。
- 不要怕报错,学会看报错信息,慢慢改。
(难道大家都不用源码编译的吗?!!! )
-
@韬智tz
/----------------------分割线-------------------------/-
前言
适用场景:物理脱网工作站/集群,没root权限等场合。
脚本环境:sh
需要权限:无
测试环境:Windows WSL2 Ubuntu20.04/计算集群
OpenFOAM版本:OpenFOAM v6/v9
一点小说明:源码编译报错很正常!不要慌!都是技术性调整! 调整心态,学会处理一些简单的编译错误,一般Bing/Google都能解决。这一点非常重要。不同的安装环境会出现五花八门的错误,淡定。
前排提示:个人水平有限,以下文档肯定一定会有错以及不适合的地方,发现了再改,其余自行斟酌。 -
准备工作——GCC/MPI/Cmake
这三个安装过程略过,下载tar.gz看README。
安装前务必检查GCC版本是否适配,特别是安装OpenFOAM-extend,部分编译问题是版本的问题。
2.1 MPI
OpenFOAM提供丰富的MPI支持,一般使用OpenMPI和MPICH。
对于集群使用者(非root),如果集群提供MPI,使用集群MPI,只需要确定MPI的类型和路径:which mpicc
对于工作站使用者,在此强烈建议单独编译安装MPI,不要在Thirdparty中编译安装,方便多版本复用。
在此,以path_to_mpi代表MPI路径。
在你喜欢的位置新建一个sh脚本文件,把MPI路径和OpenFOAM的source命令写进去,例如:
echo Loading OpenFOAM9 env export PATH=/home/otocolobus/software/mpich3.4.3-gcc9.4.0/bin:$PATH export MPI_ROOT=/home/otocolobus/software/mpich3.4.3-gcc9.4.0 export MPI_ARCH_FLAGS="-DOMPI_SKIP_MPICXX" export MPI_ARCH_INC="-isystem $MPI_ROOT/include" export MPI_ARCH_LIBS="-L$MPI_ROOT/lib -lmpi" source $HOME/OpenFOAM/OpenFOAM-9/etc/bashrc
然后再在根目录的.bashrc文件alias一个命令source这个文件,例如:
alias of9='source $HOME/of9.sh'
- 编译参数设置
OpenFOAM及Thirdparty的编译参数设置由etc下的文件控制,编译规则由wmake/rules控制。一般只要修改etc下的参数,部分集群可能需要修改编译规则。
3.1 etc/bashrc
修改WM_MPLIB的值,SYSTEMOPENMPI会自动检索系统上的OpenMPI参数(用得少,可能有误),MPICH需要修改etc/config.sh/mpi中的参数,SYSTEMMPI是调用系统中的其他MPI,一般集群管理员会知道怎么处理。其他MPI没用过,就不说了。
3.2 etc/config.sh/mpi
config.sh是OpenFOAM调用的设置,包括编译器、scotch、paraview、mpi等。
对于MPICH,找到MPICH),修改MPI_HOME和MPI_ARCH_PATH的值为path_to_mpi,例如
MPICH) export FOAM_MPI=mpich2-1.1.1p1 export MPI_HOME=/home/otocolobus/software/mpich3.4.3-gcc9.4.0 #$WM_THIRD_PARTY_DIR/$FOAM_MPI export MPI_ARCH_PATH=/home/otocolobus/software/mpich3.4.3-gcc9.4.0 #$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$FOAM_MPI
- Thirdparty编译
Thirdparty是OpenFOAM可能用到的第三方库,但并不是所以都是必须的。
在此建议:
a) 只安装Scotch/Metis。
b) GCC和MPI单独处理
c) CGAL装不上就别装了。不装就把foamHexMesh的Allwmake全部注释掉。(不知道在哪里?报错的时候就知道了)
d) paraView的依赖包比较多,别装了,计算集群打不开,工作站就导出数据换个地方处理。
在Thirdparty目录下,运行Allwmake脚本编译安装
./Allwmake -j 4 >log.allwmake.log
正常编译完再运行一次Allwmake脚本可以看的第三方库的安装情况,例如
======================================== Start ThirdParty Allwmake ======================================== ======================================== Build MPI libraries if required have MPICH shared library (mpich2-1.1.1p1) ======================================== Build Scotch decomposition library scotch_6.0.9 /home/otocolobus/OpenFOAM/ThirdParty-9/platforms/linux64GccDPInt32/scotch_6.0.9 scotch header in /home/otocolobus/OpenFOAM/ThirdParty-9/platforms/linux64GccDPInt32/scotch_6.0.9/include scotch libs in /home/otocolobus/OpenFOAM/ThirdParty-9/platforms/linux64GccDPInt32/lib ======================================== Build PTScotch decomposition library scotch_6.0.9 (uses MPI) /home/otocolobus/OpenFOAM/ThirdParty-9/platforms/linux64GccDPInt32/scotch_6.0.9 ptscotch header in /home/otocolobus/OpenFOAM/ThirdParty-9/platforms/linux64GccDPInt32/scotch_6.0.9/include/mpich2-1.1.1p1 ptscotch libs in /home/otocolobus/OpenFOAM/ThirdParty-9/platforms/linux64GccDPInt32/lib/mpich2-1.1.1p1 ======================================== Build Metis decomposition optional component Metis was not found ======================================== Done ThirdParty Allwmake ========================================
- OpenFOAM编译
OpenFOAM目录下运行Allwmake脚本编译安装
./Allwmake -j 4 >log.allwmake.log
正常编译完再运行一次Allwmake脚本也可以看到各个库的安装情况。
- 测试
全都编译通过后,找个算例检查一下blockMesh、串行、并行等功能是否正常。计算集群可能还要关注一下并行效率是否合理。
Q&A:
- 在WSL2 Ubuntu20.04下安装时提示scotch缺zlib库,装上zlib后顺利安装。
-
-
@MingfengWang 报什么错了?