首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用.vtu去除vtkGhostType文件中的并行鬼点

用.vtu去除vtkGhostType文件中的并行鬼点
EN

Stack Overflow用户
提问于 2021-04-15 02:28:28
回答 1查看 175关注 0票数 0

我正在尝试编写一个非结构化网格(.pvtu/.vtu)并将其可视化,但我似乎无法得到所需的点和单元格vtkGhostType来获得我想要的结果。

从我们的代码中,我们使用了一个单元格/元素重叠。因此,多个域包含相同的单元格,但重要的是没有一个域是这些共享单元的“主”。此外,我们解决了数据在顶点,这意味着我们也有重复的节点。然而,这里有一个‘奴隶-主人’关系与一个‘主人’和潜在的多个‘奴隶’。我想要的是删除重复(从)节点,但保留至少一个重复的单元格。

我的.pvtu文件包含以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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值不正确,不应该呈现)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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,因为我不希望在插值中使用它们。对于上述文件,我可以获得两种解决方案,这两种解决方案都不是最佳的:

  1. 标记所有与0共享的单元格CellData:vtkGhostType,但在一个.vtu中除外,并设置为0。这给了我以下结果:

当应用domain 1滤波器时,从RemoveGhostInfomration中移除两个从顶点。但是,正如您注意到的,其中一个从节点上的卷被设置为5,其中应该是3。也就是说,来自domain 0的奴隶仍然存在。

  1. 标记所有共享单元格CellData:vtkGhostType1 --给我以下结果:

应用相同的滤波器,得到正确的顶点数据,并删除所有从节点。然而,现在所有的细胞都被移除。从视觉的角度来看是不可取的。

正确的结果应该是8个节点(没有从节点)、3个单元(不重复)和一个从左到右线性变化从1到4的卷标量字段,如下图所示:

EN

回答 1

Stack Overflow用户

发布于 2022-04-04 11:32:14

我在试着理解这个问题。如果我出了什么问题,请纠正我。

中间的单元有两个版本:每个非结构化网格一个版本,每个单元格的每个版本都有部分好的点值。您想要的是通过从两个单元格中挑选樱桃来显示正确的点数。

在呈现时,不能在单元格之间混合和匹配点。您需要做的是找到一种方法,将所有正确的点值迁移到一个非结构化网格,并消除其余的点值。你可以用MPI做这个。

我应该补充一点,对非结构化网格的消隐不是在VTK中实现的。消隐只适用于结构化网格类型(vtkImageData、vtkUniformGrid、vtkRectilinearGrid和vtkStructuredGrid)。所以vtkDataSetAttributes::HIDDENCELL对非结构化网格不做任何操作。只有vtkDataSetAttributes::DUPLICATECELL在呈现时有效果。重复单元格假设映射到单元格/点的数据是有效的,可以由筛选器使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67106766

