Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. 怎么对标量场进行体积积分求总量

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

已定时 已固定 已锁定 已移动 OpenFOAM
5 帖子 3 发布者 6.6k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • A 离线
    A 离线
    asininno
    写于 最后由 编辑
    #1

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

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #2

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

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

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

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • 浪 离线
    浪 离线
    浪迹天大
    写于 最后由 编辑
    #3

    两种方法,一个是在代码里加入一些操作,然后输出得到的量。另一个是使用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 条回复 最后回复
  • 浪 离线
    浪 离线
    浪迹天大
    写于 最后由 编辑
    #4

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

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

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #5

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

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

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

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]