二维图的“高程”图 - paraview vtk

计算科学 视界
2021-12-21 07:04:11

我有一个通常的 vtk 文件,其中包含三角形网格和标量速度。

我想获得这种类型的地块:

在此处输入图像描述

类似于“海拔”的东西,但在paraview中我刚刚获得了平面图

在此处输入图像描述

我怎样才能获得像第一个一样的情节?

我用我的 vtk 文件示例编辑了我的消息。请注意,网格的点在平面 XY 中(因此它的第三个坐标为零),我想绘制速度和压力的第一个和第二个分量,每个分量都像“高度”(作为第一张图像)。

# vtk DataFile Version 2.0
Stokes Solution 2D
ASCII

DATASET UNSTRUCTURED_GRID
POINTS           13  DOUBLE
0.000000000000000E+000   0.000000000000000E+000  0.000000000000000E+000
1.00000000000000         0.000000000000000E+000  0.000000000000000E+000
1.00000000000000         1.00000000000000        0.000000000000000E+000
0.000000000000000E+000   1.00000000000000        0.000000000000000E+000
0.500000000000000        0.500000000000000       0.000000000000000E+000
0.000000000000000E+000   0.500000000000000       0.000000000000000E+000
0.500000000000000        0.000000000000000E+000  0.000000000000000E+000
1.00000000000000         0.500000000000000       0.000000000000000E+000
0.500000000000000        1.00000000000000        0.000000000000000E+000
0.250000000000000        0.250000000000000       0.000000000000000E+000
0.250000000000000        0.750000000000000       0.000000000000000E+000
0.750000000000000        0.250000000000000       0.000000000000000E+000
0.750000000000000        0.750000000000000       0.000000000000000E+000

CELLS           16          64
   3       7      12       4
   3       5       9       4
   3      10       8       3
   3      10       3       5
   3       4       9       6
   3       6      11       4
   3       4      11       7
   3       4      12       8
   3       0       6       9
   3       5       0       9
   3       4       8      10
   3       5       4      10
   3       1       7      11
   3       6       1      11
   3       2       8      12
   3       7       2      12

 CELL_TYPES           16
       5
       5
       5
       5
       5
       5
       5
       5
       5
       5
       5
       5
       5
       5
       5
       5

POINT_DATA           13
SCALARS presion double
LOOKUP_TABLE default
-4.59703889304213     
 3.82888363610970     
 3.81756522383386     
-4.60835730531561     
 0.197145644934616     
-4.59535605348466     
 0.195500198716605     
 3.82752829972580     
 0.187138058219474     
-2.12293352900423     
-2.12078991814064     
 2.21724715421349     
 2.21939076507648     

VECTORS velocidad double
0.000000000000000E+000   0.000000000000000E+000  0.000000000000000E+000
8.41470984807897         0.000000000000000E+000  0.000000000000000E+000
4.54648713412841        -4.54648713412841        0.000000000000000E+000
0.000000000000000E+000  -8.41470984807897        0.000000000000000E+000
4.20725870743923        -4.20725889966961        0.000000000000000E+000
0.000000000000000E+000  -4.79425538604203        0.000000000000000E+000
4.79425538604203         0.000000000000000E+000  0.000000000000000E+000
7.38460262604129        -2.59034723999926        0.000000000000000E+000
2.59034723999926        -7.38460262604129        0.000000000000000E+000
2.39717406023838        -2.39717405652409        0.000000000000000E+000
1.81026401191967        -6.60460085064085        0.000000000000000E+000
6.60460083608821        -1.81026405008086        0.000000000000000E+000
4.98756220389105        -4.98756217656822        0.000000000000000E+000
2个回答

实现此目的的一个好方法是使用 Warp By Vector 过滤器使用标量的值在 Z 方向上扭曲场。

只是为了简要概述一下,向量的扭曲使用向量在一个方向上扭曲你的场。如果您希望在垂直于 XY 平面的 Z 方向上扭曲场,则需要在 Z 方向上创建一个扭曲向量。使用计算器和 kHat 向量很容易实现这一点。然后,您可以重新调整向量的值以获得令人赏心悦目的扭曲。

据我所知,这是使用 (XY 0) 类型的 vtk 文件实现此类图形的最简单方法。

