CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    怎么对标量场进行体积积分求总量

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

      如题,不用paraFoam处理,怎么求某个标量在整个计算区域的总量

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

        标量场进行体积积分求总量

        岂不就是
        \begin{equation}
        \int T \rd V = \sum T \delta V
        \end{equation}

        scalarField results("result", mesh.cells().size());
        
        results = T * mesh.V();
        

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

        1 条回复 最后回复 回复 引用
        • 浪
          浪迹天大 最后由 编辑

          两种方法,一个是在代码里加入一些操作,然后输出得到的量。另一个是使用functionObject后处理。

          第一种方法:

          使用举例

          scalar sumHRRate = gSum(chemistry.dQ()());//总放热率等于每个网格放热率之和,这里的dQ单位是J/s
          totalHeatRR_ = fvc::domainIntegrate(chemistryQdot_);
          dimensionedScalar totalMass = fvc::domainIntegrate(rho);//总质量等于密度乘以网格体积,然后求和。
          p.weightedAverage(mesh.V()).value()  //就是缸内压力的平均值
          

          gSum的功能是全场求和。
          domainIntegrate 的功能是对某个物理量,乘以其网格体积,然后对所有网格求和。domainIntegrate(df) = gSum(fvc::volumeIntegrate(df))//df是被操作的场。
          volumeIntegrate 的功能是对每个网格的某个物理量,乘以其网格体积,然后形成一个新的场。volumeIntegrate(df)=df.mesh().V()*df.field()//df是被操作的场
          加权平均 weightedAverage: p.weightedAverage(weightField) = gSum(weightField*p)/gSum(weightField)//这里的p是被操作的场,操作之后,dimension信息仍在。

          第二种方法:

          在 controlDict 中加入:

           functions
           {
               my_name
               {
                   type    volFieldValue;
                   functionObjectLibs    ("libfieldFunctionObjects.so");
          		fields (Qdot);
          		writeFields no;
          		operation volIntegrate;
               }
           }
          

          然后在solver运行时,就会自动在case目录下生成postProcessing信息。
          或者运行完之后,也可以用过运行OF自带的后处理工具postProcess: postProcess -fields '(Qdot)'
          我这里的Qdot单位是[kg/m/s3],体积分之后的单位是J/s。

          区别

          上述两个方法使用上的不同之处在于functionObject可以方便地对某个特定的Zone进行操作。加入这两个关键词:regionType和name。
          functionObject 中针对 volFieldValue 一共有以下这些操作:

          none                 | No operation
          sum                  | Sum
          weightedSum          | Weighted sum
          sumMag               | Sum of component magnitudes
          average              | Ensemble average
          weightedAverage      | Weighted average
          volAverage           | Volume weighted average
          weightedVolAverage   | Weighted volume average
          volIntegrate         | Volume integral
          weightedVolIntegrate | Weighted volume integral
          min                  | Minimum
          max                  | Maximum
          CoV                  | Coefficient of variation: standard deviation/mean
          

          OpenFOAM 学习交流:https://openfoam.top

          1 条回复 最后回复 回复 引用
          • 浪
            浪迹天大 最后由 编辑

            @ 李东岳 之前可以编辑已发布的帖子,现在没有这个功能了?

            OpenFOAM 学习交流:https://openfoam.top

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

              嗯,之前属于设置上的疏忽,现在已经更改,参见 http://www.cfd-china.com/topic/223/

              “CFD中文网”为了知识的可追溯性,在用户发帖10分钟后不可更改以及删除帖子,因此在发帖、回帖之前,请对内容仔细考量,有删帖需求请联系我;

              类似制度参考小木虫和cfd-online

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

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