复制
相关文章
子串和
给定一整型数列{a1,a2...,an},找出连续非空子串{ax,ax+1,...,ay},使得该子序列的和最大,其中,1<=x<=y<=n。
书童小二
2018/09/03
5430
leetcode最长回文子串_最长回文子串算法
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处
全栈程序员站长
2022/11/03
8030
回文子串
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
喜欢ctrl的cxk
2019/11/08
4100
字符串中查找子串_cstring查找子字符串
假设要从主串 s = “goodgoogle” 中找到 t = “google” 子串。根据我们的思考逻辑,则有:
全栈程序员站长
2022/09/24
3K0
字符串中查找子串_cstring查找子字符串
最长公共子串 / 子序列
本文记录寻找两个字符串最长公共子串和子序列的方法。 名词区别 最长公共子串(Longest Common Substring)与最长公共子序列(Longest Common Subsequence)的区别: 子串要求在原字符串中是连续的,而子序列则只需保持相对顺序,并不要求连续。 最长公共子串 是指两个字符串中最长连续相同的子串长度。 例如:str1=“1AB2345CD”,str2=”12345EF”,则str1,str2的最长公共子串为2345。 动态规划 如果 str1 的长度为
为为为什么
2022/08/10
4.6K0
最长公共子串 / 子序列
18:验证子串
18:验证子串 总时间限制: 1000ms 内存限制: 65536kB描述 输入两个字符串,验证其中一个串是否为另一个串的子串。 输入输入两个字符串, 每个字符串占一行,长度不超过200且不含空格。输出若第一个串s1是第二个串s2的子串,则输出(s1) is substring of (s2)  否则,若第二个串s2是第一个串s1的子串,输出(s2) is substring of (s1)  否则,输出 No substring。样例输入 abc dddncabca 样例输出 abc is
attack
2018/04/03
1.5K0
回文子串的个数_统计回文子串的个数
(1)从左往右,钉住最后一个字符。 “abaa”串:先考查中心子串“ba”不是回文串,就可以判定“abaa”不是回文子串; “baa”串:先考查中心子串“baa”不是回文,它是最外子串,不必向外扩散; “aa”串:考查中心子串中“aa”是回文,它是最外子串,不必向外扩散。 (2)从右边倒数第二个字符往左,钉住第一个字符。 “aba”串:考查中心子串“aba”,是回文,它是最外子串,不必向外扩展; “ab”串:考查子串“ab”,不是回文,它是最外子串,不必向外扩展; 这样下来,加上单个子串“a”,“b”,“a”,“a”4个,“abaa”中共包含6个回文子串。 1.2、输入描述 输入数据中有多个测试案例。每个案例是一个非空且长度不超过5000的字符串。 处理到文件结尾。 1.3、输出描述 在每行上打印该字符串中回文子串的个数。 1.4、输入样例 aba aa 1.5、输出样例 4 3 2、C++实现 #include <iostream> using namespace std; int main(int argc, char* argv[]) { char s[5000]; int p, i, Half, Left, Right, Count; while( cin>>s ) { i = strlen(s); Count = 0; //从左到右钉住最后一个 for(p=0; p<=i-1; p++) { Half = ((i-1)-p) / 2; //如果子串是奇数个 if( ((i-1)-p)%2 == 0 ) { Left = p + Half - 1; Right = p + Half + 1; } else { //如果子串是偶数个 Left = p + Half; Right = p + Half + 1; } while(Left >= p) { if( s[Left] == s[Right]) { Count++; //发现了一个回文串 Left--; Right++; } else { //如果不相等,立即终止,由中心向外扩散不可能会有回文串 break; } } } //从右到左钉住第一个 for(p=i-2; p>=1; p--) { Half = p / 2; //如果子串是奇数个 if(p%2 == 0) { Left = Half - 1; Right = Half + 1; } else //如果子串是偶数个 { Left = Half; Right = Half + 1; } while( Left >= 0 ) { if( s[Left] == s[Right] ) { Count++; //发现了一个回文串 Left--; Right++; } else { //如果不相等,立即终止,由中心向外扩散不可能会有回文串 break; } } } printf("%d\n",Count + i); } return 0; }
全栈程序员站长
2022/11/03
1.2K0
回文子串的个数_统计回文子串的个数
34:回文子串
34:回文子串 总时间限制: 1000ms 内存限制: 65536kB描述 给定一个字符串,输出所有长度至少为2的回文子串。 回文子串即从左往右输出和从右往左输出结果是一样的字符串,比如:abba,cccdeedccc都是回文字符串。 输入一个字符串,由字母或数字组成。长度500以内。输出输出所有的回文子串,每个子串一行。 子串长度小的优先输出,若长度相等,则出现位置靠左的优先输出。样例输入 123321125775165561 样例输出 33 11 77 55 2332 2112 5775
attack
2018/04/03
1.4K0
python最长回文子串动态规划_最长回文子串问题
遍历子串的复杂度是O(n^2),判断是不是回文串的复杂度是O(n),所以这个算法的复杂度是O(n^3)。
全栈程序员站长
2022/09/05
1.5K0
最长回文子串
class Solution { public: string longestPalindrome(string s) { if (s.size()==1 || !s.size()) return s; if (s.size()==2 && s[0]==s[1]) return s; int n = s.siz(); vector<vector<bool>> f(n, vector<bool>(n)); // 记录子串的起始索引和长度 int start=0,len=1; fo
lexingsen
2022/02/25
5520
最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。啥是回文串?就是字符可以看成是对称的,从左往右读和从右往左读是一样意思,比如:上海自来水来自海上。来看下下面的示例:
用户4456933
2021/06/01
6370
扩展kmp求最长回文子串_算法-字符串之最长回文子串
首先介绍一下什么叫回文串,就是正着读和倒着读的字符顺序都是一样的,eg:level,noon。而回文子串,顾名思义,就是主串中满足回文性质的子串。
全栈程序员站长
2022/08/23
8350
最长公共子串
思路一,利用动态规划的方法,列出全部结果来寻找规律,我们发现45度下滑,如果连续相等的话我们可以做递加,不但可以得出最长的字符串数量还可以知道字符的位置。
忧愁的chafry
2022/10/30
4820
最长公共子串
DS串应用—最长重复子串
求串的最长重复子串长度(子串不重叠)。例如:abcaefabcabc的最长重复子串是串abca,长度为4。
叶茂林
2023/07/30
2830
删除字符串中的子串
输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。
叶茂林
2023/07/28
2870
删除字符串中的子串
#103. 子串查找
内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 这是一道模板题。 给定一个字符串 A AA 和一个字符串 B BB,求 B BB 在 A AA 中的出现次数。 A AA 中不同位置出现的 B BB 可重叠。 输入格式 输入共两行,分别是字符串 A AA 和字符串 B BB。 输出格式 输出一个整数,表示 B BB 在 A AA 中的出现次数。 样例 样例输入 zyzyzyz zyz 样例输出 3 数据范围与
attack
2018/04/12
1.3K0
LeetCode - 最长回文子串
同样是三年前做的一道题目,很经典的字符串领域的算法题,求字符串的最长回文子串,当时我也是提交了好几次,并且看了相关的资料以后,才成功通过。
晓痴
2019/07/24
6760
LeetCode - 最长回文子串
最长公共子串
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
喜欢ctrl的cxk
2019/11/08
7760
本期题目:连续子串
给你两个字符串t和p 要求从t中找到一个和p相同的连续子串 并输出该子串第一个字符的下标
梦想橡皮擦
2023/04/21
2260
647. 回文子串
给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。 示例 1: 输入:"abc" 输出:3 解释:三个回文子串: "a", "b", "c" 示例 2: 输入:"aaa" 输出:6 解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa" class Solution { public int countSubstrings(Stri
CaesarChang张旭
2021/06/01
2820

相似问题

PHP5中简单而强大的图表库

40

简单的独立网站检查工具

40

强大而简单的在.NET中实现加密技术?

23

用于故障转移IIS服务的强大而准确的IIS报告工具

10

强大的windows计算器工具?

41
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文