绘制带孔的不规则 xy 数据的等高线

Plotting contour for irregular xy data with holes

最近两天我一直被这个问题困扰,到目前为止还没有找到解决办法。我有以下格式的数据:

x1, y1, val1
..  ..  ..
..  ..  ..
xn, yn, valn

val1, ..., valn是我在如下几何图形上模拟后得到的场量。

只有灰色区域是感兴趣的区域,而 blue/dark 蓝色区域不是(包括内部倒 L 形蓝色区域)。因此,数据的 x 和 y 坐标为 scattered/irregular,并且由于原始几何体中的孔而存在较大间隙。有没有办法得到这个数据的填充等高线图?在 Matlab 中尝试以下操作可以让我对原始多边形之外的三角形进行三角剖分。此外,它填补了我不想要的漏洞。

x = data(:,1);
y = data(:,2);
z = data(:,3);

%
dt = delaunayTriangulation(x,y) ;
tri = dt.ConnectivityList ;
xi = dt.Points(:,1) ;
yi = dt.Points(:,2) ;
F = scatteredInterpolant(x,y,z);
zI = F(xi,yi) ;
trisurf(tri,xi,yi,zI) 

另一种可能性是将数据导入 ParaView 并按照 Table-to-Points--> Delaunay Triangulation 2D 进行过滤。但是这个和Matlab有同样的问题。这些孔不是分析性的,无法通过使用一些数学表达式来用 NaNs 掩盖不需要的插值区域。

Paraview 似乎对此有 solution。虽然我没有使用有限元来求解 pde,但我可以在 GMsh 中为我的带孔几何体生成一个有限元网格。然后我在 ParaView 中导入我的 CSV 数据文件和 GMsh 网格文件(.vtk 格式)。以 Delaunay2D 的结果作为输入,使用数据集过滤器对我的字段数据进行重采样,只给我原始几何体上的轮廓。