问题描述
我正在尝试编写和可视化非结构化网格 (.pvtu
/.vtu
),但我似乎无法理解这一点,并且单元格 vtkGhostType
已计算得出我的结果想要。
在我们的代码中,我们使用 1 个单元格/元素重叠。因此,多个域包含相同的单元,但关键是没有域是这些共享单元的“主人”。此外,我们求解顶点处的数据,这意味着我们也有重复的节点。然而,这里有一种“主从”关系,与一个“主”和潜在的多个“从”。我想要的是删除重复的(从属)节点,但至少保留 1 个重复的单元格。
<VTKFile type="PUnstructuredGrid" version="1.0" byte_order="LittleEndian">
<PUnstructuredGrid>
<PPointData>
<PDataArray NumberOfComponents="1" type="Float64" Name="Volume" format="ascii">
</PDataArray>
<PDataArray type="UInt8" Name="vtkGhostType" format="ascii">
</PDataArray>
</PPointData>
<PCellData>
<PDataArray type="UInt8" Name="vtkGhostType" format="ascii">
</PDataArray>
</PCellData>
<PPoints>
<PDataArray NumberOfComponents="3" type="Float64" Name="Points" format="ascii">
</PDataArray>
</PPoints>
<PCells>
<PDataArray type="Int32" Name="connectivity" format="ascii">
</PDataArray>
<PDataArray type="Int32" Name="offsets" format="ascii">
</PDataArray>
<PDataArray type="Int32" Name="types" format="ascii">
</PDataArray>
</PCells>
<Piece Source="paraview_1_domain_0.vtu"/>
<Piece Source="paraview_1_domain_1.vtu"/>
</PUnstructuredGrid>
</VTKFile>
和两个.vtu文件,paraview_1_domain_0.vtu
(注意Volume
的slave节点5
值不正确,不应该被渲染)
<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian">
<UnstructuredGrid>
<Piece NumberOfPoints="6" NumberOfCells="2">
<PointData>
<DataArray type="Float64" NumberOfComponents="1" Name="Volume" format="ascii">
1.0000000000000000E-00
1.0000000000000000E-00
2.0000000000000000E-00
2.0000000000000000E-00
5.0000000000000000E-00
3.0000000000000000E-00
</DataArray>
<DataArray type="UInt8" Name="vtkGhostType" format="ascii">
0
0
0
0
3
3
</DataArray>
</PointData>
<CellData>
<DataArray type="UInt8" Name="vtkGhostType" format="ascii">
0
0
</DataArray>
</CellData>
<Points>
<DataArray type="Float64" NumberOfComponents="3" Name="Points" format="ascii">
0.0000000000000000E-00 0.0000000000000000E-00 0.0000000000000000E+00
0.0000000000000000E-00 1.0000000000000000E-00 0.0000000000000000E+00
1.0000000000000000E-00 0.0000000000000000E-00 0.0000000000000000E+00
1.0000000000000000E-00 1.0000000000000000E-00 0.0000000000000000E+00
2.0000000000000000E-00 0.0000000000000000E-00 0.0000000000000000E+00
2.0000000000000000E-00 1.0000000000000000E-00 0.0000000000000000E+00
</DataArray>
</Points>
<Cells>
<DataArray type="Int32" Name="connectivity" format="ascii">
0 2 3 1 3 5 4 2
</DataArray>
<DataArray type="Int32" Name="offsets" format="ascii">
4 8
</DataArray>
<DataArray type="Int32" Name="types" format="ascii">
9 9
</DataArray>
</Cells>
</Piece>
</UnstructuredGrid>
</VTKFile>
和paraview_1_domain_1.vtu
<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian">
<UnstructuredGrid>
<Piece NumberOfPoints="6" NumberOfCells="2">
<PointData>
<DataArray type="Float64" NumberOfComponents="1" Name="Volume" format="ascii">
2.0000000000000000E-00
2.0000000000000000E-00
3.0000000000000000E-00
3.0000000000000000E-00
4.0000000000000000E-00
4.0000000000000000E-00
</DataArray>
<DataArray type="UInt8" Name="vtkGhostType" format="ascii">
3
3
0
0
0
0
</DataArray>
</PointData>
<CellData>
<DataArray type="UInt8" Name="vtkGhostType" format="ascii">
1
0
</DataArray>
</CellData>
<Points>
<DataArray type="Float64" NumberOfComponents="3" Name="Points" format="ascii">
1.0000000000000000E-00 0.0000000000000000E-00 0.0000000000000000E+00
1.0000000000000000E-00 1.0000000000000000E-00 0.0000000000000000E+00
2.0000000000000000E-00 0.0000000000000000E-00 0.0000000000000000E+00
2.0000000000000000E-00 1.0000000000000000E-00 0.0000000000000000E+00
3.0000000000000000E-00 0.0000000000000000E-00 0.0000000000000000E+00
3.0000000000000000E-00 1.0000000000000000E-00 0.0000000000000000E+00
</DataArray>
</Points>
<Cells>
<DataArray type="Int32" Name="connectivity" format="ascii">
0 2 3 1 3 5 4 2
</DataArray>
<DataArray type="Int32" Name="offsets" format="ascii">
4 8
</DataArray>
<DataArray type="Int32" Name="types" format="ascii">
9 9
</DataArray>
</Cells>
</Piece>
</UnstructuredGrid>
</VTKFile>
参考https://blog.kitware.com/ghost-and-blanking-visibility-changes/和http://www.visitusers.org/index.php?title=Representing_ghost_data
我将从节点的 vtkGhostType
设置为 3
,因为我不希望它们用于插值。使用上述文件,我可以获得两种解决方案,但都不是最佳解决方案:
当应用 domain 1
过滤器时,RemoveGhostInfomration
中的两个从顶点被移除。但是,您会注意到其中一个从属节点的音量设置为 5
,它应该是 3
。 IE。 domain 0
的奴隶仍然存在。
- 用
CellData:vtkGhostType
标记所有共享单元格1
这给我以下结果:
应用相同的过滤器,获得正确的顶点数据,并删除所有从属。但是现在所有的单元格都被移除了。从可视化的角度来看,这是不可取的。
正确的结果应该是 8 个节点(没有从节点)、3 个单元(没有重复)和一个从左到右从 1 到 4 线性变化的体积标量场,如下图所示:
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)