From 7e0c6f420b504a761194bef20b6a37a673bddfcc Mon Sep 17 00:00:00 2001 From: Luv Sharma Date: Thu, 16 Oct 2014 15:53:46 +0000 Subject: [PATCH] added shebang script to make executable, some properties and few improvements. Now giving the bounding surfaces. --- processing/pre/gmsh_identifySurfaces.py | 88 +++++++++++++++++-------- 1 file changed, 59 insertions(+), 29 deletions(-) mode change 100644 => 100755 processing/pre/gmsh_identifySurfaces.py diff --git a/processing/pre/gmsh_identifySurfaces.py b/processing/pre/gmsh_identifySurfaces.py old mode 100644 new mode 100755 index 68212c20b..5d3ac7589 --- a/processing/pre/gmsh_identifySurfaces.py +++ b/processing/pre/gmsh_identifySurfaces.py @@ -1,12 +1,16 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 no BOM -*- + import numpy as np import re - +def all_same(items,a): + return all(x == a for x in items) def func(seq): - for x in seq: - try: - yield float(x) - except ValueError: - yield x + for x in seq: + try: + yield float(x) + except ValueError: + yield x my_geofile = 'polyXtal_5grains.geo' PointCount = 0 @@ -28,8 +32,8 @@ for eachline in lines: r = re.compile('{(.*?)}') m = r.search(eachline) if m: - a = m.group(1) - point.append(list(func(a.split(",")))) + a = m.group(1) + point.append(list(func(a.split(",")))) elif eachline.startswith('Line (', 0, 6): @@ -37,44 +41,70 @@ for eachline in lines: r = re.compile('{(.*?)}') m = r.search(eachline) if m: - a = m.group(1) - line.append(list(func(a.split(",")))) + a = m.group(1) + line.append(list(func(a.split(",")))) elif eachline.startswith('Line Loop', 0, 9): LineLoopCount += 1 r = re.compile('{(.*?)}') m = r.search(eachline) if m: - a = m.group(1) - lineloop.append(list(func(a.split(",")))) + a = m.group(1) + lineloop.append(list(func(a.split(",")))) elif eachline.startswith('Plane', 0, len(eachline)): PlaneSurfaceCount += 1 r = re.compile('{(.*?)}') m = r.search(eachline) if m: - a = m.group(1) - plane.append(list(func(a.split(",")))) + a = m.group(1) + plane.append(list(func(a.split(",")))) elif eachline.startswith('Surface', 0,len(eachline)): SurfaceLoopCount += 1 r = re.compile('{(.*?)}') m = r.search(eachline) if m: - a = m.group(1) - surface.append(list(func(a.split(",")))) + a = m.group(1) + surface.append(list(func(a.split(",")))) +x_coord = [] +y_coord = [] +z_coord = [] +xp = [] +xm = [] +yp = [] +ym = [] +zp = [] +zm = [] + +for i,l in enumerate(lineloop): + for lines in l: + for pts in line[int(abs(lines)-1)]: + x_coord.append(point[int(pts)-1][0]) + y_coord.append(point[int(pts)-1][1]) + z_coord.append(point[int(pts)-1][2]) + + if all_same(x_coord,1.): + xp.append(int(i+1)) + elif all_same(x_coord,0.): + xm.append(int(i+1)) + elif all_same(y_coord,1.): + yp.append(int(i+1)) + elif all_same(y_coord,0.): + ym.append(int(i+1)) + elif all_same(z_coord,1.): + zp.append(int(i+1)) + elif all_same(z_coord,0.): + zm.append(int(i+1)) + x_coord = [] + y_coord = [] + z_coord = [] + +print 'suraces on x + are ', xp +print 'suraces on x - are ', xm +print 'suraces on y + are ', yp +print 'suraces on y - are ', ym +print 'suraces on z + are ', zp +print 'suraces on z - are ', zm -print point -print line -print 'll' -print np.size(lineloop) -print lineloop -print 'ss' -print surface - -#for sn, ll in enumerate(lineloop): -# for l in ll: -# for points in l[abs(int(l))]: -# if point[int(points)-1][0] == float(0): -# print 'abc'