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,name,backup=False,debug=False):
12
14 return float(self["convertToMeters"])
15
17 factor=self.convertToMeters()
18 return map(lambda x:map(lambda y:float(y)*factor,x),self["vertices"])
19
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
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
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
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
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
66 return (biggest+smallest)/2
67