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

ParaView 5.10中涡量(Vorticity)无法显示的解决咨询

ParaView 5.10中3D场涡量可视化的正确方法
  • 正确配置Compute Derivatives过滤器

    1. 选中你的3D场数据,添加Compute Derivatives过滤器。
    2. 在过滤器属性面板里,将Derivative Type改为Vorticity(不要使用默认选项)。
    3. 在Input Vector中选择你要计算涡量的目标矢量场(比如速度场)。
    4. 点击Apply,之后在左侧数据树的Point Data或Cell Data下就能找到生成的Vorticity字段,直接在着色选项中选择它即可完成可视化。
  • 如果Compute Derivatives无效,用Programmable Filter手动计算
    以下是适配结构化网格的手动计算脚本示例(假设矢量场名为Velocity,存储在点数据中):

    import vtk.util.numpy_support as ns
    from vtk.numpy_interface import dataset_adapter as dsa
    import numpy as np
    
    input_data = dsa.WrapDataObject(self.GetInputDataObject(0, 0))
    vel = input_data.PointData['Velocity']
    nx, ny, nz = input_data.GetDimensions()
    coords = input_data.Points
    
    # 计算网格步长
    dx = coords[1][0] - coords[0][0]
    dy = coords[nx][1] - coords[0][1]
    dz = coords[nx*ny][2] - coords[0][2]
    
    # 将速度分量转为三维数组
    u = vel[:,0].reshape(nx, ny, nz)
    v = vel[:,1].reshape(nx, ny, nz)
    w = vel[:,2].reshape(nx, ny, nz)
    
    # 计算旋度(涡量)的三个分量:ωx = ∂w/∂y - ∂v/∂z;ωy = ∂u/∂z - ∂w/∂x;ωz = ∂v/∂x - ∂u/∂y
    ωx = (np.diff(w, axis=1)[1:-1,:,1:-1] / dy) - (np.diff(v, axis=2)[1:-1,1:-1,:] / dz)
    ωy = (np.diff(u, axis=2)[1:-1,1:-1,:] / dz) - (np.diff(w, axis=0)[:,1:-1,1:-1] / dx)
    ωz = (np.diff(v, axis=0)[:,1:-1,1:-1] / dx) - (np.diff(u, axis=1)[1:-1,:,1:-1] / dy)
    
    # 补全边界值(用边缘值填充,可按需调整)
    ωx_full = np.zeros((nx, ny, nz))
    ωx_full[1:-1,1:-1,1:-1] = ωx
    ωx_full[0,:,:] = ωx_full[1,:,:]
    ωx_full[-1,:,:] = ωx_full[-2,:,:]
    ωx_full[:,0,:] = ωx_full[:,1,:]
    ωx_full[:,-1,:] = ωx_full[:,-2,:]
    ωx_full[:,:,0] = ωx_full[:,:,1]
    ωx_full[:,:,-1] = ωx_full[:,:,-2]
    
    ωy_full = np.zeros((nx, ny, nz))
    ωy_full[1:-1,1:-1,1:-1] = ωy
    ωy_full[0,:,:] = ωy_full[1,:,:]
    ωy_full[-1,:,:] = ωy_full[-2,:,:]
    ωy_full[:,0,:] = ωy_full[:,1,:]
    ωy_full[:,-1,:] = ωy_full[:,-2,:]
    ωy_full[:,:,0] = ωy_full[:,:,1]
    ωy_full[:,:,-1] = ωy_full[:,:,-2]
    
    ωz_full = np.zeros((nx, ny, nz))
    ωz_full[1:-1,1:-1,1:-1] = ωz
    ωz_full[0,:,:] = ωz_full[1,:,:]
    ωz_full[-1,:,:] = ωz_full[-2,:,:]
    ωz_full[:,0,:] = ωz_full[:,1,:]
    ωz_full[:,-1,:] = ωz_full[:,-2,:]
    ωz_full[:,:,0] = ωz_full[:,:,1]
    ωz_full[:,:,-1] = ωz_full[:,:,-2]
    
    # 合并为涡量矢量
    vorticity = np.stack([ωx_full.flatten(), ωy_full.flatten(), ωz_full.flatten()], axis=1)
    
    # 添加到输出数据
    output.PointData.append(vorticity, 'Vorticity')
    
    1. 添加Programmable Filter,将上述代码粘贴到Script框中。
    2. 确认矢量场名称和你的数据匹配,点击Apply后就能生成Vorticity字段,正常选择着色即可。
  • 关键注意点
    确保你的输入数据是结构化网格格式(比如VTK StructuredGrid、NetCDF等),且矢量场的存储位置(点数据/单元数据)和脚本中的设置对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 15:05:32