1
2 """A parsed blockMeshDict"""
3
4 from ParsedParameterFile import ParsedParameterFile
5
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):
20
22 return float(self["convertToMeters"])
23
25 factor=self.convertToMeters()
26 return map(lambda x:map(lambda y:float(y)*factor,x),self["vertices"])
27
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
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
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
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
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
78 return (biggest+smallest)/2
79