2016-04-19 15 views
1

私はhdf5データファイルに5次元行列を持っています。私はパラビューを使用してこのデータをプロットしたいと思います。私が心に留めている解決策は、Xdmf形式でデータを記述することです。Xdmfで5次元hdf5行列を記述する

次のように5次元マトリクスは、構造化された:

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

「時間」インデックスが時間ステップを指定します。 「タイプ」は、異なる粒子タイプのマトリックスを選択します。そして、x、y、zはグリッドの空間座標を表します。行列の値は、私がプロットしたいスカラーです。

私の質問は次のとおりです。xdmf形式を使用して、特定のタイムステップで特定の3次元マトリックスを選択し、プロットするにはどうすればよいですか?理想的には、タイムステップはXdmfの<time>機能で表現できます。

私はxdmfの 'hyperslab'機能を試しましたが、それはgridallをプロットするためにdimensionallityを減らさないようです。

私は「SubSet」機能についても見てきましたが、それを使用する方法を理解していませんでした。公式のドキュメントxdmfを読んでください。

答えて

1

Xdmfのメーリングリストの助けを借りて、私のために働く解決策を見つけました。

マイ入力行列は、HDF5ファイル "ana.h5" で(1,2,12,6,6)5-DIMと私はタイムステップ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)であり、パラビューでプロットすることができます。

関連する問題