|
|

楼主 |
发表于 2012-6-23 13:47:33
|
显示全部楼层
想要的自定义过程也就具有比较大的自由度,但是当时我还只接触过windows在一个操作系统平台,对于网络上的那些关于Open-Foam那些安装和编译的说明还是让我有点望而生畏。同时在大致翻阅了fluent的软件介绍以及相关的一些文献之后我发现在Fluent上进行模拟还是有可能的,并且通过UDF的方式还是能进行自定义模型的计算,所以最后选的还是Fluent。对于现在还困惑于选择什么样的软件和工具的同学,我个人的感觉是Fluent本身还是很强大的,其内设的模型也足够丰富,应该能够满足应用,不妨看看软件说明和其他文献看看有没有人用过,如果有,那在这个平台上实现应该没有太大的问题,而且再通过UDF做一些模型的修正,满足硕士的毕业要求应该不太难。
在确定了选择Fluent之后就需要开始学习如何使用了。由于在接触课题之前,自己对于CFD基本没有什么概念,所以实际上在学Fluent的同时连带着关于流体力学以及计算流体力学的只是也要补充。对于跟我情况类似的人,我建议还是从两本书入手,一本是《计算流体动力学分析》王福军老师编写的,另一本是《计算流体动力学》作者是P.J.罗奇(Patrick J.Roache),国内的钟锡昌和刘学宗老师翻译的。两本书中推荐前者主要是因为这是我看的涉及相关内容的第一本书,写的还是挺清楚的,但是算不上精彩。同样性质和类型的书还有几本,而且电子版的在几大论坛里应该都能找得到。这些说一半介绍概念,另一半是算例的具体操作指导,对于英语不是很好,或者对于一些专业词汇还不太有概念的朋友可以讲相近的基本书都翻阅一些,并跟着操作指导讲算例都演练一遍。两本书的后者则是我强烈推荐的,尤其是跟我一样没有学过流体力学和计算流体力学课程的同学,更是应该讲这本书通读和精读两遍。作者的讲解深入浅出,至少我是很受用。如果英语水平不错的话,也可以直接找这本书的英文原版来看,书本身不厚,读完也快,而且相应的概念和词汇也认识了,一举两得。
通过读上面提到的这两本书之后,我对于基本的概念也算是有个底了,这我才开始看Fluent的软件说明,我当时看的是Fluent的6.3版本的软件说明。我个人的感觉这本软件说明写的相当不错,问题说的很清楚,操作说明也很细致。但是说明本身还是挺长的,需要有一定的耐性,尤其是对看英文说明会头痛的同学,还务必有些坚持。如果说要提高效率的话,在阅读说明的时候可以先读完Getting Start Guide部分,然后大致先浏览一下User's Guide,之后重点过一遍Tutorial Guide。而且我建议Tutorial Guide部分不要因为跟自己的实际使用的模块不一样就跳过,因为实际上每一个Tutorial都会有前处理后处理,这一部分是通用的。就算是模型部分,你也难保课题在进行过程中会需要换模型,你现在做一天算例,心里有数了,以后想尝试改变模型时心里也有底。
我个人前前后后应该是将Tutorial Guide部分的算例做了近三遍,第一遍基本按操作说明一步一步来。第一遍做下来对于Fluent这个软件的大体逻辑就有个数了。注意这里有一个问题,那就是计算流体力学的逻辑和软件的操作逻辑还不能等同的。这里涉及到一个数学模型在软件层面的具体实现路径的问题。所以你即使学过计算流体力学的课程,细致地做一遍Tutorial Guide部分的算例我觉得也是有很大的必要的。完成Tutorial Guide的第一遍演练之后,我就回头开始看Use's Guide部分,并且边看边做第二遍算例演练。两个部分说明互相对照,开始明白每一步操作的实际目的是什么。渐渐知道自己在干什么了。这一个阶段会推进的比较慢,因为来回对照着做,太快了也不现实,所以需要静下心来做。第二遍完成之后,我在做第三的时候,则基本可以脱离操作说明,来完成设计了和计算了。而且Uses's Guide于自己课题相关的内容也基本仔细读过了。这样大体就可以进入下一个阶段了。
第三个阶段就是要真正利用Fluent计算自己的算例了。这里涉及到每个人模拟的具体物理过程,基本上大家在了解了Fluent有哪一些具体模块之后,也就清楚自己需要使用哪一个。第一步可以尽量尝试简单的几何模型以及初始条件和便捷条件。首要的目标是能够开始计算,模型跑通了才行。能够计算了才有接下来继续讨论的基础。简单模型调试成功之后接下来才算是正式能够开始课题工作了。每个人课题不同,所以在这个阶段计算的东西可能不太一样。我自己的理解是如果课题主要的工作是模拟计算的话,那么有两大东西是课题讨论的,一是在Fluent的基础之上讨论算法和计算参数的设置对于计算结果的影响,二是在稳定算例的基础之上讨论物理模型的数值模型建立方式控制方程的形式,计算模型的选择等因素对计算结果的影响。前者实际上往往是出不了什么成绩的,至少没有太多创新性的成绩。因为你始终在调整的是Fluent的用户控制界面上给出的选项,Fluent程序底层的东西你看不到。但是不同参数下的计算结果比较作为学位论文的一部分应该没什么问题,尤其当精度和迭代求解算法等参数对计算结果又非常明显的影响的时候,也还是可以作为自己的一个发现的。而且我认为这部分工作其实是必须要做的,一方面多数情况下这些参数的选择本身可能对计算结果和收敛速度方面有直接且显著的影响,自己在调试算例的时候这些工作肯定是要做的额。另一方面完整的数值模拟过程就是要做到一个非参数化,也就是你的计算结果应该是稳定,不因网格尺寸等因素的变化而明显变化。
这里还涉及到一个大的问题,就是前后处理。对于Fluent实际上已经整合了很不错的后处理功能,但是前处理部分网格生成时必须要通过其他软件的。Gambit可能是大家用的最多的于Fluent配套的前处理软件。虽然不少人现在批评这个软件过时,但我还是要推荐一下。实际上我需要求解的问题没有太复杂的几何模型,对于网格划分的要求和质量也没有那么高,对我来说Gambit已经够用了,尤其是后来在再看了看Gambit的一些具体网格加密的算法设置之后更是如此。所以如果有同学需要求解的问题跟我有点类似,主要是一些平面的算例或者简单的三维结构没有复杂曲面的算例的话,我想Gambit够用了,而且Gambit确实简单,不需要话太多的时间这一点至关重要。对于那些涉及到复杂几何模型的同学或者以后也肯定要从事相关工作的朋友,那就请老老实实学习ICEM吧,Gambit却是有些老旧跟不上时代了。
既然说道前处理得了,那就再唠叨几句后处理的事情。Fluent的后处理老实讲我觉得已经很不错了。至少在呈现计算结果方面我已经很够用了。但是比较头痛的是他的结果要怎么能够插入到自己的论文中去,这是一个比较麻烦的问题。结果当然可以直接复制,Fluent也提供了这样的功能。但是输出的图形是带Fluent的版本以及一些算例信息的,如果还得一张一张去裁剪的话就麻烦了,而且也不漂亮。所以我自己是通过Tecplot在做后处理,基本都是输出为Tif的图插入到论文里面。当然这样的话就涉及到学习如果使用Tecplot的问题。我自己学习的经验是这方面的学习资料太少了,尤其是中文资料更是如此,我自己是老老实实地读的软件说明,最后也只是到了一个够用的水平,有时间的话到也可以再整理整理想的内容。关于Tecplot要提一句的就是宏录制的功能。大部分人在课题进行到一个阶段之后,手头都会有大量的算例结果。这时候利用宏录制的功能,能够非常便捷的输出一样格式的计算结果对于提高工作效率帮助非常之大。
关于Fluent的算法和计算参数对计算结果的讨论暂且先说这么一些,下面谈一点关于物理模型到数据模型到控制方程这样思路的关于计算模型修正的讨论。这对于大多数的研究来说应该是最核心的东西,也是最难的东西,这一方面对于理论功底有要求,另一方面对于软件的使用的熟悉度也有要求。而且很多的时候计算结果不对,可能有模型构建的问题,也有软件实现的时候设置的问题,需要非常小心细致的工作才行。要走这一方面的工作学习UDF部分应该是必不可少的。如何学习编写UDF,也没有其他方法仔细看UDF Manual,然后自己尝试。这时候在自己最简单的算例上进行尝试,做到单变量变化来推进整个研究过程。不要急于求成,这个阶段是最容易出现挫败感的阶段,因为你的输入在些微细节上的疏忽就可能导致无法计算、计算不收敛、或者计算结果失真的问题。我自己在这方面是吃了很多苦头的,最开始目标设得太远直接按最复杂的模型编写UDF,编了十几个UDF插入,但是计算就是不对,然后再一个一个回头去找问题,这是特别头痛的一件事,最后都没有走通。最后是换了一种思路,从最简单的单相模型开始做,一直做到三相的模型,这样每一个阶段都能有一点结果的积累,毕业论文的压力也不会太大。关于自己模型的具体描述,对于跟我不是做一样方向的同学也没有什么价值,我就不具体详述了。关键还是细心看完UDF Manual然后自己尝试着从最简单的开始编写。另外网络上能找到一些比较复杂的UDF模板,对于同样需要编写复杂UDF的同学,不妨找来读一读,在它的基础之上做修改,这样编写起来要简单很多。
结束之前有几点需要说明一下,首先是软件版本的问题,我自己用的最多的是fluent 6.3,大部分算例是在这个版本的平台上完成的,应该也是一个比较稳定的版本了。后续的被整合到Ansys公司整个workbench大平台下面的Fluent 12和Fluent 13我后来也用哦。使用这些新版本主要还是处于了解和测试的目标。了解一下模型做了哪一些修正,哪一些模块后续开放了可以自己编写自定义函数。应该说新的版本还是不断在改进的。模型也却是做了一些修正,但是颇让我诟病的是整个软件的运行效率下降了,尤其是显示这一部分,老半天响应不过来,按理说我计算用的工作站性能不至于如此,可能还是用户界面重新编写之后的问题吧,不知道Fluent 14有没有改进。对于目前还没确定才用哪一个版本的同学,我个人的建议是方便是第一位的,按照你自己的使用习惯来,用惯了也没什么大差别,而且有一个版本用熟悉了,再换版本也不难,除非现有的版本确实不能满足自己的需求了,否则没必要追求才用最新的版本。
第二点需要说明的是关于计算效率的问题,我自己算的是一个大网格数的非稳态问题,计算耗时对我来说是一个关键的问题,但是没有小型机或者刀片机这样的计算服务器。导师给配了两台多核心数(16核和24核)的桌面工作站,基本算是满足计算要求吧。但是对于很多在台式机进行计算的同学,可能会考虑采用多机并行的方式来提高计算效率。我当时也做个这方面的尝试,觉得这东西特新鲜有趣所以颇激动地调试了一段时间。从软件本身的支持来说完全能够满足并行的要求,我最多的时候把办公室的5台台式机都并行起来做一个算例的计算。但是我个人最后尝试的结果是这种区域网的多机并行效率并不高,主要有两个方面的限制,因为办公室的机子性能本身是不统一的,这就会有短板效应。另一方面的限制就是网络通信速度,这方面是关键,因为多机并行就会涉及大量的通讯耗时,100M网卡乃至千兆网卡还是不够用,真正做并行计算的人才用的通信方式已经不是这种模式了。与其费尽设置,还真不如做做导师的工作,买台多CPU多核心的桌面工作站还快一些。
最后我自己总结一下,对于初学入门的同学有两点最关键,一是耐心,二是细心。只要有这两点达到良好的水准应该不难。而学习的过程中最好的老师就是软件自带的说明书,其次是网络。还有一点提醒一下就是,别盲目下载很多很多的资料,网络发达了,资料流通的多了,但是很多的时候只是为了下载而下载,这样反倒浪费时间。我自己现在回头看就是这样的情况,手头的资料很多,但是真正看完的不多。暂且就写怎么多吧,希望对有耐心读完的朋友有点帮助。最后留一个邮箱地址吧,但是现在工作也比较忙,不保证一一回复,有我知道的或者能够给予一点意见的,我会及时回复。地址是:1987maxwell@sina.com。
猪在飞
2012年6月23日 |
|