waves2Foam 是 OpenFOAM 的第三方波浪工具箱,其中的 waveFoam 求解器广为人知。本专栏曾介绍在 Ubuntu 14.04 上编译 waves2Foam 的方法(常恭:安装 OpenFOAM + waves2foam),现在 Ubuntu 14.04 已经停止服务,waves2Foam 和 OpenFOAM 都也都发布了许多新版本,添加了很多新特性。有些朋友尝试在新版的 Ubuntu 和 OpenFOAM 上编译 waves2Foam 但遇到了些麻烦,向小编兴师问罪。小编利用下班时间,编译了目前最新版本的 wave2Foam r2141,操作系统也选了目前支持良好且较为稳定的 Ubuntu 18.04,OpenFOAM 选了 v1812,这一版本经历多次小修,小编使用的是 OpenFOAM-v1812.200417(Development Tags OpenFOAM-v1812.200417)。如果您不了解版本兼容性,请务必使用小编已经测试过的版本,不同版本的 Ubuntu、OpenFOAM 和 wave2Foam 很可能不兼容。
Windows 10 的 WSL 也更新到了 Ubuntu 18.04,本文介绍的方法理论上可以在 WSL 上编译,使用 Windows 的朋友可以试试。
首先要编译好 OpenFOAM v1812,用默认参数就行,没啥注意事项,这一步有很多现成的教程,不再赘述。
然后安装 waves2Foam 的依赖包
sudo apt install libgsl-dev gfortran subversion git
如果安装速度很慢建议“换源”,搜索“换源+你使用的 Ubuntu 版本”在网上找教程。
再后下载 waves2Foam 的源代码,开发者推荐使用 svn 下载,使用如下命令新建文件夹
Code language: PHP (php)mkdir -p $FOAM_RUN/../applications/utilities cd $FOAM_RUN/../applications/utilities
使用 svn 下载
svn co -r 2141 http://svn.code.sf.net/p/openfoam-extend/svn/trunk/Breeder_1.6/other/waves2Foam
Code language: JavaScript (javascript)
注意这里 svn 命令的参数 -r,这个参数的含义是指定具体的版本号,不指定这个参数默认是最新版。建议使用小编测试过的版本。
如果您在使用 svn 下载源代码时遇到问题,请使用 git 下载,github 的服务器相对稳定。
git clone https://github.com/ogoe/waves2Foam.git
Code language: PHP (php)
下载好进入 waves2Foam 文件夹,运行一键编译脚本
cd waves2Foam ./Allwmake
这里需要注意的是,运行 Allwmake 后会从 GitHub 下载 OceanWave3D-Fortran90 的源代码,必须保持网络畅通。编译过程中看下输出,是否有报错,尤其是不能有 fatal error。
编译完成后测试下,最简单的测试方法是
waveFoam -help
如果安装无误,会提示
Usage: waveFoam [OPTIONS]
Options:
-case <dir> Specify case directory to use (instead of the cwd)
-decomposeParDict <file>
Use specified file for decomposePar dictionary
-dry-run Check case set-up only using a single time step
-dry-run-write Check case set-up and write only using a single time step
-noFunctionObjects
Do not execute function objects
-parallel Run in parallel
-doc Display documentation in browser
-doc-source Display source code in browser
-help Display short help and exit
-help-full Display full help and exit
Solver for two incompressible, isothermal immiscible fluids using VOF
phase-fraction based interface capturing.
With optional mesh motion and mesh topology changes including adaptive
re-meshing.
Using: OpenFOAM-v1812 (1812) (see www.OpenFOAM.com)
Build: _3fe4e281-20200312 (patch=200312)
Arch: LSB;label=32;scalar=64
Code language: Bash (bash)
waves2Foam 维护得比较好,在持续更新、开发,编译过程相对容易,编译不出来的朋友往往是网络不好,源码下载不完整。如果您排除了网络问题,精读了本文仍然遇到问题,欢迎留言、私信。
常博士你好!
我按照你的这份指南,用同样版本的ubuntu和OpenFOAM安装2141版的wave2Foam,安装过程一切顺利,但安装结束后输入waveFoam -help显示command not found。我试过在新建的$FOAM_RUN/applications/utilities里安装,也试过在OpenFOAM-v1812自带的/applications/utilities/里安装,还试过不同版本的wave2foam,皆是同样的问题。请问你是否知道这个安装失败可能的原因呢?感谢!
仔细看下安装过程中的日志,可能并不如你想象的那么顺利。
用svn下载完成后,进行./Allwmake的时候,出现了如下fatal errors:
1. waveGaugesNProbes.C:63:10: fatal error: waveGauges.H: No such file or directory
2. setWaveParameters.C:64:10: fatal error: setWaveProperties.H: No such file or directory
请问这应该如何解决?
可能是下载过程因网络原因中断了,导致源代码不完整