CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新
    1. 主页
    2. 李东岳
    • 资料
    • 关注 0
    • 粉丝 230
    • 主题 449
    • 帖子 6508
    • 群组 2

    李东岳

    @李东岳

    管理员

    15484
    资料浏览
    6508
    帖子
    230
    粉丝
    0
    关注
    注册时间 最后登录
    网站 dyfluid.com

    李东岳 取消关注 关注
    教授 管理员

    李东岳 发布的最佳帖子

    • OpenFOAM初级入门建议(2020年更新版)

      2020年6月更新:一晃过去了,用OpenFOAM快10年了,回头看看这个OpenFOAM初级入门建议,或许应该更新一些内容,与最新的理解。以下是更新后的原文:


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

      学OpenFOAM第一个坎:安装

      当年我在学OpenFOAM的时候,我非常清楚的记得我用了大约一个星期才装上。主要原因在于

      • 对Linux不熟悉,
      • 对开源软件的思维不熟悉。

      玩OpenFOAM,大体表示着你半只脚踏入了开源的殿堂。从今以后,你就是开源的斗士。拥抱开源,windows sucks!

      OpenFOAM具体的安装方法在这里有非常详细的描述 http://dyfluid.com/install.html 在此仅仅概括。OpenFOAM安装有俩种方法:

      1. 直接从linux源获取;
      2. 采用源代码进行编译;

      直接安装有个问题是国内经常会连接不上网。所有直接就装不上了。编译安装就是把源代码下载下来直接编译。

      另外,你还要有一个Linux系统,因为国人平时基本都是用的windows,有几种方式:

      • windows系统+Linux虚拟机(推荐新手用)
      • Linux系统+windows虚拟机(推荐老手用)
      • 两台电脑:一个windows,一个linux(推荐土豪用)

      在国内抛弃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编程建议

      发布在 OpenFOAM
      李东岳
      李东岳
    • RE: 讨论 Fluent计算效率优于OpenFOAM

      很难公平对比

      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:

      发布在 OpenFOAM
      李东岳
      李东岳
    • RE: 磁流体力学入门的一些问题

      @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:

      发布在 Fluent
      李东岳
      李东岳
    • RE: 欧拉及拉格朗日下的动量方程压力项竟然不一样

      0_1523353770787_捕获.PNG

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

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

      发布在 OpenFOAM
      李东岳
      李东岳
    • 欧拉及拉格朗日下的动量方程压力项竟然不一样

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

      %(#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:

      发布在 OpenFOAM
      李东岳
      李东岳
    • RE: motorbike中SA模型相关设置?

      排版太厉害了

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

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

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

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

      我看看怎么回事再回复你

      发布在 OpenFOAM
      李东岳
      李东岳
    • RE: interFoam里面的VOF,液膜,CSF模型源于哪些资料?

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


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

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

      发布在 OpenFOAM
      李东岳
      李东岳
    • 多相体系的计算模拟

      已完成的工作(博士)

      各位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

      发布在 OpenFOAM
      李东岳
      李东岳
    • RE: 地下室的CFD有志青年

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

      发布在 C斯达克
      李东岳
      李东岳
    • RE: paraview能够处理得到喷雾液滴的SMD直径分布吗?

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

      发布在 OpenFOAM
      李东岳
      李东岳

    李东岳 发布的最新帖子

    • RE: 控制方程仅仅有瞬态项和对流项,UDS如何设置

      能否通过直接设置扩散率为0来实现关闭扩散项?

      理论上可以。但是要注意对流格式。容易不稳定。

      发布在 Fluent
      李东岳
      李东岳
    • RE: CompressibleInterIsoFoam边界条件设定

      射流雾化这个用VOF算,网格量不小。不太好debug。你这个问题,只能看出来是发散了。我看你最好先用不可压缩整收敛,然后再上弱可压缩。

      发布在 OpenFOAM
      李东岳
      李东岳
    • RE: 气液小火焰程序移植到高版本OF(程序编译通过,但是运行程序报错)

      你首页那个不是真正的报错。那个是intelmpi的log。你可以贴一下openfoam的log。不过类似这种问题,对于一个没有接手你们代码的任何人来说,都不容易debug,

      发布在 OpenFOAM
      李东岳
      李东岳
    • RE: 气液小火焰程序移植到高版本OF(程序编译通过,但是运行程序报错)

      一般情况下不会有差异。但是你这个不知道是不是就是本地就报错了。那肯定放云上也报错。

      如果本地不报错,云上报错。那估计是并行的事情。比如本地3核不报错,超算300核报错,这也会有可能。

      如果本地300核不报错,云上300核报错。这种很少见。但是总体,应该跟超算那面没什么关系。主要是openfoam

      发布在 OpenFOAM
      李东岳
      李东岳
    • RE: 在interFoam中通过setFields设置水体速度,但结果没有

      很奇怪的问题。
      如果你可以提交一下算例,我可以给你看一下(网格数量少的话)

      发布在 OpenFOAM
      李东岳
      李东岳
    • RE: 气液小火焰程序移植到高版本OF(程序编译通过,但是运行程序报错)

      你可以在本地尝试,本地跑通了,再弄到集群上测试。

      发布在 OpenFOAM
      李东岳
      李东岳
    • RE: CompressibleInterIsoFoam边界条件设定

      老铁你这啥都算啊,前几天还记得你弄IBM。为啥不用不可压缩呢。变量越多越容易出问题。这个错误就是发散了。

      发布在 OpenFOAM
      李东岳
      李东岳
    • RE: 使用A100和V100GPU运行RapidCFD

      才看到这个回复。现在A100/V100太贵了,之前我问忘了是A100还是V100来着,要10万一个。好像国内有个A800稍微便宜一些。GPU计算这个如果硬件能够解决的话。目前来看GPU都是第三方写的外挂。还需要各大vendor做适配。也需要一段功夫。

      不过你这整的挺厉害,都跑起来了,我对第三方写的包总是不敢尝试,经常出错。目前上亿网格我偏向petsc

      发布在 OpenFOAM
      李东岳
      李东岳
    • RE: openFoam与Fluent模拟简单的Laval蒸汽喷管

      这个是rhoCentralFoam算的,我加密了一下网格,看起来可以,分别是速度跟压力

      捕获.JPG

      发布在 OpenFOAM
      李东岳
      李东岳
    • RE: 非均匀网格boxTurb初始化速度场问题

      我就是boxTurb添加的,然后mapField做的非均匀网格。你这个问题,看起来不像是初始场的问题,看起来像是压力梯度没设置好

      发布在 OpenFOAM
      李东岳
      李东岳