Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

李

李东岳

@李东岳
管理员
关于
帖子
8.8k
主题
504
群组
2
粉丝
319
关注
0

帖子

最新

  • OpenFOAM教程 初级入门建议
    李 李东岳
    2016年10月30日 06:25

    玩OpenFOAM有一阵子了,并且一直坚持搞CFD算法以及在OpenFOAM中的植入,但CFD博大精深,牛人也大有人在,和这些老师比起来我也是一个高级菜鸟,依然任重道远,也一直在通过各种途径学习。但我这个人喜欢写,不管英文的还是中文的,并且比较能折腾,那么我就仅有的点点经验,希望能和大家在CFD中国共同讨论OpenFOAM的一些学习心得,希望切磋交流,共同进步。

    上述内容我决定删去,当时还是感觉自己能力有限。但是说实话现在能力,自己都能感觉出来比之前高了很多。上面内容写的太谦卑。新版直接不写了。

    学OpenFOAM第一个坎:安装

    初学者不需要去研究OpenFOAM怎么安装了。因为你可能在安装上需要耗费比较长的时间。在这里我建议直接下载我装好的虚拟机来进行。链接:

    http://dyfluid.com/download.html

    也不推荐真系统,因为你是初学,不能扔了windows。初学OpenFOAM直接上虚拟机,你不需要考虑任何事情。

    学OpenFOAM第二个坎:如何运行

    OpenFOAM与其他软件最大的区别就是:命令行运行,Windows下,我们各种软件都有个图标,可以点点点,但是OpenFOAM没有!并且,大部分人连Linux都没用过,我当时也没有用过linux,可能会有冲动去学学linux,但是时间宝贵,我不建议,建议:

    • 看自带的教程走一遍第二章的所有算例。大体知道怎么个计算流程。如何使用,适合前处理后处理。

    • 知道OpenFOAM怎么用了之后,你会发现OpenFOAM自带了很多的算例,接下来就是对你喜欢的算例自行模拟一遍。在这一步,我们可以对自带的算例进行适当调节,比如把初始条件改一下,库朗数增大一些。看看会有什么反应。这一个阶段也持续不了多久。大体还是培养CFD感觉。经过这个阶段你会发现一些经验,对以后的理论学习很有帮助。

      对了,CFD是存在感觉的!比如给你一张结果,搭眼就能看出来是LES还是RANS,是欧拉欧拉还是欧拉拉格朗日,是2D还是3D,网格是六面体还是四面体,是动网格还是MRF等。看的不一定准,但这些不同的算法算出来的结果都存在一定的规律。这种感觉需要长期的摸索才能有。这就是CFD经验。

    • 在对算例进行了一番修改模拟之后,你需要定制自己的算例,例如OpenFOAM用户指南第一个算例就是一个顶盖驱动流,那么这一个阶段我们需要自己生成一个几何、自己定义一个便捷条件来计算。这一步我们迎来了CFD的重头戏:网格生成 。大部分工程应用50%的时间用在了网格生成上,这时,你需要选择一款你喜欢的网格生成软件。

    • 假定你花费了大量时间生成了网格,我们就需要采用自己的网格计算了。这时你需要对你的求解器进行选择。商业软件中中是一步一步来选,添加能量方程?添加多相?添加粒子?OpenFOAM由于编程问题,把不同的工况适用的问题,编写称为不同的求解器,比如:

      icoFoam只适用于不可压缩牛顿流体瞬态求解;
      interFoam只适用于不可压缩俩相不互溶界面跟踪;

      这意味着你用icoFoam求解可压缩流是不合适的,因此你需要再次翻开OpenFOAM用户指南,后面有一个列表说了每个求解器适用的工况。

    • 在选好了自己的求解器之后,就是运行计算了。有了网格、有了求解器、计算开始。这时,可能会发现经常会发散。我们也就进入了下一步

    学OpenFOAM第三个坎:CFD算法

    OpenFOAM这一条路跟商软不一样。OpenFOAM在这一阶段,需要大量的补充算法内容,否则你是玩不明白的。这也就是为什么OpenFOAM相比商软学起来太费劲的原因。主要是CFD算法学起来太费劲。

    这一步需要大量的接触OpenFOAM源代码。这一步最常见的问题就是:无从下手!。我们顺利的生成了网格,选择了求解器,计算发散。WHY?比如我们使用的是rhoSimpleFoam求解器,有一段声明为:
    0_1477808597182_58ccda792c3ad3277a37f8334ecd3d7b_b.jpg

    其中的Description里面表明,本求解器适用于可压缩的RANS流体,接下来看到了这么多

    #include "fvCFD.H"
    #include "xxxx.H"
    

    不知所措,需要把所有的头文件都看个遍么?

    不建议,否则你会迷失自己。大体知道即可,如下:

    0_1477808788962_a6046a70dcf6116ef918dcbb28453067_b.jpg

    当然我知道,好奇心比较强的人是打算每个头文件都了解了解的。你可以翻翻,不过繁多了,你一定会迷失自己,所以该忽略就忽略吧。即使忽略了这么多,我们依然对rhoSimpleFoam这个求解器不懂。完全不懂。这时该怎么办呢?比如这个玩意干嘛的:

    bound(epsilon);
    antiDiff(alpha);
    

    越到后期,OpenFOAM的可玩性才崭露头角。抛开你需要玩的求解器,回归CFD本源。想一下

    CFD到底是如何求解的?

    这时候你需要系统的、透彻的、详细的、充分的学习CFD基本理论,注意是计算流体力学而不是流体力学。比如上面的antiDiff(alpha)你绝对不会在流体力学教科书中找到答案。在这之后,我们回归OpenFOAM,从最简单的求解器开始学习,NS方程是如何求解的。那么这几个最简单的求解器无非:

    laplacianFoam
    potentialFoam
    scalarTransportFoam
    icoFoam

    这4个求解器,具体怎么学习,在我的网站上都有解释。其中前三个还好说,最后一个icoFoam是真正考验CFD理论素质的时候,这是一个真实的瞬态NS方程求解器,也是一个可以quasi-DNS模拟的求解器。如何学习icoFoam的代码,在此不赘述。这绝对是一个门槛。

    假定通过大量的大量的时间搞清楚了

    搞清楚了速度、压力如何离散,
    源项如何处理,
    为什么要显性和隐性
    为什么时间步要附加自循环
    为什么拉格朗日粒子跟踪要做tet分解
    如何泊松方程离散后的矩阵是对称的

    以及,重中之重的PISO和SIMPLE算法的本质,你就可以回归到rhoSimpleFoam,当然这是一个非常漫长的时期,这也是CFD功底积累的时期,为什么?因为你不懂CFD算法你是看不懂OpenFOAM代码的,如果你不看OpenFOAM代码,那OpenFOAM哪一点吸引了你?

    直到有一天你豁然开朗会发现CFD求解器的思路都是一样的。

    这时候你已经了解了rhoSimpleFoam的代码,但是发现,rhoSimpleFoam不能进行粒子跟踪怎么办?我们进入了到了下一步。

    OpenFOAM中高级内容:代码开发

    这也是OpenFOAMer的终极阶段,不仅仅是玩OpenFOAM,对于其他CFD大厂的全职员工,也是他们所处的阶段。糅合数学方程推导以及方程离散、C++或其他编程语言于一体的过程。这一部分变幻无穷,诸多博士为之奋斗终生。

    进入了这个阶段,完全可以抛开所有的OpenFOAM资料,自行学习。或许也不能用学习二字了,自行研究比较合适。这时候你看的应该不是CFD教材,而是期刊。

    以下是比较常见的流程:

    1. 这一阶段我们需要从SCI文章中推导大量的数学模型,下载大量的SCI,看看数学模型是怎样推导的,怎样计算的;依据数学模型的复杂程度,可能几天,可能几星期,可能几个月;

    2. 在知道怎么计算模型之后,下一步需要编程。OpenFOAM运行了高超的C++编程技术来实现求解,如类,类继承,类嵌套,类模板,宏定义,各种泛型套泛型。这个时候如果没有中级的C++技能的话写面向对象的代码非常耗费时间。如果这样的话,初期可以用简单的C风格来植入。等C++用熟了,可重新封装一遍。

      如果你不能理解过程编程和对象编程的区别的话,基本上你只能面向过程了...不过这个确实不是特别重要,除非你玩的是架构。我见过很多nasty的代码同样能发高档次的paper。包括我自己的代码也不漂亮。代码可以慢慢优化。毕竟存在架构师这个职位。

      如果你不能理解架构师重要性的话,一方面说明你写的代码还不够多,在CFD中,这表示你还未对算法左右逢源有个宏观的概念。

    3. 最后,实际上也没有最后,我目前也停留在上面这一段话的最后一段中,“研究模型并编程植入,数据对比然后写文章”。即使完成了,你会进入下一个“研究模型并编程植入,数据对比然后写文章”的阶段。

    前面的已经非常主观了,最后补充几句更加主观的思想:

    1. OpenFOAM是CFD求解程序,CFDer应该注重CFD本身而不是编程,这点要在学习中分清主次;

      比如我在国外,有人喜欢把自己当成programmer,也就是国内的码农,但是我更喜欢称呼我自己是Mathematician。Programmer偏向写代码,算法可以是别人提供的技术文档,也可以是别的软件现成的代码。Programmer的强项在于天花乱坠的代码水平近乎无低端bug的编程风格,可能30%用于算法,70%用于编程。但是我,往往70%的时间耗费在研究CFD的算法上,30%的时间用来编程就可以完成植入。

    2. OpenFOAM和商软我没有对比过,不过我非常感兴趣,如果你真的要玩好OpenFOAM,而不是设置个工况模拟一下,没有一定的CFD功力是完全行不通的。正所谓:

      商软普及CFD,OpenFOAM定义CFD

    3. 当然有人不太懂CFD理论就直接进入到了OpenFOAM代码开发阶段,并且发了文章。恭喜你,我不清楚你是如何在半年内就做到的,就像我不明白为什么本科时候很多人考试看一天书就能拿90分一样。作为一个本科GPA不到2.5的人,我做不到这么酷炫的玩法。我不是高智商,只是极为persist,但凡遇到不懂的算法,必须扣到底。哈哈。也许我手比较笨,但我愿不停探寻。

    4. 学习CFD理论要趁早。因为越往后,你会发现你需要计算越来越多的模型,调节各种各样的参数。后期在写文章的时候,可能会发现理论跟上不来。比如在审稿人提出有关算法方面的问题时(比如问你湍流动能耗散率方程离散的时候为什么有的项需要显性离散?),你可能并不知道显性离散和隐性离散是个什么鬼,这句话你只是抄别的文章的。这个时候你再补CFD理论就来不及了。当然最好的办法是,不懂得东西,别写!,不过,如果你CFD懂得太少,文章内容分配会不会有点不妥?


    还得感谢2011年T博士跟我的谈话,当时我活跃在某著名OpenFOAM群(群聊天比较浪费时间现在我早已退出),问题非常多,在某一天我又提了很多OpenFOAM问题之后,T博士问我:

    你都会点啥?

    T博士对我的问题我无法回答,因为我当时什么都不会。也正因为我之前是个CFD问题少年,我创立CFD中文网,欢迎大家来此提问。我不会问你都会点啥,或许我会给你一点SCI参考文献供参考 :chigua:

    点击跳转OpenFOAM编程建议


  • 讨论 Fluent计算效率优于OpenFOAM
    李 李东岳
    2019年5月23日 02:44

    很难公平对比

    Fluent和OpenFOAM计算效率问题,我个人感觉不能一概而论。举一个非常简单的粒子就是:很多SCI说A模型比B模型好的太多,但还是有很多SCI说A模型远远不如A模型。这种SCI都经常出现不同的观点,因此公说公有理这太常见了

    我个人,用OpenFOAM算了很多奇葩算例,可玩的太多了。OpenFOAM这面需要你去调试算法、网格,并且会大大影响你的计算效率。很多的过程会影响你的计算过程。比如:

    1. 有时候多重网格求解器1秒就收敛,PCG要迭代1000次可能算10s

    2. 有时候时间步长会特别小导致计算的特别慢,这是要从算法上去解决的,比如链接文本中的公式41和42,两种算法直接导致计算时间的不同

    3. 一些奇葩算例动量预测步骤开启会影响你的计算效率,不如关了。一些算例GAMG糙化可以放得大一点,一些算例没必要进行网格修正,甚至你的写文件是binary还是ascii都会影响你的效率。我还可以告诉你一些高IO的算例,硬盘读写能成为卡你脖子。

    这些我不知道Fluent里面能不能处理,如果不能处理,就很难做一个公正的对比。因此对于计算效率对比这种事情。Fluent与OpenFOAM应该是完全不同的东西。并且,Fluent那面好像库郎数运行在100也可以?虽然我现在也不知道Fluent那面怎么实现的。

    无脑AMG

    我之前问过几个研究生,他那面用Fluent跑皇冠牛奶的算例一直在发散,我问你的库郎数多少?你的压力求解器用的什么?这个研究生告诉我我也不知道呀,我全都用的默认设置

    :wocao:

    就像 @史浩 说的:

    FLUENT基本无脑AMG算法

    Fluent可能默认全部是AMG求解器?不能换一些别的么?我不太清楚为什么?在网格数量少的时候没必要上奔驰AMG啊。奔驰E系列也行啊:duang: 在这里拓展一下。这个AMG求解器在一些文章里面,并不会表现的特别明显,比如某SCI:

    捕获.JPG

    当然,这只是一种断论,可以选择相信也可以选择不信。就像我之前说的,SCI里面互相抵触的结论太多了。你完全可能在某些SCI里面支持无脑AMG算法


    使用感受不同

    %(#ff0000)[另外跑个题],这是另一个研究生给我发的邮件,当时觉得挺有意思,感觉是要入行CFD了

    捕获.PNG

    再比如这个帖子 http://www.cfd-china.com/topic/2371/

    关于学习fluent,有一些困惑,我自己是从图书馆借了两本fluent入门到精通的书跟着步骤练习,书里只讲每一步设置什么参数,但是我不明白为什么那样设置?我基本上是三周左右把两本书跟着联系完,感觉收获不大。想请教各位应该怎样正确的学习fluent呢?软件操作怎样与相关理论结合呢?

    我玩这么多年OpenFOAM大家应该都知道,在这里说一下我的Fluent经历。我在2012年左右,学OpenFOAM学的要放弃了,学习曲线太陡峭,不出成果,打算换Fluent,于是就装了一下,我记得当时用VOF算了气泡,应该是我没怎么学就算出来了。这里没怎么学,是指我只是下了Fluent,我大体就是参考那个研究生一样,全部采用默认设置没参考任何书。所以我认可市面上大家说的“塞一坨屎进去Fluent,都能给你算出来”。

    但我后期还是硬着头皮学了OpenFOAM,学习的过程中了解不少CFD算法的东西,对后来上手任何的CFD项目帮助很大。虽然Fluent能把塞进去的屎算成面包,但我想知道他怎么算出来的,Fluent并不能告诉我如何变得魔术。我有很多的算法问题在考虑怎么处理,我当然考虑过参考Fluent怎么实现的,但代码是闭源的永远不知道结果。

    But,我还是承认:如果对CFD算法一点都不care,算项目Fluent应该够你的需求。我这面做科研比较多,入坑OpenFOAM。重要的呢,我现在用OpenFOAM完全也可以算Fluent能算的东西

    另外现在干什么都是水涨船高,10年前博士就能留校,现在不是博士后不可能。发文章也一样,以后CFD发文章会越来越难,在这种压力下,植入自己的算法会压力小一些

    国内Fluent盛行的原因跟版权意识有很大关系。这个早晚会改变 不过,没准人家A厂是故意放任小客户用盗版占领市场呢?毕竟还要跟S厂D厂竞争啊,不过也听说过某同行说自己公司有法务部天天打电话。
    具体怎么样,我不确定啊我是瞎说的。现在我说点啥都可能被人要求道歉..

    :xinlei:


  • 磁流体力学入门的一些问题
    李 李东岳
    2019年3月22日 14:51

    @taibudong1991

    总是被忽略的区别:xinlei:

    首先要注意的是如果要做CFD,要分开流体力学和计算流体力学。二者虽然不像化学和化工区别那么大,但是真正做CFD的或者做流体力学的,对这俩感觉很大 :shit: 比如人家要是问我做什么的,我肯定说我是做计算流体力学的。跟进一步,我说我写代码解方程的。你问做流体力学的肯定他不会回答你他每天写代码解方程。

    CFD和流体力学之二者之间存在不可割舍的联系,但差异也非常明显。流体力学着重研究如何构建偏微分方程,CFD着重研究如何解偏微分方程。因此,可以理解为首先通过流体力学研究构建对应的数学模型,然后通过CFD对模型进行求解的过程。流体力学侧重建模,CFD侧重求解。没有流体力学构建的模型CFD无用武之地,流体力学构建模型之后没有CFD则不可能获得解。举例,多相流体力学的研究者可能对两个气泡之间如何破碎感兴趣,因此这些研究学者的工作可能是通过实验监控气泡周围的流场数据(如湍流动能),构建一个破碎频率关于湍流动能的关系式。多相计算流体力学的研究者在拿到这个关系式之后,需要用数值方法去对其进行求解。另一方面,流体力学研究者离不开实验,CFD研究者可以无实验进行研究。流体力学的顶级期刊是Journal of Fluid Mechanics等,CFD的顶级期刊是Journal of Computational Physics等。当然学术界对于二者并没有明显的区别划分 :duang: 再次重申:

    • 流体力学偏向如何推导N-S方程,你看看N-S方程的推导在1800年代就开始了;
    • 计算流体力学偏向如何求解N-S方程,你看看N-S方程的求解比如SIMPLE、PISO算法从1970年代才开始,这进一步证明了,流体力学远远早于计算流体力学

    咱们计算流体力学相对于传统学科还是很新奇的 :xinxin: :xinxin:

    最近几篇文章转的特别火,就是网上不知道从哪里抄来的《CFD大牛的故事》,但里面有很多大牛完全不是做CFD的。一再感叹,很多人流体力学和计算流体力学的区别都忽略了。

    CFD学习用不用补流体力学

    个人感觉可以看看流体力学的书籍,不需要恶补。同理,学习CFD需要看看高等数学的书籍,也不需要恶补。以高数举例,高数里面很多东西普适性CFD里面是用不到的(当然可能SCI会用到,不在此处讨论范畴),比如什么无穷级数、解析几何等。流体力学里面很多普适性CFD也用不到,比如说涡判别、流函数等。当然很多人可能做的就是边界层理论,但可能更倾向构建模型(参考上文)而不是求解。所以回到你的问题:

    我自己买了北大出版的日本教材-《流体力学》、《普朗特流体力学基础(第11版)》、安德森的《计算流体力学基础及其应用》。

    北大《流体力学》和《普朗特流体力学》我都看过,从我个人作为一个严格的计算流体力学研究者的观点来看,这两本书对你的计算方面提升很小。比如说,CFD的几个关键问题,或者说CFD书籍必须有的问题:

    1. N-S方程如何求解?
    2. 网格离散?
    3. 高阶格式问题?

    这俩本书完全没说。但可以帮助你理解一下怎么推导N-S方程。所以流体力学书看看即可

    CFD应用和理论

    安德森的《计算流体力学基础及其应用》这本我也看过。不过对你有帮助的估计只是前两章。如果你到了这一步,基本上稍微筛选一下就可以了。在筛选CFD书的时候,还是要注意一个区别:CFD书分应用类和理论类。CFD应用类书籍国内就太多了,多如牛毛,用陶院士的一句话说,就是“汗牛充栋”。如果看应用类书籍,基本上你就回到了一楼的状态:

    关于学习fluent,有一些困惑,我自己是从图书馆借了两本fluent入门到精通的书跟着步骤练习,书里只讲每一步设置什么参数,但是我不明白为什么那样设置?我基本上是三周左右把两本书跟着联系完,感觉收获不大。想请教各位应该怎样正确的学习fluent呢?软件操作怎样与相关理论结合呢?

    因此你需要看CFD理论类书籍。在这面我就不多说了。毕竟很多做CFD很多年的人,从来没看过CFD理论的书。各走各的路。不过如果你觉得我玩的比较有意思,那就走我的路,多看看CFD理论的书。如果你觉得我玩的没什么用,可以看看应用的CFD书直接算:ok2:

    CFD理论书籍细分

    由于求解CFD的套路太多了,有限体积、有限差分、谱方法。在这里要选对你要的方法的书。如果你做的是有限体积,那你看有限差分的就看错了。比如安德森那本,就是有限差分的。进一步,如果用的有限体积。在这里《数值传热学》那是最适合你的书。怎么看?要硬着头皮看,一个字一个字看,当作高考复习来看。如果能看个几遍,基本上你就大体有了一点CFD的感觉了。

    说实话《数值传热学》应该是初级的CFD教材。更高级的,那就是推荐这本Computational Methods for Fluid Dynamics,不过呢,这本书,估计你看数值传热学能看到炉火纯青,看这本书刚上手也是看不懂的。不过个人建议还是当高考来看,一个字一个字看。没办法,CFD理论就是难。

    如果这俩本都刷过了,你的普适性CFD感觉基本能到20%了。20%都是往多了说。 确实如此,vanLeer研究几十年的高阶格式,Tryggvason玩了几十年的Front-tracking、你看两本书你的CFD层次感觉就上去了,可能么? 为什么,因为看普适性CFD教材,你充其量最高达到的是普适性CFD的高度。要想达到更高的高度,

    • 要么拓展你的CFD研究领域。这样才能获得一种感觉:“原来这句话这样理解”,就这种回过头才能理解的感觉。给你举例:普适性CFD教材里面说了很多遍了:N-S方程要符合连续性假定,那么为什么要符合连续性假定?教材还说了:N-S方程具有不同的数学特征(双曲啊椭圆之类),那么这有什么用?这在普适性CFD教材里面你是找不到的。

    • 要么把普适性CFD算法编一编。亲自写代码跟你看教材是俩回事。看10遍C++,不如写10行代码。这道理大家都明白,不多说。要做实战派。

    总结

    个人感觉,几点:

    • 书不能选错,选错书白白浪费时间;

    • 书找对了之后要细细研读,走马观花没用;

    • 不亲自手算方程、不亲自写程序,够呛能到一定的高度;

    新手菜鸟没别的套路,就是看书,这个过程,基本要持续几年。是的CFD就得多看书,至少如果你做CFD理论的,就得多看书。我做CFD8年多了,每天都是除了看书看SCI就是写代码,没别的。 做20年也一样。一个新算法出来了,不就得看SCI学么?没办法,CFD就这样,不难的话,大家都会了。最后推荐一本我自己写的《无痛苦N-S方程笔记》。转为菜鸟准备。如果你愿意参加我的General CFD算法课也行,但要花几千块。

    捕获2.PNG

    感觉也挺有意思的,毕业之前学习是为了工作,现在我的工作就是学习。关键我愿意学 :shangxue: :shangxue:


  • 欧拉及拉格朗日下的动量方程压力项竟然不一样
    李 李东岳
    2018年4月10日 09:51

    0_1523353770787_捕获.PNG

    上面应该是某文章里面有个笔误的Eulerian-Lagraigian方程,应该没有相分数。
    有误,见下文。

    植入代码的时候要小心,如果方程有笔误的话,怎么可能收敛呢?不过我自己的文章也有很多笔误,没办法,方程太多..:mihu:


  • 欧拉及拉格朗日下的动量方程压力项竟然不一样
    李 李东岳
    2018年4月10日 09:39

    算例一直发散,整不明白。今天看了半天代码,跟方程对不上,发现差了一个相分数。很奇怪。于是翻了几个文献,发现

    %(#ff0000)[Eulerian-Eulerian和Eulerian-Lagrangian下的动量方程压力项竟然不一样]

    Eulerian-Lagrangian压力项不需要乘以相分数

    主要看压力项,取自三篇不同的SCI,没有相分数!才发现

    0_1523353030993_捕获2.PNG

    0_1523353056311_捕获3.PNG

    0_1523353079680_捕获.PNG

    Eulerian-Eulerian压力项需要乘以相分数

    0_1523353111701_捕获4.PNG

    .

    :xinlei:


  • motorbike中SA模型相关设置?
    李 李东岳
    2019年12月13日 00:47

    排版太厉害了

    最让我不解的是motorbike里将nut设为0,而将nuTilda设为0.05

    我的motorbike里面都没有nuTilda,是这样,nut为从k, ε计算过来,因此你设置成多少,都没问题。求解器没有nut的传输方程,求解器求解k,然后epsilon,有二者之后一除,就是nut

    nuTilda有传输方程,但传输方程最终形式跟你的瞬态稳态有关。稳态的话内部场不影响最后的结果。这个结论跟你之前验证的冲突

    并且我试着改变这两者的值进行计算发现计算结果也差别很大,

    我看看怎么回事再回复你


  • interFoam里面的VOF,液膜,CSF模型源于哪些资料?
    李 李东岳
    2016年5月30日 10:36

    压缩因子也不是VOF标准模型的内容,也是openfoam基金会自己的算法。在interfoam解析里面没有包含。可以看下面这个初稿,并未整理:


    但是interFoam中植入的方程对相方程进行了很大的改动,上述VOF模型中的主要问题即为在求解中务必要保证相分数守恒和有界,相分数的精确计算对表面曲率有很大影响,曲率又影响表面张力和自由表面的压力降。现有的对流离散格式可以应用在上述VOF模型中除了相连续性方程中的对流项中的所有项中,因为我们要保证相分数的有界和相界面的尖锐,在过去许多研究者提出了不同的技术为了克服这个问题,主要分为:线性技术,施主受主技术,以及高阶差分格式。其中大多数采取一种“压缩差分格式”,以确保在存在有界对流格式引入的数值扩散的同时,仍然保持界面的尖锐。

    由于在界面问题存在数值扩散,一种好的办法就是让相连续性方程包含一个负的扩散项。然而这种方法虽然保持了守恒性但是却会是无界的。另一种方法是:添加一个对流项以压缩界面 :
    (1)∂α∂t+∇⋅(αu)+∇⋅(α(1−α)ur)=0
    分析此方程,我们可以发现第二个对流项在非界面出为0。上述相场方程可用于求解计算。但是目前在interFoam并没有植入上述方程,笔者曾经在twoPhaseEulerFoam中植入上述方程进行求解。经测试mixerVesselAMI算例,和使用MULES求解的结果一致。
    目前interFoam中植入的为Henry的另一种方法 ,同样构建附带对流项的相方程:
    (2)∂α∂t+∇⋅(αu)+∇⋅(α(1−α)uc)=0
    假定速度为:
    (3)uc=cα|u|∇α|∇α|
    我们同样发现,在相界面较远处,此项为0。另外需要注意的是,如果由于某些原因导致界面分散或者速度过小,这将不会产生压缩效应。我们也可以假定速度为:
    (4)uc=cαmax(|u|)∇α|∇α|
    至此,有最终植入的相方程:
    (5)∂α∂t+∇⋅(α(1−α)(min(cα|u|,max(|u|))∇α|∇α|))=0
    参考文献:A New Approach to VOF-based Interface Capturing Methods for Incompressible and Compressible Flow, Weller H.G.


  • 多相体系的计算模拟
    李 李东岳
    2018年11月2日 02:36

    已完成的工作(博士)

    各位OpenFOAM战友们,

    在这里很高兴跟大家分享一篇我们的工作:Droplet breakage and coalescence in liquid–liquid dispersions: Comparison of different kernels with EQMOM and QMOM。在这篇文章中,我们将QMOM和EQMOM植入到OpenFOAM的双流体模型中,并用于预测搅拌反应器内的液液混合粒径分布。并将相关数据和实验进行验证结果吻合较好。希望这个工作对相关的研究起到一定的启发作用。

    这个工作是我在意大利期间,在其他导师大力指导下完成的,多亏各位导师开启了我的CFD篇章!心里已经谢了一万遍!:huahua:

    https://www.jianguoyun.com/p/DRta4iIQ9s3ZBhiH4H8

    基本完成的工作(博后)

    博士期间的工作进行的时候,我们发现了一些缺陷。于是,我们计划在OpenFOAM中植入了一种新的算法,在这个算法中,离散相通过普适性群体平衡模型计算,也就意味着传统欧拉欧拉模型中的离散相N-S方程可以被彻底的抛弃。我们已经将相关的模拟数据和实验结果相对比进行验证。相关的代码已开源。

    这个工作主要是我在德国博后期间做的。但是回国的时候还没做完,回国后在业余时间继续干了半年多。博士后不同于博士,相关工作大部分独立完成,合作导师掌握了一些方向 :mihu: 也建议大家博后期间一定要培养起独立科研的能力,不能处处需要人指导。万一你青年千人回来独立成立课题组呢:shangxue:

    下面是一篇在审文章的结论:

    Conclusions: Multiphase flows can be simulated using the E-E method, the E-L method and the Eulerian-QBMM. In this work, the one-way coupled solver oneWayGPBEFoam and the two-way coupled solver twoWayGPBEFoam have been developed, in which the Eulerian-QBMM was implemented. The latter is designed entirely within the OpenFOAM software framework and is a highly-extensible and fully object-oriented C++ based approach. The code is released under the same license as the OpenFOAM base, at a publicly available software repository that includes documentation and example tutorials. It is intended to be a powerful research platform for those interested in Eulerian-QBMM.

    oneWayGPBEFoam has been used in this work to verify the particle size segregation phenomenon, and good agreement with the analytical solutions was obtained, implying that the QBMM algorithm which was implemented is correct. A turbulent bubbly air/water upward flow through a pipe with a sudden enlargement was employed to verify the results predicted by the two-way coupled Eulerian-QBMM and the E-E method. Both of them predict good results compared with the experimental data. To complete the two-way verifications, two classic bubble column experiments with different superficial velocities were employed, as used by D{'\i}az et al. \cite{diaz2008numerical} and Pfleger et al. \cite{pfleger1999hydrodynamic}. It was shown that the results predicted by twoWayGPBEFoam (e.g., the bubble plume period, the global phase fraction and the averaged vertical liquid velocity) agree well with the experimental data.

    The development of twoWayGPBEFoam is still ongoing. Other momentum interface exchange models, four-way coupling procedures and compressibility algorithms will be implemented in the future. Optimizations and bug fixes are often applied to the repository. It is also worth mentioning that besides twoWayGPBEFoam readers are also refereed to the open-source code (\verb+OpenQBMM+) developed by Passalacqua et al. \cite{passalacqua2018open}, which includes different QBMM algorithms and well-organized test cases, although the two-way coupling procedure used in their work is different to ours. It is our hope that these open-source QBMM-based CFD codes, as strong supplements of the existing E-E method and E-L method, will be used and be extended by different research and industrial groups from different disciplines.

    0_1541126370100_捕获.JPG

    即将进行的工作

    博后期间将气-液体系将E-QBMM算法验证之后,在未来,我将和新的小伙伴们将E-QBMM应用于液-液/液-固体系。相关研究将实验 + 模拟两步走。具体的研究暂时保密。同时,在双向耦合的基础上植入四向耦合OpenFOAM求解器。相关的算法将和欧拉欧拉求解器reactingMultiPhaseEulerFoam以及MPPIC求解器MPPICFoam进行对比验证。从博士期间发现问题,博后期间植入新算法并验证,未来继续验证,整个算法的开发/植入/验证的过程,基本人生的10年就过去了。不过工作很具有系统性、连续性和创新性!

    再一次的,我们承诺将所有这些OpenFOAM求解器以及所有的验证算例开源化,以供同行交流!

    对了,有对多相流算法感兴趣的,可以回帖交流讨论!

    祝收敛
    东岳


    另外,我计划2年内完成这本在线笔记,名为《多相流及群体平衡模型的数值计算方法》。还是只能用业余时间写。还是要从算法的层次往上升,希望能讲清楚,讲明白!

    0_1541128448152_捕获.JPG

    0_1541128362632_捕2获.JPG


  • 地下室的CFD有志青年
    李 李东岳
    2017年11月26日 07:57

    最近风大,诸位流体力学教授们小心


  • paraview能够处理得到喷雾液滴的SMD直径分布吗?
    李 李东岳
    2018年8月29日 01:00

    Sauter Mean Diameter是平均直径,计算公式是∑nidi∑ni,把你所有的颗粒直径调出来,通过这个公式计算。不需要用其他后处理软件,不过可能其他后处理软件也能做,不清楚。


  • -div(phi,T) 和div(-phi,T)结果为何不同?
    李 李东岳
    2018年7月31日 23:58
    fvScalarMatrix TEqn
    			(
    				fvm::div(phi, T)
    			  - fvm::laplacian(Tnu, T)
    			);
    
    			TEqn.relax();
    			TEqn.solve();
    

    我加了一下,没有任何问题?你是要植入上面的方程吧?

    0_1533081506523_2018-08-01 07-58-00屏幕截图.png


  • 怎么获取边界上一点的压力值
    李 李东岳
    2018年7月24日 09:51

    可以,但是会比较乱七八糟。对于输出的功能,最好通过controlDict里面的function来调用,比如下面这些代码

    functions
    {
    	extraInfo
    	{
    		type				coded;
    
    		functionObjectLibs	("libutilityFunctionObjects.so");
    
    		name				dummy;
    
    		codeExecute
    		#{
    			const volVectorField& U = mesh().lookupObject<volVectorField>("U");
    
    			Info<< "max U = " << max(mag(U)).value() << nl;
    
    			const volScalarField& epsilon = mesh().lookupObject<volScalarField>("epsilon");
    
    			Info<< "min/max epslion = " << min(epsilon).value() << ", " << max(epsilon).value() << endl;
    
    			const volScalarField& k = mesh().lookupObject<volScalarField>("k");
    
    			Info<< "min/max k = " << min(k).value() << ", " << max(k).value() << endl;
    
    			const volScalarField& p = mesh().lookupObject<volScalarField>("p");
    
    			Info<< "min/max p = " << min(p).value() << ", " << max(p).value() << endl;
    		#};
    	}
    }
    

  • 关于reconstructPar的命令
    李 李东岳
    2018年7月5日 02:30

    注意括号

    recontructPar -fields '(U p)'
    

  • 新版本的alphaSuSp.H
    李 李东岳
    2018年6月20日 06:00

    看了一下,新版本的VOF算法被提出来了,更加的紧凑,尽可能的减少代码复用。在这种情况下,不同的算法具有不同的显性源项和隐性源项。在interFoam中,源项均为0,因此均初始化为zeroField。对于可压缩VOF,源项则初始化为其他,可参考compressibleInterFoam中的alphaSuSp.H。


  • 运行时选择 RTS 有什么好处?
    李 李东岳
    2018年6月6日 08:19

    RTS对我来说有什么用。

    可以减少代码复用。是否有必要把你的代码改成RTS,取决于你对你现存代码风格的容忍程度,和下一步工作展开的难易程度。如果你觉得代码写的不好,就改呗。如果急于出数据,写30个if也无妨,毕竟数据结果是一样的。


  • 一个不得不承认的事实
    李 李东岳
    2018年2月2日 03:10

    国外好多开源公司盈利都是这种的。 先让你用,等你用的离不开的时候,你会发现他的不成熟,或者需要增加点东西。但是你还自己增加不了。你只能给他们钱帮你做开发。我这个论坛也是的,我目前只是用,但是有些功能我不会添加,我只能给他们钱,让他们给我加功能。

    我觉得这个模式挺好的。比国内先给钱,买了之后用了不知道好不好,也不能退,强很多。


  • hoho, 酷炫的文件头
    李 李东岳
    2018年1月29日 05:13

    0_1517202768783_捕获.PNG


  • 学习openfoam需要什么基础?
    李 李东岳
    2018年1月11日 17:21

    大四小朋友 :cheeky:

    如果还没决定要用OpenFOAM,如果只是做本科毕业设计,ANSYS Fluent那面上手要快的多。

    如果可以读硕士,使用OpenFOAM自带的求解器算一算还是可以的,发文章这个东西影响因素太多了,导师是很重要的一部分。

    如果可以读博士,首选OpenFOAM。通过使用OpenFOAM做CFD模拟,会比用Fluent了解更多关于CFD的东西,并且时间足够,也可以出东西。

    OpenFOAM超音速求解器那面一直没有赞助,读博士还是有的搞的。

    行业和就业前景之类的

    这个和学历、期望待遇、是否同意轻度的转行关系很大,很难说。

    想了解一下这个坑有多深,难度怎么样,还需要什么先修知识和最注重哪些知识,

    总之,个人建议本科毕设不要入坑,很难毕业。硕士基本只能把OpenFOAM当做商软用用。博士才有的搞。并且还得用心搞。

    但是总体来说OpenFOAM值得去玩,我这7年来,一直在用OpenFOAM,我学到了非常多有关CFD的东西,虽然刚开始的时候,多次有放弃的念头,但走到现在,我庆幸入行OpenFOAM。


  • 单元生死技术
    李 李东岳
    2018年1月3日 04:35

    有,但是用的很少,基本只是个demo,不能用来计算,除非你只需要个框架来进行代码开发。如果你急需类似的网格处理方式进行真实的模拟,不如用OpenFOAM v1712中的overset。


  • 某高阶格式偶尔收敛,偶尔发散
    李 李东岳
    2017年12月9日 20:33

    ?
    目前我的计算最多5000网格,秒算,还不需要并行 :big_mouth:

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]