snappyHexMesh并行后导致对topoSet建立的faceZone流量监测不准!
-
各位老师同学好,我想通过topoSet建立faceZone监测内部面的流量,但是出现了以下问题:
- 当snappyHexMesh不是并行时,对faceZone流量监测是准的,使用的脚本是:
blockMesh
surfaceFeatureExtract
snappyHexMesh
topoSet
checkMesh
decomposePar
mpirun -np 32 icoFoam -paralle
reconstructPar- 但是,当使用snappyHexMesh并行时,就会出现对faceZone流量监测不准的情况,此时使用的脚本是:
blockMesh
surfaceFeatureExtract
decomposePar
mpirun -np 32 snappyHexMesh -parallel
reconstructParMesh -constant -noZero
topoSet
checkMesh
rm -rf processor*
decomposePar
mpirun -np 32 icoFoam -parallel
reconstructPar希望各位老师同学给点建议,谢谢🙏
-
@MingfengWang 在 snappyHexMesh并行后导致对topoSet建立的faceZone流量监测不准! 中说:
就会出现对faceZone流量监测不准的情况
差多少。1%?5%?还是20 30%?
监测内部面的流量
怎么监控的
-
@李东岳 感谢李老师的回复!
- 监控方法:
- 用topoSet建立一个内部面faceZone,该面垂直于流动方向,平行于出入口
- 使用surfaceFieldValue监控,具体如下:
flowRateFaceZone { type surfaceFieldValue; libs (fieldFunctionObjects); operation sum; regionType faceZone; name middleFace; fields ( phi ); writeFields false; }
- 误差
- snappyHexMesh单核时,内部面的流量等于出入口的流量,为2.093200e-13 m3/s
- snappyHexMesh并行时,内部面流量6.733410e-14 m3/s,出入口流量为2.093200e-13 m3/s
- 误差较大,差了一个数量级
-
@李东岳
我测试了一下,在服务器上模拟时,当核心数为4、8时监控的内部面上的流量正常。但是,当核心数为16、32、64时监控的内部面上的流量出错,且核心数越多误差越大,最大误差在一个数量级。以上使用的监控方法为在controlDict文件中写入以下代码:
flowRateFaceZone { type surfaceFieldValue; libs (fieldFunctionObjects); operation sum; regionType faceZone; name middleFace; fields ( phi ); writeFields false; }
另外,我也尝试着使用另外一种方法,将flowRateFaceZone写入到controlDict中,具体如下:
#includeFunc flowRateFaceZone(name=middleFace)
结果还是不行,没有结果输出。
最后,还使用了后处理命令 "postProcess -func "flowRateFaceZone(name=middleFace)",同样还是没有结果输出。
求李老师指点,谢谢!