CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    请教OpenFOAM获得某个面域(faceZone)的平均温度的方法

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

      我想使用functions获得某个面域平均温度,于是自己写了如下代码:

      surfaceFieldValue_out_core
      {
          type    surfaceFieldValue;
          libs    ("libfieldFunctionObjects.so");
      
          log     true;
          writeControl    writeTime;
          writeFields     true;
      
          regionType      faceZone;
          name            out_core;
          operation       weightedAreaAverage;
          surfaceFormat   foam;
      
          fields
          (
              T
          );
      }
      

      然而,运行之后报错,如下所示:

      [4] --> FOAM FATAL ERROR: 
      [4] surfaceFieldValue surfaceFieldValue_in_core: faceZone(in_core):
          Unable to process internal faces for volume field T
      

      似乎体积场的值不可以进行面域平均,这样的话,获得“面域平均”值该如何做到呢?望各位大佬不吝赐教,谢谢!

      OpenFOAM初学者,希望和大家共同交流

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

        可能你需要体平均。

        functions
        {  
            T
            {
                type            volFieldValue;
                libs            ("libfieldFunctionObjects.so");
                log             true;
                writeControl    writeTime;
                writeFields     true;
                regionType      all;
                operation       volIntegrate;
                fields
                (
                    T
                );
            }
        }
        

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

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

        D Z 2 条回复 最后回复 回复 引用
        • D
          D.Benjamin @李东岳 最后由 编辑

          @东岳 谢谢东岳老师,体平均的方法我会,但是我想要知道面平均的结果。比如说,我想知道进出口平均温度(应该是指的进出口那个面的平均温度),而体平均得到的是一个区域(或者说一个块)的平均。OpenFOAM没办法做到这一点吗?

          OpenFOAM初学者,希望和大家共同交流

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

            postProcess -func 'patchAverage(name='outlet', weightedAlpha)'

            试试这个后处理?

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

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

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

              @东岳 老师,这个指令不行,因为我监测的不是边界(patch),而是自己构建的一个faceZone,是一个内部面。应该是目前OpenFOAM尚未有这个功能吧

              OpenFOAM初学者,希望和大家共同交流

              1 条回复 最后回复 回复 引用
              • M
                mohui @D.Benjamin 最后由 编辑

                @D-Benjamin 我觉得这个可以在paraview里面处理,先把这个面提出来,然后对这个面的温度进行积分就是了。我不知道这样子处理对不对@东岳

                D 1 条回复 最后回复 回复 引用
                • D
                  D.Benjamin @mohui 最后由 编辑

                  @mohui 你好,paraview确实可以截取一个面,然后进行积分,但是我发现一个问题:
                  当我想获得某个faceZone上面的流率,我分别采用functionObject和paraview的方法来做
                  functions的方法和结果如下:

                  functions
                  {
                  #includeFunc flowRateFaceZone(name=in_core)
                  … other function objects here …
                  }
                  

                  结果:

                  # Region type :     faceZone in_core
                  # Faces  :          34
                  # Area   :          1.844282222040e-02
                  # Time              	sum(phi)
                  1                   	1.923278992112e-05
                  2                   	4.681282016134e-05
                  ……
                  50000               	6.288750194955e-02
                  

                  下面是使用paraview截取该面,进行Filters --> Integrate variables的结果:
                  cut.PNG

                  结果显示,面域大小(Area)0.0184428是一样的,但是所得的结果却不一样,一个是0.0628875,一个是0.0629128,搞不清哪种方法获得的流率才是正确的。

                  OpenFOAM初学者,希望和大家共同交流

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

                    @D-Benjamin 在 请教OpenFOAM获得某个面域(faceZone)的平均温度的方法 中说:

                    functionObject

                    这个看起来是标量,你那个是矢量

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

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

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

                      @东岳 老师,functionObject的求流率的方法是对面域通量phi求和,paraview是对面域求积分,哪个更能代表流率呢?

                      OpenFOAM初学者,希望和大家共同交流

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

                        @D-Benjamin
                        没向你这么验证过,不过我更相信代码出来的标量,paraview显示的是矢量啊?

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

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

                        1 条回复 最后回复 回复 引用
                        • Z
                          ZZ给我趴下 @李东岳 最后由 编辑

                          @李东岳 李老师,您好,请问如果我只想在某个方向进行体平均呢,然后每个时间段输出一次数据,是不是只要更改regionType就好了,那该如何更改呢?

                          马乔 1 条回复 最后回复 回复 引用
                          • 马乔
                            马乔 副教授 @ZZ给我趴下 最后由 编辑

                            @zz给我趴下 可以试下columeAveraged

                            装逼没输过,吵架没赢过!

                            Z 1 条回复 最后回复 回复 引用
                            • Z
                              ZZ给我趴下 @马乔 最后由 编辑

                              @马乔 好的,谢谢您。

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