数值波浪水池构建工具waves2FOAM的安装与使用

来源:多相流在线

作者: 毛艳军

在应用 CFD 方法进行 船舶与海洋工程,港口海岸及近海工程等相关工程问题模拟的过程中,首先要做的就是建立数值波浪水槽(Numerical Wave Tank NWT), NWT 需要具备基本的造波和消波功能。waves2Foam 就是一个基于 OpenFOAM 进行二次开发的用于波浪模拟的拓展工具箱。它由丹麦科技大学 Niels Gjol Jacobsen 在2011年9月开源公布,也是目前影响力和知名度较高的一个造波工具箱。

waves2Foam 采用速度入口式造波方法,松弛区消波方式。预设了多种规则波,不规则波,孤立波等造波类型;松弛区消波可以在水槽两端设置先后消波区从而可以消除尾端波浪以及结构物二次反射波浪。经众多学者和以及笔者验证,waves2Foam 造波和消波效果都较为稳定,同时计算效率也表现不错,因此得到了众多学者使用。同时,其中包含了较多的前后处理程序也是值得学习和使用的。

数值波浪水池构建工具waves2FOAM的安装与使用的图1

图片来源:https://www.zhihu.com/people/yang-lin-40-50/posts

本篇主要内容:

waves2Foam 安装过程中容易出现的问题和解决办法,是waves2Foam手册的有效补充。

waveDyMFoam 和 overwaveDyMFoam 动网格版本求解器的手动修改,手册的有效补充和首发内容。

新手学习和使用OF和waves2Foam的建议。

1   waves2Foam的安装与使用

关于wavesFoam的安装与使用

http://http://openfoamwiki.net/index.php/Contrib/waves2Foam已做了详细介绍,其中主要内容都迁移至wave2Foam Manual 。因此对于使用waves2Foam的人员,建议通读manualwaves2Foam.pdf。其中安装部分已经把基本安装流程和所需要的依赖都说明白了,先移步去尝试尝试可好?这里主要是点出安装过程中对于新手常遇到的几个小坑。

支持版本

关于支持版本,手册中已经写明了支持的版本,亲测2.x ,3.x系列几乎安装没有太大问题,下面小坑有几个可以学习一下,万一不幸碰到也好解决,(为什么笔者这么不幸)。

OpenFoam-v1706 版本支持修改

waves2Foam 近期公布了其支持的OF17012_PLUS版本,之前尝试了N久的在OF1706_PLUS上编译安装的工作也算告一段落,在此填坑,是否能够和重叠网格有效结合有待于进一步验证,应该问题不大。 

由于暂时不会将OF1706_PLUS直接升级为1712,因此强迫症的我打算再次尝试OF1706_PLUS上编译安装。application/solvers/里面没有对应1706_PLUS的版本。因此从1712_PLUS版拷贝,从1606拷贝的兼容性极差,似乎版本差异太大,缺失很多声明文件。

此部分讲解较为详细,希望大家可以耐心阅读学习整个程序修改和查错过程,注意程序中的注释内容,逐渐具备基本的程序修改能力。

数值波浪水池构建工具waves2FOAM的安装与使用的图2

设置好其他,编译发现如下错误:

数值波浪水池构建工具waves2FOAM的安装与使用的图3

显示为scAlpha未声明,查看此变量未找到相关声明,参考查找icAlpha关键字,在OpenFOAMv1706/src/finiteVolume/cfdTools/general/include/alphaControls$中发现此变量,如下:

数值波浪水池构建工具waves2FOAM的安装与使用的图4

对比1712代码,发现了如下关键字声明:

数值波浪水池构建工具waves2FOAM的安装与使用的图5

因不方便改动源码,因此将此声明放到了alphaEqn.H中,尝试可以编译成功,至此此坑填满。

如下:

数值波浪水池构建工具waves2FOAM的安装与使用的图6


相关依赖

一定要把manualwaves2Foam中的相关依赖都下载和编译安装好之后再进行waves2Foam的安装。依赖的相关安装方法自行百度。这里面有个很容易出的问题,就是ThirdParrty里面,关于OceanWave3D-Fortran90的下载,与安装时采用的git clone. 

