【问题标题】:Visualization of 3-dimensional grid from X_Y_Z(seperate datasets) on Paraview without using xdmf不使用 xdmf 在 Paraview 上从 X_Y_Z(单独的数据集)可视化 3 维网格
【发布时间】:2015-08-17 11:09:47
【问题描述】:

使用 xdmf 使用 Paraview 读取 netcdf 文件

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

我从来没有想过实际上是否是最好的方法。它有效,所以我很好。 如果有更方便的方法请告诉我。

我可以使用以下脚本创建一个 3 维网格。

<?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 脚本非常适合需要重复性任务。

缺点

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

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

  • 网格可以在两个方向上统一,第三个方向不统一,无需创建 3D 网格文件,但几何类型 dx_dy_dz 不足以实现。

我在寻找什么

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

如何通过 Paraview GUI 创建3DSMesh。那可能吗?还是有任何其他简单/更快的方法(而不是编写 python 脚本)? 有什么方法可以读取 1D 坐标并使用它们创建 3D 几何?

【问题讨论】:

    标签: vtk hdf5 netcdf paraview


    【解决方案1】:

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

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

    之后,在点击“应用”按钮之前,您必须在下拉菜单中选择适当的“维度”

    您的数据现在必须显示为 UniformGrid,您的数据 (X,Y,Z) 为标量字段,因此您必须转换为 grid 以更具体地成为 StructuredGrid。为此,请应用 "ImageDataToPointSet" 过滤器。

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

    如果您的数据显示为 X、Y、Z 列,则将表达式放在计算器字段中

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

    如果您的数据以其他名称出现,请将 x、y、z 替换为这些名称

    表达式表示x在î向量的方向,y在j向量的方向等等

    希望对您有所帮助!

    【讨论】:

    • 感谢@leo 的回答,我不知道我可以选择这样的维度。这个很酷。我还发现example 可以使用 xdmf 从 netcdf 或任何其他文件中读取一维网格点。当您需要更复杂的网格时出现问题。在我有 x-coord 的情况下,你的方法对我很有用。在 y-dir 和 z-dir 中是同质的,但在 y-coord 上。在 x-dir 中不是同质的(因此 y-coord 应该是 2D)并且在 z-dir 中是同质的。我需要你有的计算器技巧。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 2016-09-01
    • 2015-08-07
    相关资源
    最近更新 更多