用Xdmf描述5维hdf5矩阵

梅尔

我在hdf5数据文件中有一个5维矩阵。我想使用paraview绘制此数据。我想到的解决方案是通过Xdmf格式描述数据。

5维矩阵的结构如下:

matrix[time][type][x][y][z]

“时间”索引指定时间步长。“类型”为不同的粒子类型选择矩阵。x,y,z描述网格的空间坐标。矩阵的值是我要绘制的标量。

我的问题是:如何使用xdmf格式为给定的时间步长选择特定的3维矩阵并键入以进行绘制?理想情况下,时间步长可以由<time>Xdmf功能表示。

我尝试了xdmf的“ hyperslab”功能,但这似乎并没有降低尺寸的可比性,而我需要绘制网格。

我还查看了'SubSet'功能,但是通过阅读xdmf的官方文档,我不明白如何使用它

梅尔

借助Xdmf的邮件列表,我找到了适合我的解决方案。

我的输入矩阵是hdf5文件“ ana.h5”中的5角(1,2,12,6,6),我选择时间步0并键入1。

<?xml version="1.0" ?>
<!DOCTYPE Xdmf SYSTEM "Xdmf.dtd" []>
<Xdmf xmlns:xi="http://www.w3.org/2003/XInclude" Version="2.2">

 <Domain>
  <Topology name="topo" TopologyType="3DCoRectMesh" Dimensions="12 6 6"></Topology>
  <Geometry name="geo" Type="ORIGIN_DXDYDZ">
   <!-- ORigin -->
   <DataItem Format="XML" Dimensions="3">
    0.0 0.0 0.0
   </DataItem>
   <!-- DxDyDz -->
   <DataItem Format="XML" Dimensions="3">
    1 1 1
   </DataItem>
  </Geometry>

  <Grid Name="TimeStep_0" GridType="Uniform">
   <Topology Reference="/Xdmf/Domain/Topology[1]"/>
   <Geometry Reference="/Xdmf/Domain/Geometry[1]"/>
   <Time Value="64"/>

   <Attribute Type="Scalar" Center="Cell" Name="Type1">
    <!-- Result will be 3 dimensions -->
    <DataItem ItemType="HyperSlab" Dimensions="12 6 6 ">
    <!-- The source is 5 dimensions -->
    <!-- Origin=0,1,0,0,0  Stride=1,1,1,1,1 Count=1,1,12,6,6 -->
    <DataItem Dimensions="3 5" Format="XML">
     0 1 0 0 0
     1 1 1 1 1
     1 1 12 6 6
    </DataItem> 
    <DataItem Format="HDF" NumberType="UInt" Precision="2" Dimensions="1 2 12 6 6 ">
     ana.h5:/density_field
    </DataItem>
   </DataItem>
  </Attribute>
</Grid>
</Domain>
</Xdmf>

所得矩阵为3维(12,6,6),可通过视点绘制。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章