DPMFoam追踪算法失效导致颗粒丢失



  • 在openfoam4之前的各版本中,粒子所在的空间位置通过其穿过网格面的算法去定位(涉及空间实体网格基础上的四面体虚拟网格划分,穿透网格面的界定(TetFacei,TetPti),位置更新等等),输出的结果文件记录了颗粒的空间绝对坐标和颗粒所在的网格编号。但是,由于算法存在bug,时常导致跟踪的粒子丢失(穿透边界,逃离计算域…);openfoam-5.0粒子追踪完全采用了不同的算法去定位颗粒的位置(https://cfd.direct/openfoam/free-software/barycentric-tracking/ https://openfoam.org/release/5-0/ )”The new development was funded from the €100 k for OpenFOAM maintenance, raised through the OpenFOAM Foundation in 2017, in which “particles and tracking” was identified as an area in OpenFOAM “requiring significant code refactoring and/or rewriting"… The calculation of particle-face intersections is unambiguous and reproducible, even as a particle approaches a face at a small angles of incidence. Consequently, particles do not get “lost”, and tracking does not require ad-hoc corrections or “rescues” to function robustly…"
    前面啰嗦了好多,目前遇到的问题是,of5.0跑出的结果目前因为颗粒位置文件格式不兼容(而且没有直接提供粒子的空间位置坐标),无法在paraview中查看(头疼ing),不知道其他用of5.0做粒子研究的同仁,是如何查看计算结果的?


  • 网格教授 OpenFOAM教授 管理员

    嗯… 这个问题很关键,直接导致我退回了OpenFOAM-4.x。
    不过,有时间的话,你可以研究一下重心坐标的计算,然后写个后处理程序重写坐标。感兴趣么? :chigua:



  • 直接打开 paraview 确实会报错,但是使用 paraFoam 打开 paraview 的话,却可以正常显示啊。也许这个转换过程,在 paraFoam 执行的时候,已经悄然进行了?



  • @东岳 “…不过,有时间的话,你可以研究一下重心坐标的计算,然后写个后处理程序重写坐标。感兴趣么?

    重心坐标的计算,网上查到了一点点相关资料“Generating Random Points in a Tetrahedron 网址: http://vcg.isti.cnr.it/jgt/tetra.htm
    目前我理解到的程度就是质心坐标是4个0~1之间的随机数a,s,t,u(4者相加为1),粒子空间位置坐标应该可以根据程序记录粒子所在的四面体(celli,tetFacei,tetPti共同确定四面体)四个空间点坐标(V0,V1,V2,V3)差值出来,即aV0+sV1+tV2+dV3.
    of50的粒子位置文件可以改写成of30那种输出格式,但是由于下一步要调用上一步计算的结果,of50的粒子计算过程不能正常进行(只能输出一个计算步)。


  • 网格教授 OpenFOAM教授 管理员

    @浪迹天大 个人喜好问题很久没装过paraFoam了, @Alvin 或许你可以装一下paraFoam。另外,重心坐标这个我没研究过,不过很感兴趣。本质上,脱离CFD,也是很有意思的一个东西。如果你有空,可以详细研究研究,分享给我们。我可以给你在CFD界推一把。



  • @浪迹天大 谢谢您提供的这个思路。



  • @东岳 重心坐标只是第一步,理解of50那一整套新的颗粒追踪算法满有难度的,看能否找到相关文献吧


  • OpenFOAM副教授

    @浪迹天大 我用了paraFoam为什么还是不能显示粒子呢?是直接输入paraFoam命令吧?



  • @dzw05 对呀,直接使用 paraFoam 打开就能看。

    • 使用 paraFoam 打开之后,需要勾选需要的信息的,如下图:
      勾选拉格朗日信息

    • 如果使用 touch a.foam && paraview a.foam,则会报错:

    ERROR: In /home/ubuntu/OpenFOAM/ThirdParty-dev/ParaView-5.4.0/VTK/IO/Geometry/vtkOpenFOAMReader.cxx, line 8285
    vtkOpenFOAMReaderPrivate (0x417d3d0): Error reading line 20 of /root/OpenFOAM/OpenFOAM-dev/tutorials/lagrangian/sprayFoam/aachenBomb/5e-06/lagrangian/sprayCloud/positions: Expected punctuation token ')', found 0
    


  • @dzw05 你用的哪个版本的of?of50下的paraFoam能够读取质心坐标的


  • OpenFOAM副教授

    @浪迹天大 可能因为我用的blueCFD,在windows系统中运行,所以即使用paraFoam也会出现报错:(。


  • 网格教授 OpenFOAM教授 管理员

    理解of50那一整套新的颗粒追踪算法满有难度的

    这是个有意思的研究方向,算法 + 测试 + 应用,可以试试Journal of Computational Physics,Computer Physics Communications,或者可以投个powder technology,Computers Fluids。但这种东西往往需要一定时间去搞。受雇人员(包括硕、博、以及科研高校的课题组成员)往往不能独立的去研究这东西。没时间,雇主也不好交代。

    只有某些特殊的人会有时间、有精力去搞,比如我 :mihu: 哈哈。在国内,只要受雇于人,就缺乏独立性,太高调会引火烧身,当时比较年轻,但现在总不能把我的网站名改成“无名流体”吧?哈哈


  • OpenFOAM副教授

    @alvin of5.x,是blueCFD版本的。



  • @东岳 说的太对了,确实需要花费专门的时间去搞,在企业有限制。做研究就要沉得住气。openfoam-v1712 …/etc/bashrc文件中有颗粒位置记录方式的选择,也可以调用程序将粒子的质心坐标转换为空间直角坐标:

    0_1529978239537_颗粒位置.JPG

    openfoam1712记录颗粒位置的文件是“coordinates",通过将”writeLagrangianPositions“ 值置为非零,结果文件夹下就出现了熟悉的”positions“ :

    0_1529978450900_位置.JPG



  • @dzw05 :zoule: blueCFD还没有用过



  • @东岳 您可以考虑做培训之外的企业技术咨询服务


  • 网格教授 OpenFOAM教授 管理员

    @alvinDPMFoam追踪算法失效导致颗粒丢失 中说:

    您可以考虑做培训之外的企业技术咨询服务

    一旦公开,基本自断后路 :chouchou: 嘿嘿 https://www.zhihu.com/question/33445584

    东岳流体logo中间的D表示CFD中的有限控制体,也表示物质导数,左右的弧线表示CFD中的流线。本网站所有内容由东岳流体®出品,不借助(依附)任何组织和单位。各平台恕不承接任何广告及项目。CFD学术合作(非咨询)可联系li.dy@dyfluid.com,问题咨询请前往CFD中文网。