git clone https://github.com/boTerpPaulsen/OceanWave3D-Fortran90.git ,详细见ThirdParty/Allwmake

这里面关键部分是这部分容易出问题,如果OceanWave3D编译出现问题,请参考下面这段的介绍:

数值波浪水池构建工具waves2FOAM的安装与使用的图7

这一部分由于网络问题或者git 库可能迁移,会导致无法下载OceanWave3D,从而引发一系列问题。导致编译失败。此部分可以通过阅读make 文件的操作,进行手动解决OceanWave3D的编译,主要进行了以下操作:

数值波浪水池构建工具waves2FOAM的安装与使用的图8

完成这三步,就相当于手动解决了OCeanWave3D的下载问题,然后可以运行Allmake进行编译。或者自行阅读后续过程手动编译OceanWave3D.

环境变量设置

这里按照手册要求,安装路径是 $FOAM_RUN/../applications/utilities,这里使用了OF的环境变量FOAM_RUN,新手一定要将源代码放入此路径中,因为默认的环境变量$WAVES_DIR是这个路径,当然,进一步如果了解到了这个问题,你可以把waves2Foam安装到任意位置。环境变量设置文件位于\bin\bashrc.org下面,此路径中定义了所有waves2Foam的环境变量。由于篇幅限制,完整文件请自行查看,下面展示主要部分: #号表示注释内容

数值波浪水池构建工具waves2FOAM的安装与使用的图9

还有一块叫做Easy navigation,此部分的使用方法是将该bashrc.org的路径到自己的配置文件中`./.bashrc`中去,参考多版本OF控制的原理,在此不详述。

数值波浪水池构建工具waves2FOAM的安装与使用的图10剩下的环境变量部分主要是进行的版本的区别和不同进行了一定的修改和设置。

补充:使用默认的路径编译好可执行文件后,后续如果自己改动求解器编译时Make/file 中的路径尽量不要使用waves2Foam提供了的环境变量,最好使用绝对路径,虽然麻烦了一些但是不会出现太多的环境变量问题,或者如上文所述,记得将其添加到自己的配置文件中,每次开启终端即可自动source .bashrc的话也可以。

经过再次编译安装前一定要到/bin/里面`source bashrc`,记得设置waves2Foam的环境变量,否则你会得到各种错误,如缺少很多include文件以及如下问题:

数值波浪水池构建工具waves2FOAM的安装与使用的图11

环境变量设置

默认算例可以通过运行Allrun命令来运行算例,此处可以通过阅读Allrun来了解waves2Foam算例运行过程中的执行的命令,可以手动按顺序执行。此处一个小坑,算例换到其他位置后无法运行Allrun。请看代码注释部分

数值波浪水池构建工具waves2FOAM的安装与使用的图12


6  waveDyMFoam的修改

部分版本中waveDyMFoam需要自己通过interDyMFoam进行修改,此处的主要问题就是需要理解Make文件夹中的两个文件file和option

file:**.C文件文件名,和可执行文件的存放位置,注意此处最好手动写绝对路径。

数值波浪水池构建工具waves2FOAM的安装与使用的图13

options:源文件需要引用的相关代码和库文件,编译时,时常出现缺失某些文件的情况,主要是此处路径的问题,可以在此处添加,include进来,强调一点,一定要注意路径书写的正确性,不要换行书写,注意结尾的 \。 小写 -i include某个文件,大写 -I include某个文件夹下所有,同理 -l & -L。

数值波浪水池构建工具waves2FOAM的安装与使用的图14

waveDyMFoam.C的改写方式

由于waves2Foam中未对动网格求解器进行编写,此部分在manual中给出了部分解释,但是相对较难理解。manual中的compareFiles.sh后显示的内容如下,这里面主要是对比了所有的interFoam和waveFoam的区别,作为参考用于waveDyMFOAM的改写:

数值波浪水池构建工具waves2FOAM的安装与使用的图15

  • 首先做最简单的工作,复制interDyMFoam/ 到waveDyMFoam/ 参见上文

  • 修改file 和option 文件 参见上文

  • 代码改写,给出了局部添加代码行号和上下文位置:

