No subject


Thu Aug 21 12:43:56 PDT 2008


Added: mc/2D/ConMan/trunk/visual/bb1a.py
===================================================================
--- mc/2D/ConMan/trunk/visual/bb1a.py	                        (rev 0)
+++ mc/2D/ConMan/trunk/visual/bb1a.py	2008-09-10 18:38:47 UTC (rev 12835)
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+
+import sys
+sys.path.insert(1,'../visual')
+import conman_reader
+
+tfile = 'temp.bb1a50'
+
+tinfo = conman_reader.read_temp(tfile)
+
+coords = tinfo['coords']
+connect = tinfo['connect']
+velocity = tinfo['velocity']
+temperature = tinfo['temperature']
+
+vtk = conman_reader.make_vtk(
+        header='vtk header',
+        grid=conman_reader.make_grid(coords,connect,gridtype='unstructured'),
+        point_data=[conman_reader.make_scalar(temperature, 'temperature'),
+                    conman_reader.make_vector(velocity, 'velocity'),
+                   ]
+        )
+
+vtk.tofile('foo.vtk')


Property changes on: mc/2D/ConMan/trunk/visual/bb1a.py
___________________________________________________________________
Name: svn:executable
   + *

Added: mc/2D/ConMan/trunk/visual/conman_reader.py
===================================================================
--- mc/2D/ConMan/trunk/visual/conman_reader.py	                        (rev 0)
+++ mc/2D/ConMan/trunk/visual/conman_reader.py	2008-09-10 18:38:47 UTC (rev 12835)
@@ -0,0 +1,129 @@
+#!/usr/bin/env python
+
+from __future__ import with_statement
+
+import numpy
+import pyvtk
+
+
+def parse_header(line):
+    params = line.split()
+    (nsd, nex, ney, nno, t) = [int(p) for p in params[0:5]]
+    num = float(params[5])
+    return (nsd, nex, ney, nno, t, num)
+
+def read_temp(filename):
+    
+    with open(filename, 'r') as fp:
+        
+        line = fp.readline()
+        nsd,nex,ney,nno,t,num = parse_header(line)
+
+        var_names = fp.readline()
+        
+        coords = numpy.zeros((nno,3))
+        connect = (nex,ney)
+        nodemap = numpy.zeros((nno,1), dtype=int)
+        velocity = numpy.zeros((nno,3))
+        temperature = numpy.zeros((nno,1))
+
+        for i in xrange(nno):
+            line = fp.readline()
+            params = line.split()
+            n = int(params[0])
+            x1 = float(params[1])
+            x2 = float(params[2])
+            v1 = float(params[3])
+            v2 = float(params[4])
+            T = float(params[5])
+            nodemap[i] = n
+            coords[i] = (x1,x2,0)
+            velocity[i] = (v1,v2,0)
+            temperature[i] = T
+
+    return {'coords': coords,
+            'connect': connect,
+            'velocity': velocity,
+            'temperature': temperature,
+            'nodemap': nodemap}
+
+def read_stress(filename):
+
+    with open(filename,'r') as fp:
+
+        line = fp.readline()
+        nsd, nex, ney, nno, t, num = parse_header(line)
+
+        var_names = fp.readline()
+
+        coords = numpy.zeros((nno,3))
+        connect = (nex,ney)
+        stress = numpy.zeros((nno,5))
+        pressure = numpy.zeros((nno,1))
+
+        for i in xrange(nno):
+            line = fp.readline()
+            params = line.split()
+            n = int(params[0])
+            x1 = float(params[1])
+            x2 = float(params[2])
+            t1 = float(params[3])
+            t2 = float(params[4])
+            t3 = float(params[5])
+            t4 = float(params[6])
+            t5 = float(params[7])
+            p = float(params[8])
+            coords[i] = (x1,x2,0)
+            stress[i] = (t1,t2,t3,t4,t5)
+            pressure[i] = p
+
+    return {'coords': coords,
+            'connect': connect,
+            'stress': stress,
+            'pressure': pressure}
+
+def make_grid(coords, connect, **kw):
+    grid = None
+    gridtype = kw.get('gridtype', 'unstructured')
+    if gridtype == 'unstructured':
+        (nex, ney) = connect
+        (nx, ny) = (nex+1, ney+1)
+        conn = numpy.zeros((nex*ney,4), dtype=int)
+        def node(i,j):
+            return ny * i + j
+        for i in xrange(nex):
+            for j in xrange(ney):
+                e = (ney)*i + j
+                n1 = node(i,j)
+                n2 = node(i+1, j)
+                n3 = node(i+1, j+1)
+                n4 = node(i, j+1)
+                conn[e] = (n1,n2,n3,n4)
+        grid = pyvtk.UnstructuredGrid(coords, quad=conn)
+    else:
+        raise Exception('Unknown grid type')
+    return grid
+
+def make_scalar(array, name=None):
+    return pyvtk.Scalars(array, name, lookup_table='default')
+
+def make_vector(array, name=None):
+    return pyvtk.Vectors(array, name)
+
+def make_tensor(array, name=None):
+    return pyvtk.Tensors(array, name)
+
+def make_vtk(**kwargs):
+    args = []
+    if 'grid' in kwargs:
+        args.append(kwargs.get('grid'))
+    if 'point_data' in kwargs:
+        data = kwargs['point_data']
+        args.append(pyvtk.PointData(*data))
+    if 'cell_data' in kwargs:
+        data = kwargs['cell_data']
+        args.append(pyvtk.CellData(*data))
+    if 'header' in kwargs:
+        args.append(kwargs.get('header'))
+    return pyvtk.VtkData(*args)
+

Added: mc/2D/ConMan/trunk/visual/cover.py
===================================================================
--- mc/2D/ConMan/trunk/visual/cover.py	                        (rev 0)
+++ mc/2D/ConMan/trunk/visual/cover.py	2008-09-10 18:38:47 UTC (rev 12835)
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+
+import conman_reader
+
+filename = 'temp'
+info = conman_reader.read_temp(filename)
+
+coords = info['coords']
+connect = info['connect']
+velocity = info['velocity']
+temperature = info['temperature']
+
+vtk = conman_reader.make_vtk(
+        header='vtk header',
+        grid=conman_reader.make_grid(coords, connect, gridtype='unstructured'),
+        point_data=[conman.make_scalar(temperature, 'temperature'),
+                    conman.make_vector(velocity, 'velocity')
+                   ]
+        )
+
+vtk.tofile('cover.vtk')
+


Property changes on: mc/2D/ConMan/trunk/visual/cover.py
___________________________________________________________________
Name: svn:executable
   + *



More information about the cig-commits mailing list