OpenFOAM libsampling生成VTP切片matplotlib绘图异常求助
问题:OpenFOAM libsampling生成的VTP切片matplotlib绘图三角面顺序异常
我尝试用matplotlib将OpenFOAM的2D切片VTP文件绘制成tricontourf图,遇到以下情况:
- 通过ParaView创建VTP切片并保存后,绘图完全正常
- 使用OpenFOAM libsampling模块的cuttingPlane生成的运行时VTP文件,绘图会出现三角面顺序异常的问题
请问我遗漏了什么配置或处理步骤?
以下是我加载VTP文件的Python代码:
def loadVTPFile(filename): import vtk from vtk.util.numpy_support import vtk_to_numpy from vtk.util import numpy_support as npvtk reader = vtk.vtkXMLPolyDataReader() reader.SetFileName(filename) reader.Update() data = reader.GetOutput() points = data.GetPoints() npts = points.GetNumberOfPoints() x = vtk_to_numpy(points.GetData()) triangles= vtk_to_numpy(data.GetPolys().GetData()) ntri = triangles.size // 4 # number of cells tri = np.take(triangles,[n for n in range(triangles.size) if n%4 != 0]).reshape(ntri,3) n_arrays = reader.GetNumberOfPointArrays() for i in range(n_arrays): print(reader.GetPointArrayName(i)) X = vtk_to_numpy(points.GetData()) x=X[:,0] y=X[:,1] z=X[:,2] # Define the velocity components U=(u,v,w) U = vtk_to_numpy(data.GetPointData().GetArray('UMean')) u = U[:,0] v = U[:,1] w = U[:,2] magU=np.sqrt(u**2+v**2+w**2) p = vtk_to_numpy(data.GetPointData().GetArray('pMean')) Ma = vtk_to_numpy(data.GetPointData().GetArray('MaMean')) rho = vtk_to_numpy(data.GetPointData().GetArray('rhoMean')) return x,y,z,u,v,w,magU,p,Ma,rho,tri
两张对比图:
- ParaView生成切片的正常绘图:

- OpenFOAM libsampling生成切片的异常绘图:

OpenFOAM的VTP切片导出参数包括cellPoint、triangulated(true/false)、interpolated(true/false)等,希望得到相关建议或提示。
内容的提问来源于stack exchange,提问作者Gabriel Axtmann
相关产品推荐
相关产品推荐

