Paraview旋转字段

时间:2018-01-31 06:25:16

标签: rotation transformation paraview

我使用的是Paraview 5.0.1。如果任何解决方案需要更新,我可以尝试。

我想以编程方式获得旋转坐标系中位移和应力的场图(以及相应的PlotOverLine)。

这样做的适当/方便/可能的方法是什么?

到目前为止,我为每个位移和应力分量创建了一个计算器过滤器。 例如,我在2D中使用了带有结果的计算器

(displacement.iHat)*cos(0.7853981625)+(displacement.jHat)*sin(0.7853981625)
(stress_3-stress_0)*sin(45.0*3.14159265/180)*cos(45.0*3.14159265/180)+stress_1*((cos(45.0*3.14159265/180))^2-(sin(45.0*3.14159265/180))^2)

它工作正常,但在几个方面很麻烦:

  1. 创建它们(每个组件一个过滤器)。
  2. 在单个XY图中绘制其中几个
  3. 导出它们(每个组件一个导出)。
  4. 有一种简单的方法吗?

    PS:Transform过滤器无法实现此目的。它会旋转视图,而不是字段。

1 个答案:

答案 0 :(得分:1)

两种解决方案:

  1. 丑陋,不合理的解决方案

    • 使用转换并选中"转换所有输入向量"
    • 添加计算器并添加虚拟阵列
    • 反过来使用转换,而不检查"转换所有输入向量"
  2. 正确解决方案: 在可编程过滤器中自己计算转换

    input = self.GetUnstructuredGridInput();
    output =  self.GetUnstructuredGridOutput();
    output.ShallowCopy(input)
    
    data = input.GetPointData().GetArray("YourArray")
    
    vec = vtk.vtkDoubleArray();
    vec.SetNumberOfComponents(3);
    vec.SetName("TransformedVectors");
    
    numPoints = input.GetNumberOfPoints()
    for i in xrange(0, numPoints):
        tuple = data.GetTuple(i)
        transform(tuple) # implement the transform in python
        vec.InsertNextTuple(tuple)
    
    output.GetPointData().AddArray(vec)