问题背景
计算完成一个算例后,需要对结果进行后处理。有时我们想要得到特定位置上的变量值,一般是输出成可读的文件,既可以查看某个位置处的变量值大小,也方便使用其它工具继续对输出的数据做处理。那如何使用ParaView输出仿真结果中特定位置的变量值呢?
下面以OpenFOAM中经典的cavity算例为例,演示怎样在ParaView中输出特定位置的变量值,特定位置在这里指的是特定点、特定线、特定面及特定体积。
首先打开cavity算例,然后在其上应用Probe Location过滤器,设置好点坐标后点应用,就会弹出SpreadSheetView1,如下图所示。
其实在右侧的SpreadSheetView1中已经可以看到查询点的速度和压力值,如果想保存成文件形式,可以点击箭头所指的保存输出按钮,会弹出如下对话框:
设置好保存的位置,选择保存文件的格式,一般*.csv格式就可以,输入文件名点击OK,会弹出如下对话框:
如果想要输出所有时间步的数据,需要勾选上Write Time Steps。如果想输出网格点上的数据就选Points,如果想输出网格体心的数据就选Cells,如果想输出场数据就选Field Data,一般前两个用的最多。这里我选择网格点上的数据,所以是Points。最终数据按照每一时间步保存成了多个文件,如下所示。熟悉cavity算例的同学应该清楚,这个算例官方默认的结果就是5个时间步,所以每一时间步的结果都输出出来了。
文件point4.csv里的内容如下所示,可以看出点坐标、速度分量值及压力值均已输出。
首先选中最初导入的controlDict节点,在其上应用Plot Over Line过滤器,设置好线的位置后点应用,弹出LineChartView1,如下所示:
确保PlotOverLine1节点处于选中状态,然后点击保存输出按钮,按照上述设置保存输出线上的数据。下面是截取的文件中的部分内容,包含了线上点的坐标值及对应的速度分量和压力值。
再次选中controlDict节点,在其上应用Extract Block过滤器,提取最上面的movingWall边界,如下所示:
movingWall上面一共有42个点,这个信息可以从Information面板中查看,后面我们就看看输出的点是不是42个。
在ExtractBlock1节点选中的状态下,选择保存输出,文件内容如下,同样包含了点坐标及对应位置的速度分量和压力值,而且一共有42个点,和我们上面看到的点数相同。
如果想要所有体积的变量值都输出,这样最简单啦,直接点保存输出就好了,什么多余的操作也不用。如果我们想输出特定区域的变量值,这就需要那些能够对体积做处理的过滤器了,比如Clip、Threshold、Extract Selection、Iso Volume等,可能还需要数据查询等更复杂的功能。不过输出特定体积的变量值不如输出点线面上的变量值应用的多,所以有时间了再补充。