CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    foam-extend的fsiFoam并行效率问题

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

      通过将fsiFoam算例beamInCrossFlow网格等比放大至800万流体网格+800万固体网格,其他参数不变,foam4.0版本,我测试了一下fsiFoam的并行效率,结果发现fsiFoam大规模并行效率非常糟糕,规整的六面体网格,200核以上直接跑不动,峰值在50核左右,和串行比加速比不超过25。
      仔细地对fsiFoam的代码计时,发现求解过程正常,根源出现在固体求解器的一行最小二乘法的cell to point interpolation上,源代码如下:

      头文件声明:

      //- Cell-to-point interpolation
      leastSquaresVolPointInterpolation volToPoint_;
      

      .C文件:

      volToPoint_.interpolate(D_, pointD_);
      

      在这个插值函数里面,用的大量的scheduled形式的MPI通信,MPI_Probe函数占用了大量的时间。
      底层的东西我改不了,就不求甚解地直接把这个插值类从最小二乘法的leastSquaresVolPointInterpolation 改成了反距离加权法的volPointInterpolation,编译正常,报错的地方改好了且不参加计算。
      (foam-extend提供了volPointInterpolation、leastSquaresVolPointInterpolation 和edgeCorrectedVolPointInterpolation,第三个的输入参数不一样就没用)
      但是计算结果出了问题,网格变形和原算例的不一致,原算例的网格变形类似于倾斜的平行四边形,改了之后的网格变形像个橡皮泥一样从四边形迎流面中部凹陷,背流面也错位凸起。
      图片传不上去,服务器解析出错,后面再补。

      请问各位大佬,这两个插值类的区别那么大,不能混用么,还是我代码改得有问题?我看foam-extend的icoFsiFoam求解器的算例也是一个类似的二维受限空间平板绕流的流固耦合算例,用的volPointInterpolation就没问题。

      算不准,发个散,报error,没问题!

      Number44 1 条回复 最后回复 回复 引用
      • Number44
        Number44 @Number44 最后由 编辑

        补个图,上面是源代码算的结果,下面是改了volPointInterpolation算的结果。

        compare.jpg

        算不准,发个散,报error,没问题!

        1 条回复 最后回复 回复 引用
        • S
          shiyu 最后由 编辑

          Hi, Number44
          我遇到和您类似的问题,不过我的case简单不需要并行,但对时间cost要求很严格,我发现我改动的FSI很花费时间,可能与你说的插值函数有关,不知你有改善效率问题吗?
          其次,想问一下,除了foam-extend里面有FSI tool,基金会的openfoam有类似的吗?比较偏向于使用基金会版本,谢谢

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

            @Number44 在 foam-extend的fsiFoam并行效率问题 中说:

            过将fsiFoam算例beamInCrossFlow网格等比放大至800万流体网格+800万固体网格,其他参数不变,foam4.0版本,我测试了一下fsiFoam的并行效率,结果发现fsiFoam大规模并行效率非常糟糕,规整的六面体网格,200核以上直接跑不动,峰值在50核左右,和串行比加速比不超过25

            这看起来像是个bug,可以跟foam-extend官方提bug

            线上CFD课程开始报名:http://www.dyfluid.com/class.html

            CFD高性能服务器 http://dyfluid.com/servers.html

            Number44 1 条回复 最后回复 回复 引用
            • Number44
              Number44 @shiyu 最后由 编辑

              @shiyu 在 foam-extend的fsiFoam并行效率问题 中说:

              Hi, Number44
              我遇到和您类似的问题,不过我的case简单不需要并行,但对时间cost要求很严格,我发现我改动的FSI很花费时间,可能与你说的插值函数有关,不知你有改善效率问题吗?
              其次,想问一下,除了foam-extend里面有FSI tool,基金会的openfoam有类似的吗?比较偏向于使用基金会版本,谢谢

              能力有限,改了好几次代码,结果都算不对。
              我只用过OpenFOAM5-7,里面应该都没有fsi相关内容,新的OpenFOAM8不清楚。
              另外,我不清楚你用fsi干什么,我之前用过基于OpenFOAM6的一个IBM方法的流固耦合,还行,MIT的一个博士搞的,叫sdfibm,能算固体大位移,暂时不能算形变。效率和OpenFOAM6差不多。

              算不准,发个散,报error,没问题!

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

                @李东岳 在 foam-extend的fsiFoam并行效率问题 中说:

                @Number44 在 foam-extend的fsiFoam并行效率问题 中说:

                过将fsiFoam算例beamInCrossFlow网格等比放大至800万流体网格+800万固体网格,其他参数不变,foam4.0版本,我测试了一下fsiFoam的并行效率,结果发现fsiFoam大规模并行效率非常糟糕,规整的六面体网格,200核以上直接跑不动,峰值在50核左右,和串行比加速比不超过25

                这看起来像是个bug,可以跟foam-extend官方提bug

                好不容易在sourceforge注册了个帐号,在foam-extend下写了个ticket说了一下这个问题,不知道维护大佬的看不看。

                算不准,发个散,报error,没问题!

                1 条回复 最后回复 回复 引用
                • 五好青年
                  五好青年 最后由 编辑

                  @number44 在 foam-extend的fsiFoam并行效率问题 中说:

                  foam-extend的icoFsiFoam

                  您好,请问下,下面两者有什么区别呢?
                  foam-extend中自带的icoFsiFoam
                  跟
                  单独的fsiFoam

                  I am a CFD machine with no emotions. Welcome to browse my Bilibili, search: seeeeeeeeeeer

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