我在理解/管理VTK中.vtu文件的大小时遇到问题。我需要为具有数百万个单元和节点的六面体网格编写CFD输出。所以,我正在寻找提高存储效率的方法。我从简单的测试用例开始。
案例1:80x40x40六面体网格,每个六面体有8个点。因此,总共128000个单元和1024000个点。我们称之为C1.vtu。
案例2:80x40x40六面体网格,只有唯一的点。因此,128000个单元格和136161个点。我们称之为C2.vtu。
我在每种情况下为每个点存储一个矢量场(速度)。我使用vtkFloatArray来获取这些数据。 C1.vtu的大小是7.5 MB,C2.vtu文件的大小是3.0MB。
这不是我创建C2.vtu时的预期。由于我在Case2中只存储了大约13%(Case1)的点,我预计C2.vtu会相应减少(至少5次)。但是,减少量仅为2.5倍。
我想了解内部发生了什么。此外,我感谢任何有关进一步减小文件大小的见解。
我在Ubuntu12.04上使用vtk6.2和C ++。
答案 0 :(得分:0)
听起来你有compression enabled in the writer; writer->GetCompressor()
返回非NULL指针吗?如果是这样,那几乎肯定是文件大小不同的原因。如果没有压缩,我希望您报告的文件大小更大。如上所述,非结构化存储会增加连接开销。考虑你的网格C1和C2:
C1
C2