Package PyFoam :: Package RunDictionary :: Module ParsedBlockMeshDict
[hide private]
[frames] | no frames]

Source Code for Module PyFoam.RunDictionary.ParsedBlockMeshDict

 1  #  ICE Revision: $Id$  
 2  """A parsed blockMeshDict""" 
 3   
 4  from ParsedParameterFile import ParsedParameterFile 
 5   
6 -class ParsedBlockMeshDict(ParsedParameterFile):
7 """ A parsed version of a blockMeshDict-file. Adds some 8 convenience-methods to access parts of the file""" 9
10 - def __init__(self,name,backup=False,debug=False):
11 ParsedParameterFile.__init__(self,name,backup=backup,debug=debug)
12
13 - def convertToMeters(self):
14 return float(self["convertToMeters"])
15
16 - def vertices(self):
17 factor=self.convertToMeters() 18 return map(lambda x:map(lambda y:float(y)*factor,x),self["vertices"])
19
20 - def blocks(self):
21 result=[] 22 i=1 23 while i<len(self["blocks"]): 24 result.append(map(int,self["blocks"][i])) 25 if type(self["blocks"][i+1])==str: 26 i+=6 27 else: 28 i+=5 29 30 return result
31
32 - def patches(self):
33 result={} 34 for i in range(1,len(self["patches"]),3): 35 result[self["patches"][i]]=map(lambda x:map(int,x),self["patches"][i+1]) 36 37 return result
38
39 - def arcs(self):
40 factor=self.convertToMeters() 41 result=[] 42 for i in range(len(self["edges"])): 43 if str(self["edges"][i])=='arc': 44 result.append((int(self["edges"][i+1]), 45 map(lambda y:float(y)*factor,self["edges"][i+3]), 46 int(self["edges"][i+2]))) 47 return result
48
49 - def getBounds(self):
50 v=self.vertices() 51 mi=[ 1e10, 1e10, 1e10] 52 ma=[-1e10,-1e10,-1e10] 53 for p in v: 54 for i in range(3): 55 mi[i]=min(p[i],mi[i]) 56 ma[i]=max(p[i],ma[i]) 57 return mi,ma
58
59 - def typicalLength(self):
60 mi,ma=self.getBounds() 61 62 biggest=max(ma[0]-mi[0],ma[1]-mi[1],ma[2]-mi[2]) 63 smallest=min(ma[0]-mi[0],ma[1]-mi[1],ma[2]-mi[2]) 64 65 # return 2*biggest*smallest/(biggest+smallest) 66 return (biggest+smallest)/2
67