Navigation

    CFD中文网

    CFD中文网

    • Login
    • Search
    • 最新

    标量场壁面梯度的处理方式

    OpenFOAM
    3
    8
    2551
    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.
    • M
      Mr.H last edited by

      各位前辈:
      我自己编写的一个求解器里 热扩散系数ka 在不同位置值不一样,是一个标量场。因此我定义了一个变量 volScalarField ka=f(....) 。 在温度方程里的拉普拉斯项fvm::laplacian(ka,T) 中 存在ka的梯度的计算。 volScalarField 在壁面边界也有分布,因此grad(ka)在边界处的计算是错误的。
      我的办法是把ka在壁面设为 zerogradient 条件。但总觉得不是十分完美,不知各位前辈有没有更好的方法。

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

        存在ka的梯度的计算。 volScalarField 在壁面边界也有分布,因此grad(ka)在边界处的计算是错误的。

        为什么?fvc::grad()函数在边界处已经考虑了边界的问题。

        线上CFD课程 7月1日报名截止 http://dyfluid.com/class.html
        CFD高性能服务器 http://dyfluid.com/servers.html

        M 1 Reply Last reply Reply Quote
        • M
          Mr.H @李东岳 last edited by

          @东岳 纯流体计算时热扩散系数在边界是没有意义的吧,一般情况下是dimensionscalar ,是一个常数,grad(ka)都是0。 但如果吧ka 设为 volScalarField 的话,边界值也会被用于计算grad。 热扩散系数应该定义在流体域也就是内部场中,但volScalarField 有边界值。 有没有可能只对volScalarField 的内部场进行初始化和计算?
          像这样 ka.primitiveFieldRef()=(r*(kf*(1+nn)-ks)+ks)/(1+nn*r);

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

            你可以简单的把grad(ka)在边界处的值设为0,可参考: http://www.cfd-china.com/topic/1199

            线上CFD课程 7月1日报名截止 http://dyfluid.com/class.html
            CFD高性能服务器 http://dyfluid.com/servers.html

            M 1 Reply Last reply Reply Quote
            • M
              Mr.H @李东岳 last edited by

              @东岳 抱歉,我上面说的有问题,边界上的值会影响 fvc::grad(ka)在靠近壁面边界的第一层网格上的值。如果把grad(ka)在边界上设为0,靠近第一层网格处的grad(ka)还是不对。 是不是应该对ka在边界的值进行操作。或者手动计算靠近边界第一层网格上的grad(ka)。

              我现在是吧ka在壁面设为zerogradient 条件

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

                参考这个:

                
                    forAll(patches, patchi)
                    {
                        const fvPatch& currPatch = patches[patchi];
                
                        if (isType<wallFvPatch>(currPatch))
                        {
                            forAll(currPatch, facei)
                            {
                                label faceCelli = currPatch.faceCells()[facei];
                
                                epsilon[faceCelli] = 0.0;//毗连网格单元值
                                G[faceCelli] = 0.0;//毗连网格单元值
                            }
                        }
                    }
                

                将你的边界毗连网格单元值的梯度手动给定

                线上CFD课程 7月1日报名截止 http://dyfluid.com/class.html
                CFD高性能服务器 http://dyfluid.com/servers.html

                M 1 Reply Last reply Reply Quote
                • M
                  Mr.H @李东岳 last edited by

                  @东岳 谢谢前辈

                  1 Reply Last reply Reply Quote
                  • fireztw
                    fireztw last edited by

                    @mr-h 在 标量场壁面梯度的处理方式 中说:

                    在温度方程里的拉普拉斯项fvm::laplacian(ka,T) 中 存在ka的梯度的计算。

                    此处Ka为volScalarField,那么fvm::laplacian(ka,T)是不是等价于(fvm::grad(ka)&fvm::grad(T)) + ka*fvm::laplacian(T);这两种表达方式的意义一样吗?

                    1 Reply Last reply Reply Quote
                    • First post
                      Last post

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