我曾经使用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>
此脚本需要以某种方式生成或手动输入。当维度或变量名称发生变化时,需要更新
如果我想阅读另一个标量,我需要添加一行
dx_dy_dz
不足以实现这一点。最近我意识到,我只需点击打开(Paraview4.3)即可打开带有paraview的netcdf文件。所以,我不再需要这些xdmf脚本(几年前我无法在Paraview上打开netcdf文件)。
如何通过Paraview GUI创建
3DSMesh
。那可能吗?或者是否有任何其他简单/更快的方式(而不是编写python脚本)? 有没有办法读取一维坐标并使用它们创建三维几何?
答案 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向量的方向上,依此类推
希望它有所帮助!