You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何分离存储非结构化网格与动态单元数据并关联(兼容ParaView)

分离非结构化网格与动态单元数据的存储方案(兼容ParaView)

一、VTK原生实现方法

VTK的XML格式体系完全支持网格与场数据分离存储,核心是用.pvtu文件做索引,链接独立的网格和场数据文件:

  • 第一步:单独存储网格
    把非结构化网格导出为一个.vtu文件,仅保留几何拓扑信息,不包含动态单元数据。

  • 第二步:单独存储动态场数据
    每个时间步的单元数据单独存为一个.vtu文件,这类文件仅包含单元数据,不重复存储网格。在XML结构中通过Source属性指定网格文件的路径即可,示例核心结构如下:

    <VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian">
      <UnstructuredGrid>
        <Piece Source="./base_grid.vtu"> <!-- 引用网格文件路径 -->
          <CellData>
            <DataArray type="Float32" Name="DynamicCellData" format="binary"/>
            <!-- 仅存放当前时间步的单元数据 -->
          </CellData>
        </Piece>
      </UnstructuredGrid>
    </VTKFile>
    
  • 第三步:用.pvtu统一管理
    创建一个.pvtu文件,列出所有场数据的.vtu文件路径,ParaView加载该文件时会自动关联共享网格,避免重复加载:

    <VTKFile type="PUnstructuredGrid" version="1.0" byte_order="LittleEndian">
      <PUnstructuredGrid GhostLevel="0">
        <PPoints>
          <DataArray type="Float32" Name="Points" NumberOfComponents="3"/>
        </PPoints>
        <PCellData>
          <DataArray type="Float32" Name="DynamicCellData"/>
        </PCellData>
        <Piece Source="./timestep_0.vtu"/>
        <Piece Source="./timestep_1.vtu"/>
        <!-- 依次添加所有时间步的场数据文件 -->
      </PUnstructuredGrid>
    </VTKFile>
    

另外也可以用.vtm(多块数据集文件)组织,将网格作为一个基础块,每个场数据作为引用该网格的子块,同样能实现分离存储。

二、替代格式:Ensight Gold

如果觉得VTK XML配置繁琐,Ensight Gold是ParaView完美兼容的替代选择,它天生采用网格与数据分离的设计:

  • 网格存储为.geo或.unv文件;
  • 每个时间步的单元数据单独存为.data文件;
  • 主.case文件会明确指定网格路径与所有场数据的关联关系,加载.case文件即可自动关联网格与所有数据,无需重复存储网格。

三、ParaView使用提示

无论采用哪种格式,直接加载对应的索引文件(.pvtu/.vtm/.case)即可,ParaView会自动处理共享网格的加载,不会占用冗余内存存储重复数据。

内容的提问来源于stack exchange,提问作者Marseille

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 08:05:54