我正在尝试为Matlab开发一个xdmf + hdf5 API,以便将有限元数据转换为Paraview的可读格式。虽然当我在同一个文件中写入不同的字段时遇到一些问题,特别是当我尝试可视化来自高斯点的字段时。
到目前为止,我能够编写节点数据{Scalar,Vector,Tensor和Tensor6}和单元数据{Scalar,Vector,Tensor和Tensor6},如下所示:
<Attribute Name="Phi" Center="Node" AttributeType="Scalar">
<DataItem Format="HDF" NumberType="Float" Precision="8" Dimensions="16">
h5Data_test4_v1.h5:/FIELDS/1/processor1/Phi
</DataItem>
</Attribute>
<Attribute Name="Material" Center="Cell" AttributeType="Scalar">
<DataItem Format="HDF" NumberType="Float" Precision="8" Dimensions="18">
h5Data_test4_v1.h5:/FIELDS/1/processor1/Material
</DataItem>
</Attribute>
根据http://www.xdmf.org/index.php/XDMF_Model_and_Format对有限元函数的要求,我已经实现了一个Matlab函数来将不连续的galerkin(DG)字段写入xdmf文件,如下所示:
<Attribute ItemType="FiniteElementFunction" ElementFamily="DG" ElementDegree="1" ElementCell="triangle" Name="Sclng_cell" Center="Other" AttributeType="Scalar">
<DataItem Name="Index" Format="HDF" NumberType="Int" Precision="8" Dimensions="18 3">
h5Data_test4_v2.h5:/FIELDS/1/processor1/Sclng_cell/Sclng_cell_Dofmap
</DataItem>
<DataItem Name="Value" Format="HDF" DataType="Float" Precision="8" Dimensions="54">
h5Data_test4_v2.h5:/FIELDS/1/processor1/Sclng_cell/Sclng_cell_Valmap
</DataItem>
</Attribute>
这个字段来自于正交高斯点到节点的插值,它应该用有限元形状函数可视化。
如果我只写这个字段,Paraview会正确读取信息,我能够看到不连续的字段。但是,当我在同一个xdmf文件(节点字段和DG字段)中写入多个字段时,它会抛出错误,表示尺寸与元素数量不匹配。
我在互联网上搜索过,但XDMF.org提供的信息很差。我找不到任何帮助。我应该如何将“FiniteElementFunction”类型的信息传递给Paraview?我做错了吗?
我在Windows 10和Matlab 2016b上使用Paraview 5.5.1 64位。
提前致谢。