openFOAM-extend版本由社区开发,在原版基础上包含了更多功能,包括造波、侵入边界等。openFOAM原版(基金会版本)安装并不复杂,在ubuntu系统下凭着apt-get工具几步就搞定,但编译安装稍稍复杂点,须要在git上下载源码自己编译,一般编译就要几个小时。并且,因为原版openFOAM缺乏个别工具,明天不得不安装了extend版本,陆相继续搞了小半天,如今看来,过程也不复杂,但对于不熟悉linux系统的人来说,可能比较晕,国外FOAM的资料原本就比较少,extend版本安装教程更少,因而写个教程(病毒期间不出门太闲),似乎能帮到须要的人(菜鸟推荐先安装基金会版本,才能满足90%需求,各版本差别和安装方式都可以查看wiki)。

本人笔记本双系统,win10和ubuntu19.10(近来19.04早已通知停更了,赶紧升级吧,20.04都快来了),18.04和16.04安装也差不多。首先linux文件系统,最好有个梯子,没梯子从git下东西,简直龟速。(推荐自己搭个服务器,我是在搬泥水匠上租的服务器,配置v2ray,win和ubuntu都能愉快的翻墙)。extend版本安装包好多(国外搜不到),google上一搜索一大堆,按需搜索。

安装Ubuntu_ubuntu 安装3d_安装ubuntu教程

没从git下的缘由是,我觉得自己下载对应的安装包更快,有时侯git抽风很烦,firefox挂梯子每秒1M多,速率将就,下载的是一个deb包。

因为我的oprnFOAM7是安装在/opt目录下(apt-get安装的),我也准备把extend版本也编译到这个目录。

安装Ubuntu_安装ubuntu教程_ubuntu 安装3d

openFOAM7和paraview是之前安装的,foam-extend-4.1是拿来临时储存安装包的,cd到该目录下,使用

sudo dpkg -i xxxxxx.deb

以后会在/opt下出现另一个foam文件,上面的东西如上图所示。这个时侯,早已可以看见extend版本所包含的所有东西,不过此时还没编译,所以虽然并没有安装完。

安装Ubuntu_安装ubuntu教程_ubuntu 安装3d

编译过程过程须要依赖好多其他的包,所以

sudo apt-get update

之后

sudo apt-get install git-core build-essential binutils-dev cmake flex 
zlib1g-dev qt4-dev-tools libqt4-dev libncurses5-dev curl bison 
libxt-dev rpm mercurial graphviz python python-dev  gcc-7 g++-7

这一步基本没问题,安装了好多依赖包,extend版本很坑的一点是(划重点),编译须要gcc7的支持,低版本和高版本都不行,所以可以见到,安装依赖包的时侯专门安装了gcc7(不晓得gcc的可以百度下,GNU计划最成功的产物之一ubuntu 安装3d,linux下最受欢迎的编译器之一,自由软件的典范!!)

接出来须要更换gcc的版本,ubuntu19.10默认是gcc9(ubuntu18.04似乎默认gcc7,倘若是这样,这一步可以忽视),可以以下查看gcc。

gcc -v

或则

ls -l /usr/bin/gcc*

安装Ubuntu_安装ubuntu教程_ubuntu 安装3d

刚刚我们早已下载了gcc7,如今须要用替换掉gcc9。

ubuntu 安装3d_安装Ubuntu_安装ubuntu教程

通过

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g++-7

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 50 --slave /usr/bin/g++ g++ /usr/bin/g++-9

分别设置两个版本的优先级(70,50,数越大优先级越高),然后通过

sudo update-alternatives --config gcc

出现如右图

安装ubuntu教程_ubuntu 安装3d_安装Ubuntu

安装ubuntu教程_安装Ubuntu_ubuntu 安装3d

选择对应编号即可,此时我的gcc默认早已改成了7.4版本,也可以根据右图命令查看。

安装ubuntu教程_ubuntu 安装3d_安装Ubuntu

安装ubuntu教程_安装Ubuntu_ubuntu 安装3d

此时,在编译之前还须要配置环境变量,不然编译中很可能出现如下错误:

ubuntu 安装3d_安装ubuntu教程_安装Ubuntu

配置环境变量ubuntu 安装3d,通过

vim ~/.bashrc

可以根据右图形式更改。

ubuntu 安装3d_安装Ubuntu_安装ubuntu教程

因为我安装了两个版本,采用alias命令分别命名of7x和fe41两个环境变量,这样调用不同openFOAM版本就很便捷。此时,因为要安装extend4.1,所以在命令行输入

fe41

此时环境变量生效。

最后一步就是编译了,步入目录(按自己的目录操作)

cd /opt/foam/foam-extend-4.1

之后编译。

./Allwmake.firstInstall

注意到,因为我的安装目录是在/下边,这样编译过程中可能提醒权限问题,编译失败,所以最好启用超级管理员su,再编译,假如最开始就是准备安装到home下,应当不用启用su。

最后,经过漫长的几个小时(我大约安装了1个半小时),编译结束。这时侯可以随意调用openFOAM的某个命令瞧瞧

安装ubuntu教程_安装Ubuntu_ubuntu 安装3d

编译成功,可以愉快的打闹了。

注意到,安装的extend版本没有包含paraview,假如要安,wiki上有教程。其实,因为我安装了基金会版本,openFOAM7和paraview5.6是一起安装的,所以须要用的时侯,注意切换下环境就好。

测试个反例,extend版本吸引我的一点是,Jasak等人在上面集成了IBM相关求解器,测试结果如下。

安装ubuntu教程_ubuntu 安装3d_安装Ubuntu

ubuntu 安装3d_安装ubuntu教程_安装Ubuntu

IBM用了都说好,再也不用害怕网格变型了。

杂记:

近来在看IBM,希望找点代码看,课题组又没人懂,头大,看国外的论文找点思路,这种论文写的生怕读者读懂一样。果然,问谁都不如问万能的google。youtube上有一些事例,还是美国前辈多,git上有两个项目,IB2d和IBAMR,都是美国大牛们搞得开源软件。后者完全基于matlab或则python,纯matlab代码(或则python)做IBM,不要太给力linux windows,即使不咋能读懂底层代码。IB2d只能做2维IBM,IBAMR能做三维,其实更复杂,且加入了自适应网格,只能安在linux下,原本准备研究这两玩意儿,前面又发觉openFOAM-extend也能做IBM,那就转战foam了,虽然更熟悉。果然,google才是最好的导师,起码才能解答我50%的问题。

本文原创地址://gulass.cn/obbazjcxxbzy.html编辑:刘遄,审核员:暂无