汪洋博士:如何通过自己的努力学习OpenFOAM?
导读:本文由武汉理工大学汪博士根据自学OpenFOAM的亲身经历,总结了学习OpenFOAM最有价值的资料和个人经验。诚邀各位OpenFOAM学习者报名4月1日汪老师的公开课《走近自由、开源计算流体软件—我的OpenFOAM启蒙课》,支持永久反复回看,详情见后文。一、引言
由于在群里,经常看到小白们天天问一些问题,回想起自己在入门的时候,也是在很多大神的帮助下,才有所进展,所以想写点东西帮助下小白怎么入门。但是本文并不是写几个流程,跑几个算例来教小白,这种粗浅的案例式教程比比皆是。本文主要集中在如何通过自己的努力学习OpenFOAM。
图片源自网络
二、入门准备
1. 思想准备
在学习OpenFOAM过程中,一定要避免完美主义倾向,切记!因为OpenFOAM涉及的内容特别多,你点点滴滴都想搞懂,一定会陷入细节的黑洞不能自拔。所以在很多时候,当个漂亮的名词挺好。一定要认识到挫败感很强,这个感觉一直贯穿我的学习过程中。所以错了就弥补。
图片源自网络
2. Linux相关知识准备
首先最好有一台干净的电脑装Linux,最好装Ubuntu18.04LTS版本。然后找几个视频教程,越短越好,适应下Linux命令行。强烈推荐学习下面这门课,对于今后使用OpenFOAM会有极大帮助,需要做作业,反复练习。
网址:
https://missing-semester-cn.github.io/
https://www.bilibili.com/video/BV1x7411H7wa?from=search&seid=17407778522322643506
https://www.bilibili.com/video/BV11T4y1G73e
3. 安装OpenFOAM
很多人不知道选择哪个版本,用什么。实际上都差不多。选择最容易安装的版本,安装链接如下。由于是Ubuntu,所以按照下面三步就可以安装上OpenFOAM8,命令行中输入。如果不了解命令行可以查询一下官网。
(https://openfoam.org/download/8-ubuntu/openfoam.org)
[*]Step1
[*]
[*]
sudo sh -c "wget -O - https://dl.openfoam.org/gpg.key | apt-key add -"sudo add-apt-repository http://dl.openfoam.org/ubuntu
[*]Step2
[*]
sudo apt-get update
[*]Step3
[*]
sudo apt-get -y install openfoam8相信学到一定程度之后,你的安装水平会提高的。以至于可以多版本共存。
三、正式入门入门这个环节,推荐大家系统耐心的去学习。不要觉得太花时间,应该直入科研主题,这样做反而会浪费时间。从目前学过的资料中,排序如下
1. wolfDy相关课程
我推崇热那亚大学的培训。这个页面是个巨大的宝库,要特别重视。里面有PPT和对应的算例资料。甚至连C++和linux都有入门教程。实际上按照这个资料走一遍,就入门了。
网址:
http://www.wolfdynamics.com/tutorials.html?layout=edit&id=50
2. OpenFOAM.com版本
这是com版的官方给的入门资料,也是相当详实和丰富。尤其是三周课程,非常值得一学。
网址:
https://wiki.openfoam.com/%22first_glimpse%22_series
https://wiki.openfoam.com/%223_weeks%22_series
3. 研发埠的课程
推荐DTK大学,陈昊大神的课,他研究对象应该是波浪。
4. József Nagy
他是上述三周课程的编委之一,其中部分内容会在三周课程中出现,有所重复。首先看basic基础视频,讲的非常清晰;其次看intermediate中级视频。
网址:
https://www.youtube.com/watch?v=E9_kyXjtRHc&list=PLnJ8lIgfDbkokSay_SRjHREsoA_TS-ALl&index=14
5. Development - Holzmann CFD
哥们是德国人,网站上很有一些宝贝。尤其是想学好SnappyHexMesh的人。唯一的缺点是要收费,但是还是挺值得的。免费内容也相当精致。
网址:
https://www.youtube.com/channel/UCLMLJc3tV_tNRlWoVFaSRGw
6. 瑞典Chalmers大学博士课程
授课内容较难,PPT图片不多,文字描述操作步骤,总体来说没有什么问题,都可以实现。由于是博士生课程,所以这门课更偏向编程一点,不过也还好,不是特别难。往年很多学生都要自己写求解器的。所以,有兴趣的朋友可以认真看一下历年相关的课件和作品集。
网址:
http://www.tfd.chalmers.se/~hani/kurser/OS_CFD/
7. C++入门课程
认为是很不错的C++入门教程,这个课程有很多优点,我是编程小白,就不一一说明了。绝对值得跟一下。
网址:
https://www.bilibili.com/video/av68697716?p=11
8. CFD理论补充
① 快速入门CFD教材
唯一一本,推荐看下安德森的那么薄薄的计算流体力学作为完整框架性学习。那些从入门到放弃的CFD就再说吧。
② CFD理论基础课-Dr Aidan Wimshurst
分为三门课程,可能后续还要出。涵盖的内容,主要是一维、二维扩散方程,扩散对流方程,三类边界条件的实现 (Dirichlet, Von Nuemann),集中常见的离散格式,非结构化网格,网格质量评价标准等内容。内容娓娓道来,推导相当清晰,例题相当细致,每一步都不省略,并且提供了Excel,Python两种实现方式。非常推荐,唯一的缺点,有点贵。
网址:
https://www.udemy.com/course/computational-fluid-dynamics-fundamentals-course/
③ FluidMechanics 101课程
这是Dr Aidan Wimshurst的专栏,没有固定的逻辑和顺序,讲解过程逻辑清晰,英式口音。重要的是,授课逻辑偏向OpenFOAM,内容以湍流模型,PISO,SIMPLE等算法实现,也会扣一些细节比如网格的非正交修正等。由于OF的很多算法与教科书的是有一定区别的,所以理论还是得扣一下的。视频下方给出相关参考文献,也省去收集经典文献的麻烦,这是快速入门CFD的捷径。补充一下,作者对OF主要开发人员Jasak教授的博士论文相当有研究。
网址:
https://www.youtube.com/channel/UCjdgpuxuAxH9BqheyE82Vvw
④ ME702 + 12步入门CFD (Python)
这个版本是github上的版本,会多一些内容,直接看官网的也行。配合ME702课程系统学习一边CFD也是非常推荐的。
网址:
https://github.com/barbagroup/CFDPython
https://www.bilibili.com/video/BV1YW411s729?from=search&seid=11824432106004864112
四、学习建议
无论是视频教程和文字教程,学习过程尽量专心。如果不能专心,由于资料大多是英文,所以会导致理解偏差。
碰到问题或者计算结果与教程不同,不是打开QQ,拍照上传到群里,此方式很糟糕。应该自己先思考下,为什么?是自己操作的问题,还是因为版本的问题,还是老师故意为之设置好不同让你改,还是其他什么原因。如果分析不出原因,可以将错误,抛到google上搜索一番,也许你的问题有人曾经也发生过。一般都会在Cfd-Online上找到,实在不行再问。
OpenFOAM分支特别多,不太可能有人什么都知道,所以问问题一定要精确。起码大概知道是OpenFOAM的问题还是Linux还是C++。这里额外提醒一下,不用花太多时间学习C++,学几个月一样解决不了OpenFOAM出现的问题。这里强调的是,不要把C++作为学习OpenFOAM的主要方向。
大部分与OpenFOAM有关的问题:
· 操作问题,例如:不在正确的目录下输入icoFoam,然后报错了不看错误信息。
· 设置问题,例如:没有0文件夹或者没有改名字,就开始算,结果报错。
· 发散问题,例如:Co设置不合理,网格划分不合理等都会导致。求解器设置不合理,这个就得提升CFD内功。
· 学习路径。应用:学Nagy老师的基础和中级课程->3.1->3.2->3.3->3.6。编程:3.4->3.1>3.2(最后5天)->3.6->3.5的编程课程,同时学习3.7。
CFD理论,找到特别合适的Crash课程,认真学习3.8.2,最详细,最基础的CFD入门动手课,大一数学功底就可以跟下来。3.8.1可以在系统学完3.8.2同时展开。3.8.4给出了另外一条路,就是上课动手实操。这一关,逃不掉。
五、结论
首先,学习OpenFOAM就几个月时间,上面推荐的内容,我都看过。只有反复才能提高,不要为畏难此为其一。
其二,就是必须努力提高内功,光会设置一些基本参数,那与用fluent 这些商软差别不大,一定要明白fvSchemes和fvSolution 这些设置的内涵,这样才能在前人的工作基础上有所创新。
第三,对CFD本身的功底的提高,千万别忽视计算流体力学功底的提高,这方面我也是看了不少书和视频的,对一些算法格式都有认识。
总之学习就是个螺旋向上的过程,充满挫败感,希望不放弃,与诸君共勉!
OpenFoam版本更新日历:
· 第一版本:2019-10-03
· 第二版本:2019-11-21
· 第三版本:2019-12-16 增加3.8节相关内容,牛津大学博士研究生的视频教程。
· 第四版本:2020-04-28 大幅修改了3.8节内容,推荐更为完善Dr Aidan Wimshurst的工作。增加了波士顿大学芭芭拉教授的CFD课程,ME702,并将有名的12步入门CFD(是ME702的配套课程)增加进来。大幅度对文字内容进行修改。
· 第五版本:2020-04-30增加Linux相关内容,非常值得用来Linux入门。
· 第六版本:2020-08-31修改了学习路径中微小细节,官方3.2节内容已经更新。
· 第七版本:2020-12-05将MIT的讲计算机教育缺失的一课正式加入进来,非常好的Linux相关生产力学习课程,修改了一些语言描述和错别字。
来源:仿真秀App微信公众号(ID:fangzhenxiu2018),作者:汪老师。
页:
[1]