开源CFD代码----HiFiLES使用小结 (上)

第三十四章

大道汜兮,其可左右。万物恃之以生而不辞,功成而不有。衣养万物而不为主,常无欲,可名于小;万物归焉而不为主,可名为大。以其终不自为大,故能成其大。

前言

接下来的时间将会记录下毕业设计使用到的一些东西,一方面是为了以后查阅的方便,另一方面要是有同样的人遇到这样的东西也有个参考.总而言之就是,就是记录记录.

正文

这开源代码全名是High Fidelity Large Eddy Simulation,简称HiFiLES,对此有了解的高手可以离开了,下面的内容完全是从"三无"身份的小白角度展开的.

  • 无Linux基础
  • 无C++基础
  • 无CFD编程基础
    所以,接下来我将主要说一下在使用这个代码时遇到的一些问题,可以说是一个用户反馈吧!毕竟太高深的东西咱也不了解,目前也只限于照着人家说的做而已.先来了解下什么是HiFiLES.

什么是HiFiLES

陷入数值模拟这个巨坑的人都知道,数值模拟一般分成三个部分:前处理,求解器,后处理.这个HiFiLES就是个求解器,而且是个高阶精度求解器,目前大多通用的都是二阶的,所以这就是这个求解器与众不同的地方.这个求解器是斯坦福大学航空航天计算实验室(ACL)开发的,做CFD的人应该都知道这个实验室是很叼的.为啥要开发这个呢?总而言之,就是科学技术的发展需要人们不断向高阶数值模拟的方向发展,低阶的已经满足不了现在的需求了,这就是发展的趋势吧!这软件有啥特点呢?本文单从使用的角度来说,理论自动忽略(太高深了,有需求的可以自行查阅),总之在用的过程中有下面几点;

  1. 可在CPU和GPU下运行,这点很重要,下面也将着重分成这两方面来介绍,因为这两者的计算速度简直就是天壤之别
  2. ** 高阶可压缩NS求解器,不可压的没尝试过,支持三角形,四边形,六面体,棱柱形,四面体网格(以后不知道还会增加不)**
  3. 网格文件类型为(.neu)和Gmsh(.msh),这也很重要,因为你要想用得有对应的网格文件,目前来说,在国内就只有用Gambit来生成(.neu)类型的网格了
    就说上面三点吧,比较重要,其它的可以到官网上查询,什么数值格式了,边界条件类型了之类的.下面,将主要分成CPU和GPU两方面来讲解使用的一些体会,其实也就是个使用流程.

CPU版本运行

前面说了,这个程序只能运行在Linux下,所以得首先装个Linux系统,根据人家提供的教程,Linux版本用的是Ubuntu14.04,在这里,我用的是Ubuntu16.04和Win10的双系统,当然运行时就在Linux环境下,事后也没发现啥问题.那接下来就先装个双系统玩玩,这个嘛,网上有很多教程可以找找,如果有机会的话,以后再写个装双系统的教程,毕竟这也能写好多.好了,假设你跟我一样也装了个Win10和Ubuntu16.04的双系统,可以换到Linux下好好玩一下,体会下和windows系统的不同.

接下来就是安装HiFiLES了,首先得获得安装包,这个可以到斯坦福HiFiLES的官网上去,当然,开源的,自然会在GitHub上(不知道GitHub的赶紧百度一波),这里我放上地址
其实在LInux下,要是会Git的可以直接Clone下,不懂的就直接下压缩包吧!
得到安转包之后就可以安装了,等等,在Linux下该杂安装啊?开始的时候,我也是一脸懵逼,然后去看它的安装说明,不懂的各种Google,好在最终是折腾出来了,在这里,咱先说下在CPU下的安装运行流程.

1、AutoTools工具

根据它的安装说明,这个程序是用GNU AutoTools工具安装的(不懂的赶紧google),其实这就是Linux编程下一套编译程序的工具,用这套工具可以编译安装程序.所以首先你得确保你的Linux系统有这套工具,具体的可以google下,在ubuntu下可以直接用下面的命令安装;

   sudo apt-get install autoconf

当然得首先ctrl+alt+T打开一个终端窗口(右键也可),然后输入以上命令,按照提示操作就行.

