У меня есть 5-мерная матрица в файле данных hdf5. Я хотел бы построить эти данные, используя paraview. Решение, которое я имею в виду, - это описание данных в формате Xdmf.
Пятимерная матрица имеет следующую структуру:
matrix[time][type][x][y][z]
Индекс "время" указывает временной шаг. "Тип" выбирает матрицы для разных типов частиц. И x,y,z описывает пространственные координаты сетки. Значение матрицы - это скаляр, который я хотел бы построить.
Мой вопрос: как я могу выбрать конкретную трехмерную матрицу для заданного временного шага и ввести ее для построения, используя формат xdmf? В идеале временной шаг может быть представлен функциональностью <time> Xdmf.
Я попробовал функцию "гиперлаб" xdmf, но, похоже, это не уменьшает размерность, до которой мне нужно построить сетку.
Я также ознакомился с функциональностью "SubSet", но не понял, как ее использовать, прочитав официальную документацию по адресу xdmf.
Ответ 1 · рейтинг 3 · mel
С помощью списка рассылки 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.