长话短说,关于这个问题,有两个解决方案,一是将文件类型转换为VTK格式,二是采用github上的脚本,将OpenFOAM输出的位置文件转换成真实的颗粒的真实位置文件。
1. 转换为VTK格式
在OF中,将输出结果转变为VTK格式有自带的命令,十分方便
foamToVTK
注意上面的命令是转换成的VTK文件是二进制的,为了便于理解VTK的文件格式,以待后面读取VTK格式的文件,我们可以采用如下命令得到十进制的VTK文件。
foamToVTK -ascii
转换完成之后,我们将得到如下文件:
主要分为三大类:1、流场数据(dpm_stokes) 2、边界数据(low, up, frontAndBack, floorAndceiling) 3、粒子数据(lagrangian)
每类数据都有后缀数字,代表不同时刻的数据,注意这里的后缀数字其实代表的是迭代步数,而不是真实时间。
其文件的具体内容如下:
可以看到颗粒的直径,速度,位置等信息,读取起来还是比较简单的。
流场数据与上面类似,会有很多个POINTS,因为流场是欧拉场。
1.1 缺点
从上面可以看出,VTK格式比较大的一个问题是其文件重复过多,其每个时刻,都会输出边界文件,且其每个时刻的流场数据里都会有网格信息,但是对于一个固定边界的问题,其网格和边界在所有计算时间内都是不变的,我们想要的只有流场数据而已。
这个问题不知道能不能通过改变一下写入VTK格式的命令来改变,本人还没有尝试过。