CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    自定义Solver出现“浮点数例外,核心已转储”

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

      我是年初接触OpenFoam, 之前一直做的是实验,又是硕士联培只有一年,东西从头做,所以时间很紧,还希望了解的人提点一二。做的是风力机气动噪声,现在要在icoFOAM 中把声波扰动方程APE加进去。
      0_1517684528761_Screenshot-2018-1-31 DTU-1 pdf.png
      这段代码跟在PISO后面写,如下:

      Info<<"point1"<<endl;
      
              volScalarField c21(1.4*(p+Pp+p0));
              volScalarField c20(1.4*(p+Pp+p0));
      
      Info<<"point2"<<endl;
      while (piso.correct())
            {      
       
      Info<<"point3"<<endl;
              fvVectorMatrix FEqn
             (
              fvm::ddt(F)
             +fvc::div(F*(U+Up))
             +rho*fvc::div(U*Up)
             -rho*fvc::laplacian(nu,Up)
             -(rho)*fvc::div(nu*dev2(T(fvc::grad(Up))))
             );
      Info<<"point3.1"<<endl;
              solve(FEqn == -(rho)*fvc::grad(Pp));
      Info<<"point4"<<endl;
      
              fvScalarMatrix PpEqn
             (
               (rho/c21)*fvm::ddt(Pp)
              +fvc::div(F)
              );
      Info<<"point4.1"<<endl;
             solve(PpEqn==-(rho/c21)*fvc::ddt(p));
      Info<<"point5"<<endl;
              rhos=rhos+(rho)*(Pp+p-(Pp.oldTime()+p.oldTime()))/(1.5*c21-0.5*c20);
              Up=(F-rhos*U)/(rho+rhos);
              volScalarField c22(1.4*(p+Pp+p0));
              c20=c21;
              c21=c22;
      Info<<"point6"<<endl;
             }
      

      但是运行一定循环次数后便出现“浮点数例外,核心已转储”
      但是当把求解F的方程和求解Pp的方程其中一个去掉的时候,计算便能顺利进行。
      不知各位大佬有没有出现过这种情况。
      谢谢!

      1 条回复 最后回复 回复 引用
      • V
        VamosZhi 最后由 编辑

        “但是当把求解F的方程和求解Pp的方程其中一个去掉的时候,计算便能顺利进行。”这句话当我没说。。。。。去掉其中一个后虽然会计算的更久,但还是出现“浮点数例外,核心已转储”。

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

          你的那个图公式每个变量也不知道是什么啊。从代码看你用的显式离散,参考UEqn.H可以换成隐式试试。

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

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

            @李东岳 嗯嗯,那我现在能改吗?公式带‘的项都是波动项,对应于我代码中加了p的变量,如u'对应于Up,p'对应于Pp,也是我要求解的东西,公式中的g相当于一个中间变量,没有什么实际意义,对应于代码中F。
            我通过计算出的那几步调用paraview发现,波动项在几步计算后便达到了e23次量级,应该是这个原因出现“浮点数除外”
            我把带有F的那几项换成FVM隐式后,求解器就编译不成功了。

            1 条回复 最后回复 回复 引用
            • V
              VamosZhi 最后由 编辑

              经过试算发现,应该是求解Pp的那段程序导致的发散,但是为什么我还不清楚,有什么别的写法使它稳定吗?

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

                fvScalarMatrix PpEqn
                       (
                         (rho/c21)*fvm::ddt(Pp)
                        +fvc::div(F)
                        );
                

                这是求解公式8么?

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

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

                  @李东岳 嗯嗯是的老师,求解公式8

                  1 条回复 最后回复 回复 引用
                  • W
                    wwzhao 教授 最后由 wwzhao 编辑

                    文献中说的是compressible,为什么要用 icoFoam 呢?

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

                      @wwzhao 您好,声场之前的流场计算是不可压缩的。还有,可能是我不太了解,我这段程序发散:

                        fvScalarMatrix PpEqn
                             (
                               (rho/c21)*fvm::ddt(Pp)
                              +fvc::div(F)
                              );
                      Info<<"point4.1"<<endl;
                             solve(PpEqn==-(rho/c21)*fvc::ddt(p));
                      

                      有哪些可能呢?

                      W 1 条回复 最后回复 回复 引用
                      • Y
                        youmengtian 最后由 编辑

                        gdb跑一下,这一个错误提示根本看不出来个啥

                        天命之谓性;率性之谓道;修道之谓教。
                        道也者,不可须臾离也;可离,非道也。是故君子戒慎乎其所不睹,恐惧乎其所不闻。
                        莫见乎隐,莫显乎微。故君子慎其独也

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

                          嗯,最好也贴一下发散前3步后的log

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

                          1 条回复 最后回复 回复 引用
                          • W
                            wwzhao 教授 @VamosZhi 最后由 编辑

                            @vamoszhi 我的意思是,文献的方法是用于可压缩流体,你应用到不可压缩流不会有问题么?

                            V 1 条回复 最后回复 回复 引用
                            • V
                              VamosZhi @wwzhao 最后由 编辑

                              @wwzhao 哦哦好的,我再想想看。不过这种方法的流场部分本来是按照不可压缩流算得,这个应该是没有问题的,我的工作是把这部分方程加到计算流场的大循环中。

                              1 条回复 最后回复 回复 引用
                              • V
                                VamosZhi 最后由 编辑

                                各位老哥,是我蠢了,我昨天把时间步长降到0.00001,居然算过去了。。。谢谢各位大佬帮助,我现在新问题是,如何在场内某一点上加上随时间三角函数变化的波动项。我自己查查,各位了解也可以提示我用哪种函数

                                X 1 条回复 最后回复 回复 引用
                                • X
                                  xuebao1989 @VamosZhi 最后由 编辑

                                  @vamoszhi 您的声波扰动方程添加成功了吗?我也准备将声学扰动方程加入OF,请问是否方便交流下

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