VTK files mit Python schreiben (gridToVTK)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Grizzly
User
Beiträge: 34
Registriert: Sonntag 10. Februar 2013, 21:18

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})

Antworten