[cig-commits] r11857 - in cs/benchmark/cigma/trunk/src/tests: . citcomcu

luis at geodynamics.org luis at geodynamics.org
Wed Apr 23 09:56:44 PDT 2008


Author: luis
Date: 2008-04-23 09:56:44 -0700 (Wed, 23 Apr 2008)
New Revision: 11857

Added:
   cs/benchmark/cigma/trunk/src/tests/citcomcu/
   cs/benchmark/cigma/trunk/src/tests/citcomcu/convert_mesh.py
Log:
Script for processing a rectilinear mesh


Added: cs/benchmark/cigma/trunk/src/tests/citcomcu/convert_mesh.py
===================================================================
--- cs/benchmark/cigma/trunk/src/tests/citcomcu/convert_mesh.py	                        (rev 0)
+++ cs/benchmark/cigma/trunk/src/tests/citcomcu/convert_mesh.py	2008-04-23 16:56:44 UTC (rev 11857)
@@ -0,0 +1,65 @@
+#!/usr/bin/env python
+
+import numpy
+
+X08 = numpy.fromfile('X08.dat', sep='\n')
+X16 = numpy.fromfile('X16.dat', sep='\n')
+X32 = numpy.fromfile('X32.dat', sep='\n')
+X64 = numpy.fromfile('X64.dat', sep='\n')
+
+
+def nodemap(n):
+    def nid(i,j,k):
+        return n*n*i + n*j + k
+    return nid
+
+def cellmap(n):
+    def cid(i,j,k):
+        return (n-1)*(n-1)*i + (n-1)*j + k
+    return cid
+
+def cubemesh(x):
+    n = len(x)
+    N = nodemap(n)
+    C = cellmap(n)
+    coords = numpy.zeros((n*n*n,3),float)
+    connect = numpy.zeros(((n-1)*(n-1)*(n-1),8),int)
+    for i in xrange(n):
+        for j in xrange(n):
+            for k in xrange(n):
+                coords[N(i,j,k)] = (x[i],x[j],x[k])
+    for i in xrange(n-1):
+        for j in xrange(n-1):
+            for k in xrange(n-1):
+                c = C(i,j,k)
+                
+                connect[c,0] = N(i + 0, j + 0, k+0)
+                connect[c,1] = N(i + 1, j + 0, k+0)
+                connect[c,2] = N(i + 1, j + 1, k+0)
+                connect[c,3] = N(i + 0, j + 1, k+0)
+
+                connect[c,4] = N(i + 0, j + 0, k + 1)
+                connect[c,5] = N(i + 1, j + 0, k + 1)
+                connect[c,6] = N(i + 1, j + 1, k + 1)
+                connect[c,7] = N(i + 0, j + 1, k + 1)
+
+    return (coords, connect)
+
+
+def save(fname, y, fmt='%.8e'):
+    m,n = y.shape
+    fp = open(fname, 'w')
+    fp.write("%d %d\n" % (m,n))
+    for i in xrange(m):
+        for j in xrange(n):
+            fp.write(fmt % y[i,j])
+            fp.write(' ')
+        fp.write('\n')
+    fp.close()
+
+for x in (X08, X16, X32, X64):
+    e = x.shape[0] - 1
+    M = cubemesh(x)
+    save('coords%02d.dat' % e, M[0])
+    save('connect%02d.dat' % e, M[1], fmt='%d')
+



More information about the cig-commits mailing list