我们可以在 VTK 中使用 UNSTRUCTURED_GRID 数据集属性格式。在这里,我将为您提供一个非常简单的示例。假设您有一组三角形网格的顶点和一个在顶点处赋值的标量场。例如,我们首先生成这样的顶点: and 可以通过以下方式完成:(x0,y0)=(0,0)

(xj+1, yj+1)=(cos(jπ4), sin(jπ4)),  j=0,7¯,

perl -le '$pi = 3.14159265358979323846 ; for ( $i=0; $i<8 ; $i++ ){ print cos($pi*$i/4)."\t". sin($pi*$i/4)}'

其次,添加的值,例如对于,我们现在在 3D 中有 9 个点的集合,其中是我们要绘制的标量,现在网格有 8 个围绕的三角形。最后,创建一个文件,比如 triangle_surf.vtk,其内容如下:zj=z(xj,yj)z0=1zj=0j0z(x,y)(0,0)

# vtk DataFile Version 2.0
Simple surface on a triangle mesh with vertices (xj,yj,zj) for j=0,8.
ASCII
DATASET UNSTRUCTURED_GRID
POINTS   9  double 
   0                             0                       1.0
   1                             0                       0.0
   0.707106781186548             0.707106781186547       0.0
   6.12323399573677e-17          1                       0.0
   -0.707106781186547            0.707106781186548       0.0
   -1                            1.22464679914735e-16    0.0
   -0.707106781186548            -0.707106781186547      0.0
   -1.83697019872103e-16         -1                      0.0
   0.707106781186547             -0.707106781186548      0.0

CELLS 8 32
   3  0  1  2
   3  0  2  3
   3  0  3  4
   3  0  4  5
   3  0  5  6
   3  0  6  7
   3  0  7  8
   3  0  8  1

CELL_TYPES 8
   5 
   5 
   5 
   5 
   5 
   5 
   5
   5

POINT_DATA 9
SCALARS z_values double
LOOKUP_TABLE default
   1.0
   0.0
   0.0
   0.0
   0.0
   0.0
   0.0
   0.0
   0.0

现在通过paraview打开vtk文件,你会得到这样的东西 在此处输入图像描述

由于我懒得解释,而且我不知道你手头有什么,想表演什么,所以欢迎任何细节讨论。

@yemino:当然。您只需用标量值替换第三列坐标,即 z 分量。例如,要绘制您的压力数据(压力?),我们制作这个文件

# vtk DataFile Version 2.0
Stokes Solution 2D
ASCII

DATASET UNSTRUCTURED_GRID
POINTS           13  DOUBLE
0.000000000000000E+000   0.000000000000000E+000  -4.59703889304213     
1.00000000000000         0.000000000000000E+000   3.82888363610970     
1.00000000000000         1.00000000000000         3.81756522383386     
0.000000000000000E+000   1.00000000000000        -4.60835730531561     
0.500000000000000        0.500000000000000        0.197145644934616     
0.000000000000000E+000   0.500000000000000       -4.59535605348466     
0.500000000000000        0.000000000000000E+000   0.195500198716605     
1.00000000000000         0.500000000000000        3.82752829972580     
0.500000000000000        1.00000000000000         0.187138058219474     
0.250000000000000        0.250000000000000       -2.12293352900423     
0.250000000000000        0.750000000000000       -2.12078991814064     
0.750000000000000        0.250000000000000        2.21724715421349     
0.750000000000000        0.750000000000000        2.21939076507648     

CELLS           16          64
   3       7      12       4
   3       5       9       4
   3      10       8       3
   3      10       3       5
   3       4       9       6
   3       6      11       4
   3       4      11       7
   3       4      12       8
   3       0       6       9
   3       5       0       9
   3       4       8      10
   3       5       4      10
   3       1       7      11
   3       6       1      11
   3       2       8      12
   3       7       2      12

 CELL_TYPES           16
       5
       5
       5
       5
       5
       5
       5
       5
       5
       5
       5
       5
       5
       5
       5
       5

POINT_DATA           13
SCALARS presion double
LOOKUP_TABLE default
-4.59703889304213     
 3.82888363610970     
 3.81756522383386     
-4.60835730531561     
 0.197145644934616     
-4.59535605348466     
 0.195500198716605     
 3.82752829972580     
 0.187138058219474     
-2.12293352900423     
-2.12078991814064     
 2.21724715421349     
 2.21939076507648 

然后你会得到一个类似于 3D 表面的东西,如下所示: 在此处输入图像描述

以与上述相同的方式处理其他标量字段。