请问OF如何才能获得某个区域的平均温度?目前我知道的一个方法是打开算例运行后的一个时间点的T文件,将T文件的温度值相加,再除以温度点的个数,得到某个区域的平均温度。但是这样的方法太复杂了。有没有什么Utilities或者FunctionObjects可以做到的?期待各位的回复,谢谢!
这样计算的话,实际上是计算了网格 N 的平均,而不是体平均。我猜,体平均才是你想要的结果。
可以用 paraview ,很直接就可以计算,Filters --> Integrate variables ,在显示出来的窗口上面选择 Attribute 为 cell data 就可以了看到 volume 和变量的体积分,取出来除一下就可以了。
谢谢大佬,这是个很好的办法。但是我想请教是否可以通过代码的形式获得?因为目前我做的课题需要不断地提取某个区域的平均温度,如果每次通过paraview来获取的话,不仅效率低,而且每次都需要手动来获得。在课题的角度上是不允许的,因为需要重复这个操作上百次,编写python脚本程序获得某区域的平均温度是课题的一小部分工作。
可能你已经找到理想的答案了。但还是想分享一个用法:
volFieldValue1
{
type volFieldValue;
libs ("libfieldFunctionObjects.so");
log true;
writeControl writeTime;
writeFields true;
regionType cellZone;
name c0;
operation volAverage;
weightField alpha1;
fields
(
p
U
);
}
3 个赞
谢谢你的分享,我想要的就是这种FunctionObject或者Utilities可以做到的,便于代码操作,再次感谢
大神,请问一下,你上述提供的办法中的一行代码(如下所示)是什么意思?期待你的回复
weightField alpha1;
前辈你好,请教一个问题,上次从你那里取经,明白了对某个场求体积平均,获得某个区域的平均场。如果想要得到某个面积(faceZone)的平均温度,该如何做呢?再次感谢!
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
);
}
类似地,我采用上面您提供的方法,将volFieldValue改为surfaceFieldValue,但是运行会报错:
[4] --> FOAM FATAL ERROR:
[4] surfaceFieldValue surfaceFieldValue_in_core: faceZone(in_core):
Unable to process internal faces for volume field T
似乎体积场的值不可以进行面域平均,这样的话,“面域平均”岂不是一个不可操作的后处理,但是在网站上,似乎又提到面域平均是可以做到的。该网站给的说明不多,不知大神可否指点一二?祝好!
你好,请问你的这个问题解决了吗?能否分享一下,万分感激!
还没有,若是你找到了方法,期待你的回复与交流