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



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


  • 管理员

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

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

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


  • 两种方法,一个是在代码里加入一些操作,然后输出得到的量。另一个是使用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
    


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


  • 管理员

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

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

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


登录后回复
 

与 CFD中文网 的连接断开,我们正在尝试重连,请耐心等待