Seite 1 von 1

VTK files mit Python schreiben (gridToVTK)

Verfasst: Montag 16. September 2013, 15:53
von Grizzly
Hallo,
ich habe einen 2d-array den ich gerne mit Paraview in 3d darstellen würde. Hierfür muss ich ein 3d grid erstellen und dieses als VTK file exportieren. Die Vorgehensweise ist hier:

http://www.vtk.org/Wiki/VTK/Writing_VTK ... ing_python

Mein Array zum Exportieren ist B. Ich verstehe das Prinzip dahinter aber leider nicht...

Code: Alles auswählen

from evtk.hl import gridToVTK 
import numpy as np
import random as rnd 

B = np.array([[0,1,2,3],[4,5,6,7], [8,9,10,11],[12,13,14,15]]) # wuerde ich gerne verwenden ???

# Dimensions 
nx, ny, nz = 6, 6, 2 # hier 4,4,15 ?
lx, ly, lz = 1.0, 1.0, 1.0 
dx, dy, dz = lx/nx, ly/ny, lz/nz 

ncells = nx * ny * nz 
npoints = (nx + 1) * (ny + 1) * (nz + 1) 

# Coordinates 
X = np.arange(0, lx + 0.1*dx, dx, dtype='float64') 
Y = np.arange(0, ly + 0.1*dy, dy, dtype='float64') 
Z = np.arange(0, lz + 0.1*dz, dz, dtype='float64') 

x = np.zeros((nx + 1, ny + 1, nz + 1)) 
y = np.zeros((nx + 1, ny + 1, nz + 1)) 
z = np.zeros((nx + 1, ny + 1, nz + 1)) 

# We add some random fluctuation to make the grid more interesting 
for k in range(nz + 1): 

    for j in range(ny + 1):
        for i in range(nx + 1): 
 
            x[i,j,k] = X[i] + (0.5 - rnd.random()) * 0.2 * dx 
            y[i,j,k] = Y[j] + (0.5 - rnd.random()) * 0.2 * dy 
            z[i,j,k] = Z[k] + (0.5 - rnd.random()) * 0.2 * dz 

# Variables 
pressure = np.random.rand(ncells).reshape( (nx, ny, nz)) 
temp = np.random.rand(npoints).reshape( (nx + 1, ny + 1, nz + 1)) 

gridToVTK("./structured", x, y, z, cellData = {"pressure" : pressure}, pointData = {"temp" : temp})