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, 11 name, 12 backup=False, 13 debug=False, 14 doMacroExpansion=False):
15 ParsedParameterFile.__init__(self, 16 name, 17 backup=backup, 18 debug=debug, 19 doMacroExpansion=doMacroExpansion)
20
21 - def convertToMeters(self):
22 return float(self["convertToMeters"])
23
24 - def vertices(self):
25 factor=self.convertToMeters() 26 return map(lambda x:map(lambda y:float(y)*factor,x),self["vertices"])
27
28 - def blocks(self):
29 result=[] 30 i=1 31 while i<len(self["blocks"]): 32 result.append(map(int,self["blocks"][i])) 33 if type(self["blocks"][i+1])==str: 34 i+=6 35 else: 36 i+=5 37 38 return result
39
40 - def patches(self):
41 result={} 42 for i in range(1,len(self["patches"]),3): 43 result[self["patches"][i]]=map(lambda x:map(int,x),self["patches"][i+1]) 44 45 return result
46
47 - def arcs(self):
48 factor=self.convertToMeters() 49 result=[] 50 try: 51 for i in range(len(self["edges"])): 52 if str(self["edges"][i])=='arc': 53 result.append((int(self["edges"][i+1]), 54 map(lambda y:float(y)*factor,self["edges"][i+3]), 55 int(self["edges"][i+2]))) 56 except KeyError: 57 pass 58 59 return result
60
61 - def getBounds(self):
62 v=self.vertices() 63 mi=[ 1e10, 1e10, 1e10] 64 ma=[-1e10,-1e10,-1e10] 65 for p in v: 66 for i in range(3): 67 mi[i]=min(p[i],mi[i]) 68 ma[i]=max(p[i],ma[i]) 69 return mi,ma
70
71 - def typicalLength(self):
72 mi,ma=self.getBounds() 73 74 biggest=max(ma[0]-mi[0],ma[1]-mi[1],ma[2]-mi[2]) 75 smallest=min(ma[0]-mi[0],ma[1]-mi[1],ma[2]-mi[2]) 76 77 # return 2*biggest*smallest/(biggest+smallest) 78 return (biggest+smallest)/2
79