Navigation

    CFD中文网

    CFD中文网

    • Login
    • Search
    • 最新

    q-DNS计算槽道流遇到了一些问题,求大神们指点

    OpenFOAM
    4
    13
    3709
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • 悬
      悬铃神木 last edited by 李东岳

      我想用q-DNS模拟一个Re_tau=180的槽道湍流,网格与这篇链接文本文献中基本相同。

      0_1546246841602_网格.PNG

      我更改了一下icoFoam的计算公式,代码包:0_1546247060398_pGradIcoFoam.zip

      具体改法如下:

      1. createFields.H中,添加一个pGrad场,量纲与压力梯度相同,大小直接给出:
      volVectorField pGrad
      (
          IOobject
          (
              "pGrad",
              runTime.timeName(),
              mesh,
              IOobject::NO_READ,
                    //MUST_READ,
              IOobject::AUTO_WRITE
          ),
          mesh,
          dimensionedVector("pGrad",dimensionSet(0, 1, -2, 0, 0),vector(-1,0,0))
      );
      
      1. 动量预测方程中把pGrad项加入到方程右边,与压力梯度项并列
              {
                  solve(UEqn == -fvc::grad(p)-pGrad);
              }
      
      1. 压力泊松方程中也加入pGrad项带来的影响

                 fvScalarMatrix pEqn
                 (
                     fvm::laplacian(rAU, p) + fvc::div(rAU\*pGrad) == fvc::div(phiHbyA)
                 );
        
      2. 还有最后一步的速度修正:

      U = HbyA - rAU\*fvc::grad(p)- rAU\*pGrad;
      
      1. 另外,还有按照苏老师博客里的方法,把icoFoam改为可以变时间步长的求解器
      2. 加入计算并输出平均速度的代码:
              scalar magUbarAve = 0.0;
              scalar V = 0.0;
              const scalarField& cv = mesh.V();
              vector flowDir_ = vector(1,0,0);
              for(label celli=0; celli < mesh.C().size() ; celli++)
              {
                  scalar volCell = cv[celli];
                  V += volCell;
                  magUbarAve += (flowDir_ & U[celli])*volCell;
              }
      
              reduce(magUbarAve, sumOp<scalar>());
              reduce(V, sumOp<scalar>());
      
              magUbarAve /= V;
              Info << "Ubar = " << magUbarAve  << endl;
      

      计算算例:

      0_1546249122420_channel180.zip

      计算初始场用perturbU工具进行打乱,然后计算一些时间步获得完全发展的湍流场

      我现在遇到的问题是,计算一段时间后,发现靠近边界层的速度算得还比较准,但是槽道中部远离边界层的地方出现奇怪的脉动

      1_1546249268896_dns_U1.PNG

      0_1546249268896_dns_U.PNG

      放大可看到这个脉动大概以三个cells为一个周期。
      最奇怪的是平均速度型竟然上下不对称

      已做时间足够长的平均

      0_1546249432814_dns_UMean.PNG

      我的改动中应该没有会引起这种不对称的地方?

      壁面律图像和雷诺应力图像也同样,壁面处算得还好,中间算不好

      1_1546249608153_dns_uu.PNG 0_1546249608153_dns_UMean1.PNG

      似乎可能是中间网格不够密的原因?但是我使用的网格应该和那篇参考文献中相同啊,他也用的是openFoam做的q-DNS,但他得到的结果就很好,所以我现在不知道错在什么地方。
      我修改后的求解器、算例的基本设定都已上传,希望各位老师能帮忙指点一下,不胜感激!

      1 Reply Last reply Reply Quote
      • 李东岳
        李东岳 管理员 last edited by 李东岳

        你的平均速度代码看起来不正确。

        不过现在你不需要做求解器了,你尝试用pisoFoam层流求解,然后再fvOptions中添加

        momentumSource
        {
            type            meanVelocityForce;
            active          yes;
         
            meanVelocityForceCoeffs
            {
                selectionMode   all;
         
                fields          (U);
                Ubar            (0.1 0 0);//平均速度
                relaxation      1.0;
            }
        }
        

        BTW,看起来这篇JCP文章不错,CFD界推一下

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

        悬 X 2 Replies Last reply Reply Quote
        • 悬
          悬铃神木 @李东岳 last edited by

          @东岳 谢谢东岳老师
          这个meanVelocityForce的源项我用过,但是和我想要的不太一样,meanVelocityForce也是通过添加一个压力梯度来控制平均速度的,但它给添加的压力梯度项是随时间步不断计算调整的,我想添加一个简单的常数的压力梯度。不过我确实可以通过修改meanVelocityForce来达到这个目的,今后我会试一下这个。
          另外,我那个平均速度的代码就是从meanVelocityForce中copy过来的,稍微改了一下下让他能在求解器中运行,现在来看运行的还可以。而且这个平均速度只是为了在log中输出一个当前流场的平均速度,方便我检测求解状况,不会影响迭代求解的,所以还是不太清楚结果中的问题出在了哪里。ORZ

          1 Reply Last reply Reply Quote
          • 李东岳
            李东岳 管理员 last edited by

            我想用q-DNS模拟一个Re_tau=180的槽道湍流,网格与这篇链接文本文献中基本相同。

            如果你要实现这个q-DNS模拟槽道湍流,我觉得你可以试试meanVelocityForce,之前我也是用你这种植入代码的方式计算,后来发现meanVelocityForce更简单并且两者效果相同。

            这个平均速度只是为了在log中输出一个当前流场的平均速度

            我当时植入的代码平均速度是给定的,因为你完全可以不植入任何代码直接用icoFoam做直接模拟,但是速度回往下掉, 因此给定一个固定的平均速度。如果你只是为了输出,那应该没问题吧 :papa:

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

            悬 1 Reply Last reply Reply Quote
            • 悬
              悬铃神木 @李东岳 last edited by

              @东岳 嗯嗯,我都会尝试一下

              1 Reply Last reply Reply Quote
              • 悬
                悬铃神木 last edited by

                @东岳 破案了……
                出现错误的原因在于离散格式,当时我看到dnsFoam的那个算例里使用了

                div(phi,U)      Gauss cubic;
                

                这个离散格式,一查还是个高阶格式,就直接拿来在我的算例里用了。现在改回Gauss linear格式,算得很好:
                替代文字
                替代文字
                替代文字
                基本到达了文献中的效果
                我翻了一下中文版指南,发现这个cubic格式被描述为dnsFoam专用的
                替代文字
                替代文字
                里面的详细原理还不太清楚,我现在对离散格式的选用还理解不深,感觉还是玄学般的东西,哈哈ORZ:chigua:

                vbcwl 1 Reply Last reply Reply Quote
                • 李东岳
                  李东岳 管理员 last edited by 李东岳

                  这个meanVelocityForce的源项我用过,但是和我想要的不太一样,meanVelocityForce也是通过添加一个压力梯度来控制平均速度的,但它给添加的压力梯度项是随时间步不断计算调整的,我想添加一个简单的常数的压力梯度。

                  你的求解器没有设定平均速度?你的算法是这样的?:

                  1. 动量预测方程中把pGrad项加入到方程右边,与压力梯度项并列
                  2. 压力泊松方程中也加入pGrad项带来的影响
                  3. 考虑pGrad的速度修正

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

                  悬 vbcwl 2 Replies Last reply Reply Quote
                  • 悬
                    悬铃神木 @李东岳 last edited by

                    @东岳 是的,求解本身没有用到平均速度 ,也没有规定平均速度,给它一个压力梯度(实际相当于增加了一个体积力),让摩擦力自己跟压力梯度平衡去,平均速度会在某个值附近上下波动。

                    1 Reply Last reply Reply Quote
                    • 李东岳
                      李东岳 管理员 last edited by

                      我试试你这种方法

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

                      1 Reply Last reply Reply Quote
                      • X
                        XieXiaoyang @李东岳 last edited by

                        @李东岳 李老师,我看很多文献里,槽道湍流DNS计算时,除了时间平均,还可以做展向和流向的空间平均,在OpenFOAM自带LES Ret=395的算例中,有一个postChannel脚本可以改来用,个人觉得用了这个效果挺好的hhh~
                        86960931-fcdc-41fe-8e7e-9e9206a29159-image.png

                        李东岳 1 Reply Last reply Reply Quote
                        • 李东岳
                          李东岳 管理员 @XieXiaoyang last edited by

                          @xiexiaoyang 有道理

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

                          1 Reply Last reply Reply Quote
                          • vbcwl
                            vbcwl @李东岳 last edited by

                            @李东岳 东岳老师您好,我之前了解到meanVelocityForce适合槽道这种几何,然后不可压缩,如果我想做圆环柱计算域的传热,然后采用Boussinesq的话,这种计算域以及轻微的热膨胀还可以使用meanVelocityForce么?

                            LBE

                            1 Reply Last reply Reply Quote
                            • vbcwl
                              vbcwl @悬铃神木 last edited by

                              @悬铃神木 请问你的rms拟合效果怎么样呢?

                              LBE

                              1 Reply Last reply Reply Quote
                              • First post
                                Last post

                              CFD中文网 | 东岳流体 | 京ICP备15017992号-2
                              论坛登录问题反馈可联系 li.dy@dyfluid.com