您好,欢迎访问三七文档
苏军伟老师的博客作者:莎士比如链接:来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。我谈谈自己的学习过程1.从看OpenFOAM的顶层求解器开始得益于C++面向对象的编程理念,OpenFOAM的顶层求解器简单明了。在源文件application文件目录下面挑几个简单的求解器先看起来,里面各个变量的命名方式也非常规范,代表的意思一目了然。多看几个找到感觉之后就能修改控制方程,实现自己想要的功能。这一阶段可以看一下Prof.Jasak的博士论文,了解一下OpenFOAM的求解算法。先从这一步开始会让你很快找到使用OpenFOAM编程的良好感觉,自信心爆棚并爱上OpenFOAM这样一个简单的像matlab的CFD语言。2.弄懂他的底层实现,也就是源文件src文件夹里的内容,包括了OpenFOAM所有类的声明和定义文件。一开始来到这里你会感到无能为力,OpenFOAM为了维持代码的简介性,使用了大量的继承,派生和模板,而且继承层数之多令人绝望,有的时候为了查到某一个子类的成员函数的定义,要向上找五六层。这时候建议使用网页进行查找,doxygen生成的代码能够减轻你的迷茫。Src文件很多可以挑几个比较重要的先找找感觉。OpenFoam多面体网格:包括mesh和field,非常重要,是数据结构的核心部分。梯度计算:gaussleastsqure等snGrad计算:较简单fvc:容易看懂,处理一些进源项的部分fvm:有点难度,处理进系数矩阵和源项sufaceInterpolate:对流项格式,比较重要,但不难。边界:编写新的边界条件,比较简单。湍流模型:比较简单。要实现新功能时,最偷懒的办法是找一个功能相似的class进行修改。修改的时候要注意一下继承关系,一般情况下子类要重写基类中所有的虚函数和纯虚函数,这些虚函数就你需要修改的地方。这一阶段之前提到的TheFiniteVolumeMethodinComputationalFluidDynamics:AnAdvancedIntroductionwithOpenFOAMandMatlab和OpenFOAMTechnolgyPrimer会派上用场。做到以上两步,只要你足够勤奋,足够耐心你就成为了一个OpenFOAM的合格开发者。3.使用OpenFOAM进行计算。OpenFOAM没有推荐设置,附带教程中的默认设置都只保证计算的稳定性。基本上需要靠尝试和一点运气才能的到好的结果。这时候你需要多参考一下论文中成功的算例,多逛一下OpenFOAM的各大论坛。最后的最后一定要benice手动微笑OpenFOAM入门建议(2015-08-3014:38:18)转载▼标签:openfoamsphlbm分类:OpenFOAM-实用技术“TwoweeksofplayingwithaCFDcodewillsaveyouoneafternoonofreading”什么是OpenFOAM(力荐)OpenFOAMHistoryOpenFOAM®ReleaseHistory注意,下面列的资料都在不断更新,本站博文也不断更新。OpenFOAM国内使用情况调查在大家眼里OpenFOAM难点在哪?不断有新人加入OpenFOAM的学习和使用中来,因此一些问题反复被提起,比如:刚开始怎么学openfoam?因此这里花一点时间稍微总结一些入门的建议,首先通读本文可以事半功倍。先学操作。需要自己写求解器再学求解器。需要自己写C++代码了再看C++。当然如果你时间充分的话,随意。第一课:按照《用户指南》,运行一遍cavity的算例,顺一遍就行。《OpenFOAM用户指南》《OpenFOAM编程指南》的中文版可以在东岳流体找到。第二课:Thebigpictureforbeginners.阅读《OpenFOAM-FAQversion-0.1beta》,此FAQ由北航田超博士QQ387210626-TCH多物理场整理。可以去该QQ群找此文档:OpenFOAM千人群(139297966)。找不到也可在此留言。通过这次学习,对OF有一个“整体”的把握。同时以debug和opt模式安装:第三课:瑞典查尔姆斯理工大学的OF课程,MSc/PhDcourseinCFDwithOpenSourcesoftware。把所有的ppt从头到尾看一遍,有时间的话可以跟着操作一下。注意,将网址~hani/kurser/OS_CFD_2014/中的年份更改后可进入相应年份的课程页面,可以看到往届课件和学生的report,都是非常有价值的参考资料,当然,此时不需要仔细看这些报告。第四课:顺一遍《OpenFOAM的程序开发初步》和《计算力学OpenFOAM讲座-基础篇(陈丽萍)》。看不懂的地方可以参照《OpenFOAM研究博文集》或苏军伟的博客。注意,到目前为止,你可能已经学习了如何运行OF的算例、添加湍流模型、自定义边界条件,但是仍然不要纠结于求解器的具体实现,不要纠结于求解器中的每一行代码的意思,比如这样:CFD软件工程——OpenFOAM。这完全没必要,即便你要实现自己的求解器也未必需要(但是,对于高级用户和未来的高级用户,看懂这些基本代码还是必要的)。第五课:经过之前的学习,你已经可以使用OF,并且做一些简单的修改了。现在你希望增进对CFD和OF的理解,可以看UNIGEIntroductoryOpenFOAMcourse-training。通读一遍即可,不感兴趣的地方自行跳过。(里面关于边界条件的组合,网格划分工具等均有较多讲授)第六课:选择你需要的标准求解器,或google符合你需求的非官方求解器,开始干活吧!求解器实现可以参考东岳流体和苏军伟的博客,遇到问题可以去OpenFOAM千人群(139297966)或CFDonline求助。当然,问题的答案也可能就在之前你看过的那些材料之中。很多人给出了理论方面的学习,我非常赞同,毕竟实践出真知,所以补充另外我做的工作我的方法是,自己画一个3*3的网格,从最简单的求解器开始做起(icoFoam),在代码中加Info,当然用gdb也可以,就看输出的数值,看量纲,看计算迭代的顺序……自己再用计算器算一下,能不能跟计算的对上。其实认真做个icoFoam的分析基本就可以了,这种方法虽然慢一些,但是绝对可以把握求解器的各个细节,让你对代码了如指掌。作者:海兮吾槊链接:来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。OpenFOAM安装俩种方法:1.直接从linux源获取;2.采用源代码进行编译;直接安装就是采用命令:sudoapt-getinstallopenfoam4这是傻瓜式安装方法,但是国内经常会连接不上网。编译安装可以这样理解:我们把OpenFOAM这种C++程序在本地编译称为可执行文件。和直接安装的区别就是直接安装已经编译好了,本地进行配置就可以,编译安装的方法我写了一个安装指南非常的详细:需要提及的就是目前CFD-online主流声音是:虚拟机下的OpenFOAM和真实系统的速度并无差异,并且32位比64位要快。不过我没有证实。最简单的安装:直接从我的网盘下载虚拟机,解压即可,OpenFOAM已经安装好了。这是我2017年6月份给学员做的虚拟机,2.7G。在国内下载应该比较快。打开直接用,密码是1。运行初期接触的时候,大部分人连Linux都没用过,我当时也没有用过linux,可能会有冲动去学学linux,但是时间宝贵,我不建议,因为用OpenFOAM毕竟是用来算CFD的,不是用来学Linux。就像你在安卓上安装微信是要炫你的朋友圈的,而不是用来测试安卓系统的。因此建议:•看自带的教程走一遍第二章的所有算例。大体知道怎么个计算流程。如何使用,适合前处理后处理。其他章可以不看,原因是其他章主要写的是CFD理论。初期我们并不需要过多的理解。•知道OpenFOAM怎么用了之后,你会发现OpenFOAM自带了很多的算例,接下来就是对你喜欢的算例自行模拟一遍。在这一步,我们可以对自带的算例进行适当调节,比如把初始条件改一下,库朗数增大一些。看看会有什么反应。这一个阶段也持续不了多久。大体还是培养CFD感觉。经过这个阶段你会发现一些经验,对以后的理论学习很有帮助。对了,CFD是存在感觉的!比如给你一张结果,搭眼就能看出来是LES还是RANS,是欧拉欧拉还是欧拉拉格朗日,是2D还是3D,网格是六面体还是四面体,是动网格还是MRF等。看的不一定准,但这些不同的算法算出来的结果都存在一定的规律。这种感觉需要长期的摸索才能有。•在对算例进行了一番修改模拟之后,你需要定制自己的算例,例如OpenFOAM用户指南第一个算例就是一个顶盖驱动流,那么这一个阶段我们需要自己生成一个几何、自己定义一个便捷条件来计算。这一步我们迎来了CFD的重头戏:网格生成。我之所以这么认为是因为大部分工程应用50%的时间用在了网格生成上,这时,你需要选择一款你喜欢的网格生成软件,ICEM,pointwise,hypermesh等系统的学习如何进行网格生成。准便再吹个流:全部是我自己做的高质量六面体网格,用的是ANSYSICEM。我是六面体爱好者。•假定你花费了大量时间生成了网格,我们就需要采用自己的网格计算了。这时你需要对你的求解器进行选择。ANSYSFluent中是一步一步来选,添加能量方程?添加多相?添加粒子?OpenFOAM由于编程问题,把不同的工况适用的问题,编写称为不同的求解器,比如:icoFoam可执行程序只适用于不可压缩牛顿流体层流瞬态求解;interFoam可执行程序只适用于不可压缩俩相不互溶界面跟踪;这意味着你用icoFoam求解湍流、可压缩流是不合适的,严重的就是无法运行,不严重的就是无法收敛。因此你需要再次翻开OpenFOAM用户指南,后面有一个列表说了每个求解器适用的工况。•在选好了自己的求解器之后,就是运行计算了。有了网格、有了求解器、计算开始。这时,可能会发现经常会发散。我们也就进入了下一步CFD算法分析从算法开始,我们需要大量的接触OpenFOAM源代码。这一步会经常遇到这种困惑:无从下手。我们顺利的生成了网格,选择了求解器,计算发散。WHY?比如我们使用的是rhoSimpleFoam求解器,有一段声明为:其中的Description里面表明,本求解器适用于可压缩的RANS流体,接下来看到了这么多#includefvCFD.H#includexxxx.H不知所措,需要把所有的头文件都看个遍么?不建议,否则你会迷失自己。大体知道即可,如下:当然我知道,好奇心比较强的人是打算每个头文件都了解了解的。你可以翻翻,不过繁多了,你一定会迷失自己,所以该忽略就忽略吧。即使忽略了这么多,我们依然对rhoSimpleFoam这个求解器不懂。完全不懂。这时该怎么办呢?比如这个玩意干嘛的:bound(epsilon);antiDiff(alpha);越到后期,OpenFOAM的可玩性才崭露头角。抛开你需要玩的求解器,回归CFD本源。想一下CFD到底是如何求解的?这时候你需要系统的、透彻的、详细的、充分的学习CFD基本理论,注意是计算流体力学而不是流体力学。比如上面的antiDiff(alpha)你绝对不会在流体力学教科书中找到答案
本文标题:OF学习过程
链接地址:https://www.777doc.com/doc-4671693 .html