waveDyMFoam.C 的改写代码

waveDyMFoam.C

数值波浪水池构建工具waves2FOAM的安装与使用的图16

creatFiels.H

数值波浪水池构建工具waves2FOAM的安装与使用的图17

createAlphaFluxes.H的定义如下:

数值波浪水池构建工具waves2FOAM的安装与使用的图18

总结,此次编译工作纯属自娱自乐,程序调整较大,个别地方有待于进一步验证,经过以上修改,验证后可以正确的将waves2Foam的造波条件应用于interDyMFoam 求解器。 对整个程序有了更进一步的认识,下一步工作将其应用于重叠网格模型overInterFoam和isoInterFoam的新型自由液面的压缩格式上。

overWave DyMFoam solver

相信此部分内容应该属于全网首发,其实没什么新鲜东西,一句话,搞清楚什么是造波边界条件,什么是动网格求解器,两者算法上应该是相互独立的,因此上面 waveDyMFoam solver 的修改流程完全适用于 overWaveDyMFoam solver, 此部分工作已经过验证可以正确应用,需要注意的是相关依赖和include 文件要搞清楚,作者建议 overWaveDyMFoam 求解器最好基于 overInterDyMFoam 进行修改,对于新手不要随意换目录,很多 include 文件搞不清楚很容易找不到。 编译前,记得去 source waves2Foam/bin/bashrc,否则 好多造波的库是找不到的,另外此处 waves2Foam 的造波边界条件似乎和 OF -v1706中的 waveModel 边界条件名称有所冲突,因此可以将自带的 waveModel 库 comment out 掉。

error 提示

1.

数值波浪水池构建工具waves2FOAM的安装与使用的图19

2.

数值波浪水池构建工具waves2FOAM的安装与使用的图20

如果你觉得本部分对你的研究有借鉴意义,可以使用如下引用:

数值波浪水池构建工具waves2FOAM的安装与使用的图21

新手建议,此处是重点

1. 阅读英文资料,网站,论坛,特别是针对于研究人员,这是使用OpenFOAM这样程序的基本要求 

2. 对于OpenFOAM的学习建议,建议Linux系统,软件一定要自己安装几遍,多去折腾一些,才会有更多的感悟和收获,此外,Linux系统建立在开源框架下,有更多优秀的开源程序是基于该系统下的,方便后期的程序使用。

3. 熟悉Linux系统的使用,尤其是环境变量的基本意义,就像是全局变量一样,对于软件安装和使用过程大有裨益,回头看来,这个概念其实在windows下也同样重要,只是被我们忽略了而已,在很多破解或者编译软件的过程过程中都会遇到这个概念的。

4. 戒骄戒躁

5. 对于新手,经常会遇到的``命令不存在``的错误提示,思考了一下,大概有一下几种可能参考:

    - 命令输入不对 可能性:30%  解决方法:核对命令,注意大小写

    - 软件安装失败,命令本身不存在 可能性:30% 解决方法:重新检查软件安装过程,是否出错

    - 部分命令因为版本或者特殊原因安装失败,此时可以根据自己的命令到存放可执行文件的文件夹,默认``$FOAM_USER_APPIN``和``$FOAM_USER_LIBBIN``中查看是否存在 可能性:20% 解决方法:如果不存在,则找到对应的源程序,重新尝试wmake进行编译,或者重装整个程序。

    - 编译的可执行文件没有加入到Linux的搜索PATH中,因此终端无法找到该命令,此概念Windows通用 可能性:10% 解决方法,将可执行文件的目录通过export命令加入到PATH环境变量中:

        > 通过修改.bashrc文件:

        > vim ~/.bashrc 

        > //在最后一行添上:

        > export PATH=/usr/local/mongodb/bin:$PATH

        > 生效方法:(有以下两种)

        > 1、关闭当前终端窗口,重新打开一个新终端窗口就能生效

        > 2、输入“source ~/.bashrc”命令,立即生效

        > 有效期限:永久有效

        > 用户局限:仅对当前用户。

登录后免费查看全文
立即登录
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP

1
2