CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    动网格细化植入interFoam

    OpenFOAM
    3
    6
    1251
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • H
      Hunahum 最后由 编辑

      大家好,最近尝试在基于openfoam-240版本的interThermalPhaseChangeFoam(https://github.com/MahdiNabil/CFD-PC)中植入动网格细化的代码,但是碰到了莫名其妙的bug.因为该求解器和of22x版本interFoam比较接近,就参考了interDymFoam和interFoam照猫画虎.植入代码后的求解器编译顺利没什么问题,然后使用了二维的单气泡沸腾算例来测试动网格相界面细化是否能运行,但是提示求解温度方程EEqn.H时始终报错,终端提示

      
      *** Error in `interThermalPhaseChangeDymFoam': double free or corruption (!prev): 0x0000000001ec3530 ***
      ======= Backtrace: =========
      /lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7f8eabb9e7e5]
      /lib/x86_64-linux-gnu/libc.so.6(+0x8037a)[0x7f8eabba737a]
      /lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7f8eabbab53c]
      
      

      另外,尝试了把能量方程剔除后运行算例,即//EEqn.H或者把算例中的fvSolution文件设置nEnergyLoops为0不求解能量方程,结果仍然报错提示网格数量不匹配,可能这两种报错都是一个原因引起的:

      Starting mesh update
      
      Selected 64 cells for refinement out of 4062.
      Refined from 4062 to 4510 cells.
      
      
      --> FOAM FATAL ERROR: 
      Incompatible size before mapping.  Field size: 3950 map size: 4062
      
          From function void MapInternalField<Type, MeshMapper, volMesh>::operator()
      (
          Field<Type>& field,
          const MeshMapper& mapper
      ) const
          in file lnInclude/MapFvVolField.H at line 73.
      
      FOAM aborting
      
      #0  Foam::error::printStack(Foam::Ostream&) at ??:?
      #1  Foam::error::abort() at ??:?
      #2  ? at fvMesh.C:?
      #3  ? at fvMesh.C:?
      #4  Foam::fvMesh::mapFields(Foam::mapPolyMesh const&) at ??:?
      
      

      为了排除相变模型的影响,已经在transportProperties字典中设置为不使用相变,none.事实上为了找到出问题的量,已经进行了各种尝试还是搞不定,外网也已经翻了底朝天了...

      网盘链接是植入动网格代码后的求解器和测试算例:
      链接: https://pan.baidu.com/s/1g6eMsUzSy3a6DADyxrtg1w 提取码: uigh

      在240版本下输入source Allwmake.sh即可完成编译,测试算例是NucleateBoiling2D文件夹,该算例简化成了2d平面,然后如果运行原版interThermalPhaseChangeFoam没有问题.
      实在没办法了,来论坛问问各位老师和大神们有什么好办法没,谢谢~

      1 条回复 最后回复 回复 引用
      • 李东岳
        李东岳 管理员 最后由 编辑

        感觉像是内存使用不当,看看你的指针啥的代码有没有错误?

        CFD高性能服务器 http://dyfluid.com/servers.html
        2023年,线下CFD课,预热一下 http://dyfluid.com/class.html

        H 1 条回复 最后回复 回复 引用
        • H
          Hunahum @李东岳 最后由 编辑

          @东岳 谢谢东岳老师的关注,第一个报错应该是关于内存释放的,有时候还会报错free() invalid next size (normal).尝试了把EEqn.H能量方程中的relaxfactor项删除,就可以避免这个报错,但是会对计算结果有影响……
          还尝试过用gdb运行程序,就不会碰到这个报错,能量方程可以顺利求解(至少第一个时间步可以),但还是会提示下面那个网格数量不匹配的错误

          1 条回复 最后回复 回复 引用
          • F
            freeman 最后由 编辑

            请问interthermalphasechangefoam求解器是只能在2.4.0版本中编译吗?

            李东岳 1 条回复 最后回复 回复 引用
            • 李东岳
              李东岳 管理员 @freeman 最后由 编辑

              @freeman 外挂求解器一般只能用于特定版本

              CFD高性能服务器 http://dyfluid.com/servers.html
              2023年,线下CFD课,预热一下 http://dyfluid.com/class.html

              F 1 条回复 最后回复 回复 引用
              • F
                freeman @李东岳 最后由 编辑

                @李东岳 好的,谢谢东岳老师!

                1 条回复 最后回复 回复 引用
                • First post
                  Last post