不使用xdmf

时间:2015-06-03 09:56:12

标签: vtk hdf5 netcdf paraview

使用xvmf

使用Paraview读取netcdf文件

我曾经使用xdmf脚本解析netcdf文件,以便在paraview上创建3DSMesh。最重要的是,我添加了标量或矢量字段。 (因此3DSMesh提供物理坐标)。

  

我从不认为这是实际做到这一点的最佳方法。它有效,所以我很好。 如果有更方便的方式,请告诉我。

我可以使用以下脚本创建三维网格。

<?xml version="1.0" ?>
<!DOCTYPE Xdmf SYSTEM "Xdmf.dtd" []>
<Xdmf xmlns:xi="http://www.w3.org/2001/XInclude" Version="2.0">
   <Domain>
      <Grid Name="gridxyz">
        <Topology TopologyType="3DSMesh" NumberOfElements="0032 0032 0063">
        </Topology>
<!-- Read Coordinates -->
        <Geometry GeometryType="X_Y_Z">
           <DataItem Name="X" Format="HDF" NumberType="Float" Precision="8" Dimensions="0032 0032 0063">
                       grid_x.nc:/gridx
           </DataItem>
           <DataItem Name="Y" Format="HDF" NumberType="Float" Precision="8" Dimensions="0032 0032 0063">
                       grid_y.nc:/gridy
           </DataItem>
           <DataItem Name="Z" Format="HDF" NumberType="Float" Precision="8" Dimensions="0032 0032 0063">
                       grid_z.nc:/gridz
           </DataItem>
        </Geometry>
<!-- Read Scalar -->
<!-- Here I have bunch of scalars stored in different netcdf files -->
     </Grid>
   </Domain>
</Xdmf>

赞成

  • 当有人需要重复性任务时,xdmf脚本很棒。

缺点

  • 此脚本需要以某种方式生成或手动输入。当维度或变量名称发生变化时,需要更新

  • 如果我想阅读另一个标量,我需要添加一行

  • 网格在2个方向上可以是均匀的,在第3个方向上可以是统一的,不需要创建3D网格文件,但几何类型dx_dy_dz不足以实现这一点。

我在找什么

最近我意识到,我只需点击打开(Paraview4.3)即可打开带有paraview的netcdf文件。所以,我不再需要这些xdmf脚本(几年前我无法在Paraview上打开netcdf文件)

  

如何通过Paraview GUI创建3DSMesh。那可能吗?或者是否有任何其他简单/更快的方式(而不是编写python脚本)?   有没有办法读取一维坐标并使用它们创建三维几何?

1 个答案:

答案 0 :(得分:0)

这就是我设法做到的。当然,这不是最快的方式,但它对我有用。

当您打开NetCDF文件时,paraview会要求您选择一个阅读器,我总是使用 NetCDF文件通用和CF约定

之后,在点击“应用”按钮之前,您必须在下拉菜单中选择相应的“尺寸”

您的数据现在必须显示为UniformGrid,您的数据(X,Y,Z)为标量字段,因此您必须转换为网格以更具体的结构化网格。为此,请应用“ImageDataToPointSet”过滤器。

之后,应用“计算器”过滤器 选中“坐标结果” 字段并执行以下操作:

如果您的数据显示为X,Y,Z colummns,则在计算器字段中输入表达式

(X * iHat)+(Y * jHat)+(Z * kHat)

如果您的数据带有其他名称,请用这些名称替换x,y,z

表达式表示x在î向量的方向上,y在j向量的方向上,依此类推

希望它有所帮助!