2、安装必要库

然后就能按照安装说明安装了吧,实践证明,还不行,不安装一些必要的库它会报错.按照网上的教程,说是安装下面的一些库之后就可以了,不过由于我看到这份教程比较晚,所以没来得及尝试,具体的效果也不得而知,因为我用了一个笨方法.先说网上给的基本库安装,在终端运行下面的命令就可以了:

 sudo apt-get install libatlas-base-dev
 sudo apt-get install libparmetis-dev
 sudo apt-get install openmpi-bin
 sudo apt-get install libopenmpi-dev
 sudo apt-get install libmetis-dev

再来说下我的笨方法,我是先安装了OpenFoam然后才安了HiFiLES,结果还不错,我是这么想的,HiFiLES和OpenFoam都是用C++写的,都是开源的,一些基本的库配置应该是一样的,如果OpenFoam能正常运行,那HiFiLES也没啥问题,所以就试了下,没想到还真行.
所以在这里给出的建议就是你可以先按照第一种方法安装,如果不行的话在来我的笨方法,毕竟OpenFoam也不好安装啊!另外,我安装OpenFoam的过程是按照东岳流体给的过程,具体的自己google把,这里我附上地址

3、修改配置文件

基础工作完成了,接下来需要修改下配置文件.在下载后的源代码文件夹里找到configure_run.sh这个文件,根据官方的说明,一些编译安装的选项都在这里修改,找到下图中的位置,然后按照图中的配置修改即可

4、编译安装

至此就可以编译安装了,然后将目录切换到你下载的源文件目录下,即包含configure_run.sh文件的目录下,打开终端,运行下面这个命令:

 ./configure_run.sh

注意前面有个小园点,然后这个脚本就开始检查一些基本配置了,没哈问题的话就可以编译了,接着运行下面的命令:

 make

然后这个程序就开始编译了,看它成功编译了没,请到这个目录下的bin文件夹下找有没有HiFiLES程序生成,如果你什么都没改的话,现在你的bin文件夹下应该有这两个文件:


要是没有左边那个程序,就是没有编译成功,应该是前面的基本库或配置文件出错了,所以回头去找错吧!我也没办法啊!
其实到这里就已经成功了,因为生成了我们需要的程序了,不过在这里只能在这个目录下运行这个程序,要想在任何地方运行,得把这个程序安装在电脑上,然后修改环境变量.安装可以用下面的命令(我比较懒,到这就不安装了):

  make install
5、修改环境变量

修改环境变量的目的是让那程序在各个地方运行.回到桌面,再打开一个终端,输入

 gedit  .bashrc

注意前面的圆点.打开环境变量配置文件,在文件最后添加如下语句:

export HIFILES_HOME=<你的下载目录>
export HIFILES_RUN=<你的下载目录>/bin

你的下载目录可以这样获得,在含有configure_run文件的目录下打开一个终端,输入pwd命令即可获得,然后将得到的目录替换上面的地方即可.
最后再运行一下命令让环境变量生效:

source  .bashrc
6、测试程序

至此,就可以运行程序了.进入

testcases/euler/cylinder

目录下,将里面的两个文件拷贝到bin文件夹下,然后运行以下命令:

 ./HiFiLES   input_cylinder_inv

就可以运行一个算例了,不要高兴的太早,因为接下来它会出错.
具体的出错原因咱们下一节再说,同时还会说下GPU版本下的运行,这个CPU计算的速度实在感人!

喜欢就关注"咋家"吧!

推荐阅读更多精彩内容

  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 48,043评论 12 409
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    O感悟人生O阅读 7,090评论 2 27
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 70,884评论 12 116
  • 夜晚的湛江脱去了白日里的金黄色高温表皮,抬眼便是黑色中带点深蓝色的天空,几颗繁星点缀着,不时又飞过几架飞机。 林晴...
    袁芜阅读 129评论 0 3
  • 回忆只要还扯上痛 还扯上前世今生一些泛着波光的汹涌 我便不能抛下云的天空 留在尘世中无法了却的爱情 把一生深深的刺...
    江城妖怪阅读 25评论 0 0