Описание 5-мерной матрицы hdf5 с помощью Xdmf

У меня есть 5-мерная матрица в файле данных hdf5. Я хотел бы построить эти данные, используя paraview. Решение, которое я имею в виду, - это описание данных в формате Xdmf.

Пятимерная матрица имеет следующую структуру:

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

Индекс «время» указывает временной шаг. «Тип» выбирает матрицы для разных типов частиц. И x,y,z описывает пространственные координаты сетки. Значение матрицы - это скаляр, который я хотел бы построить.

Мой вопрос: как я могу выбрать конкретную трехмерную матрицу для заданного временного шага и ввести ее для построения, используя формат xdmf? В идеале временной шаг может быть представлен функциональностью <time> Xdmf.

Я попробовал функцию «гиперлаб» xdmf, но, похоже, это не уменьшает размерность, до которой мне нужно построить сетку.

Я также ознакомился с функциональностью «SubSet», но не понял, как ее использовать, прочитав официальную документацию по адресу xdmf.


person mel    schedule 19.04.2016    source источник


Ответы (1)


С помощью списка рассылки Xdmf я нашел решение, которое мне подходит.

Моя входная матрица 5-мерная (1,2,12,6,6) в файле hdf5 «ana.h5», и я выбираю временной шаг 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>

Результирующая матрица является трехмерной (12,6,6) и может быть построена с помощью paraview.

person mel    schedule 22.04.2016