ParaView是一款功能丰富且开源的三维数据可视化工具。用户可以快速构建可视化信息来分析数据,支持 3D 交互、和批处理等功能。同时支持各种类型电脑与集群的数据可视化分析。在科学计算领域尤其是后处理方面,有大量实际的应用。
ParaView支持了大量不同格式的输入文件,有我们常见的CGNS,UNV,NetCDF,VTK,TecPlot等格式,也有分子动力学软件LAMMPS结果等格式。对于有限元、有限体积这类工程仿真计算结果数据,笔者认为通用性和效率最好的是其自家的ParaView Data (pvd)格式,所以也在最近的WelSim版本中支持了pvd格式的结果数据导出。pvd文件本质是多个数据子文件的入口文件,在工程仿真领域常用的附属子文件是pvtu和vtu文件。
vtu文件是存储网格与结果数据的主要文件,支持ASCII和二进制的方式。这里的u表示是unstructured的非结构网格。WelSim几年前就已经支持了vtu格式的结果导出功能。在vtu文件格式基础上,VTK提供了基于并行机制pvtu格式,对于并行状态下的文件读写,利用多核机制提高文件处理效率。这个功能对于大型仿真项目是非常有意义的。所以,笔者认为目前通用性与效率最好的结果文件解决方案是pvd+pvtu+vtu的方式。WelSim也在最新的版本中支持了pvd结果数据的导出,对于复杂的瞬态分析结果,用户可以方便快捷地将结果导出到ParaView进行后续的分析与报告生成。数据格式pvd, pvtu, vtu三者之间的关系如图所示:
ParaView数据文件格式
ParaView数据文件(pvd)是建立在VTK体系之上的一个xml文件。其中,最主要是定义了每个子文件的时间,可用于在后处理中正确显示一个结果的时间。这点对于瞬态分析结果是非常有必要的。
每个属性的定义如下:
Type: 类型为Collection, 表示此文件还含有一组数据文件。
Version:版本,目前默认0.1。
Byte_order: 对于二进制存储形式,需要设置“BigEndian”或“LittleEndian”。具体取决于写入此文件的平台的字节顺序。大多数商品笔记本电脑和台式机使用小端字节序;旧的集群和超级计算机可能使用大端。
Compressor: 可选项。设置压缩方式,如“vtkZLibDataCompressor”。
Timestep: 浮点值。用于瞬态数据集的时间点。
Group: 可选。列出了创建此数据集的源、阅读器或过滤器的唯一分配标识符。
Part: 当前数据集这部分的标识号。是一个大于或等于 0 的整数值。
File: 此数据集中的子文件名。相对路径。
如图所示,下图是由WELSIM生成的pvd文件。包含了一个瞬态分析结果中的9个时间步。
pvtu文件是基于vtu文件的一个并行读写的拓展。当只有一个节点进行文件读写时,pvtu只会含有一个vtu文件。当有多个节点进行写入文件时,会有多个vtu文件生成,每个vtu文件中的节点与单元信息都不相同。将所有vtu文件的网格信息整合起来就是完整的分析场域。pvtu会定义一些头文件信息,比如节点,单元,结果信息。而详细的数据还是会存储在vtu中。
如图所示,下图是由WELSIM生成的pvtu文件。
vtu是数据存储的核心文件,包含节点,单元,结果数值的全部信息。可以是以二进制存储,以节省读写资源。也可以是ASCII存储,便于使用者阅读数据内容。下图是由WELSIM生成的二进制vtu文件。
WELSIM导出结果文件
在WELSIM导出pvd文件是很容易的。只需要在计算完成后。选择 Answer节点,点击右键,会显示“导出全部结果选项“。
选择Export All Results后,会提示输入文件名,同时可以选择导出格式为ASCII还是二进制格式。
之后就能看到所生成的结果文件了。
总结
ParaView数据格式pvd是一个通用性很好的网格与结果文件格式。在VTK和ParaView开源社区的支持下,也逐渐地被科学计算与工程仿真人员接受并大量使用。WelSim会保持对pvd结果文件导出功能的维护与增强。
WelSim不隶属于ParaView,VTK。和ParaView,VTK的开发者没有直接关系。这里引用ParaView,VTK仅用作技术博客文章与软件使用的参考。