forked from armando-2011/pyStokes
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvisualizacion.py
74 lines (63 loc) · 2.88 KB
/
visualizacion.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# ------------------------------------------------------------------
# Visualizacion Septiembre 16 - 2010
# Universidad de Los Andes arXiv:1004.2416v1
# Autor: Oscar Castillo O. ol.castillo28@uniandes.edu.co
# ------------------------------------------------------------------
# Librerias utilizadas
from enthought.tvtk.api import tvtk
import numpy as np
# ------------------------------------------------------------------
# Function: Guardar membrana
# ------------------------------------------------------------------
# Input: FV -> Geometria NO deformada o de referencia
# U -> Velocidad de la malla Lagrangiana
# F -> Fuerza en cada nodo de la malla Lagrangiana
# D -> Estructura de cambio de area por elemento
# n -> Tiempo de la iteracion
# ------------------------------------------------------------------
# Output: membrana.vtu
# ------------------------------------------------------------------
def guardarMembrana(FV, U, F, D, n):
tet_type = tvtk.Triangle().cell_type
ug = tvtk.UnstructuredGrid(points=FV.vertices)
ug.set_cells(tet_type, FV.faces)
# Asignacion de atributos a nodos
ug.point_data.vectors = U
ug.point_data.vectors.name = 'Velocidad'
# Asignacion de atributos a caras
ug.cell_data.scalars = D
ug.cell_data.scalars.name = 'Cambio de area'
w = tvtk.XMLUnstructuredGridWriter(input=ug, file_name='temp/membrana%d.vtu'%n)
w.write()
# ------------------------------------------------------------------
# Function: Guardar fluido
# ------------------------------------------------------------------
# Input: FV -> Geometria NO deformada o de referencia
# U -> Velocidad de la malla Lagrangiana
# F -> Fuerza en cada nodo de la malla Lagrangiana
# D -> Estructura de cambio de area por elemento
# n -> Tiempo de la iteracion
# ------------------------------------------------------------------
# Output: fluido.vtk
# ------------------------------------------------------------------
def guardarFluido(x,y,z,dx,rho,u_x,u_y,u_z,n):
# Crear las coordenadas de cada punto
mesh = np.zeros(3)
for i in xrange(0,x):
for j in xrange(0,y):
for k in xrange(0,z):
mesh = np.vstack((mesh,(i,j,k)))
sg = tvtk.StructuredGrid(dimensions=(x,y,z))
sg.points = mesh[1:x*y*z+1,:]*dx
# Densidad
sg.point_data.scalars = np.ravel(rho)
sg.point_data.scalars.name = 'Densidad'
# Vectores velocidad
u_x = np.ravel(u_x)
u_y = np.ravel(u_y)
u_z = np.ravel(u_z)
velocidad = np.vstack((np.vstack((u_x,u_y)),u_z))
sg.point_data.vectors = np.transpose(velocidad)
sg.point_data.vectors.name = 'Velocidad'
w = tvtk.StructuredGridWriter(input=sg, file_name='temp/densidad%d.vtk'%n)
w.write()