You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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生成切片的正常绘图:
    ParaView生成的VTP切片matplotlib绘图结果
  • OpenFOAM libsampling生成切片的异常绘图:
    OpenFOAM libsampling生成的VTP切片matplotlib绘图结果

OpenFOAM的VTP切片导出参数包括cellPoint、triangulated(true/false)、interpolated(true/false)等,希望得到相关建议或提示。


内容的提问来源于stack exchange,提问作者Gabriel Axtmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 22:25:17