我正在尝试编写一个非结构化网格(.pvtu
/.vtu
)并将其可视化,但我似乎无法得到所需的点和单元格vtkGhostType
来获得我想要的结果。
从我们的代码中,我们使用了一个单元格/元素重叠。因此,多个域包含相同的单元格,但重要的是没有一个域是这些共享单元的“主”。此外,我们解决了数据在顶点,这意味着我们也有重复的节点。然而,这里有一个‘奴隶-主人’关系与一个‘主人’和潜在的多个‘奴隶’。我想要的是删除重复(从)节点,但保留至少一个重复的单元格。
我的.pvtu文件包含以下内容:
<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
(注意5
的从节点Volume
值不正确,不应该呈现)。
<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
,因为我不希望在插值中使用它们。对于上述文件,我可以获得两种解决方案,这两种解决方案都不是最佳的:
0
共享的单元格CellData:vtkGhostType
,但在一个.vtu
中除外,并设置为0
。这给了我以下结果:
当应用domain 1
滤波器时,从RemoveGhostInfomration
中移除两个从顶点。但是,正如您注意到的,其中一个从节点上的卷被设置为5
,其中应该是3
。也就是说,来自domain 0
的奴隶仍然存在。
CellData:vtkGhostType
和1
--给我以下结果:
应用相同的滤波器,得到正确的顶点数据,并删除所有从节点。然而,现在所有的细胞都被移除。从视觉的角度来看是不可取的。
正确的结果应该是8个节点(没有从节点)、3个单元(不重复)和一个从左到右线性变化从1到4的卷标量字段,如下图所示:
发布于 2022-04-04 11:32:14
我在试着理解这个问题。如果我出了什么问题,请纠正我。
中间的单元有两个版本:每个非结构化网格一个版本,每个单元格的每个版本都有部分好的点值。您想要的是通过从两个单元格中挑选樱桃来显示正确的点数。
在呈现时,不能在单元格之间混合和匹配点。您需要做的是找到一种方法,将所有正确的点值迁移到一个非结构化网格,并消除其余的点值。你可以用MPI做这个。
我应该补充一点,对非结构化网格的消隐不是在VTK中实现的。消隐只适用于结构化网格类型(vtkImageData、vtkUniformGrid、vtkRectilinearGrid和vtkStructuredGrid)。所以vtkDataSetAttributes::HIDDENCELL对非结构化网格不做任何操作。只有vtkDataSetAttributes::DUPLICATECELL在呈现时有效果。重复单元格假设映射到单元格/点的数据是有效的,可以由筛选器使用。
https://stackoverflow.com/questions/67106766
复制相似问题