Package PyFoam :: Package Basics :: Module DataStructures
[hide private]
[frames] | no frames]

Source Code for Module PyFoam.Basics.DataStructures

  1  """Data structures in Foam-Files that can't be directly represented by Python-Structures""" 
  2   
  3  import FoamFileGenerator 
  4  from copy import deepcopy 
  5   
6 -class Field:
7 - def __init__(self,val,name=None):
8 self.val=val 9 self.name=name 10 if self.name==None: 11 self.uniform=True 12 else: 13 assert(type(val)==list) 14 self.uniform=False
15
16 - def __str__(self):
17 result="" 18 if self.uniform: 19 result+="uniform " 20 else: 21 result+="nonuniform "+self.name+" " 22 result+=str(FoamFileGenerator.FoamFileGenerator(self.val)) 23 return result
24
25 - def __cmp__(self,other):
26 if other==None: 27 return 1 28 if self.uniform!=other.uniform: 29 return cmp(self.uniform,other.uniform) 30 elif self.name!=other.name: 31 return cmp(self.name,other.name) 32 else: 33 return cmp(self.val,other.val)
34
35 - def __getitem__(self,key):
36 assert(not self.uniform) 37 return self.val[key]
38
39 - def __setitem__(self,key,value):
40 assert(not self.uniform) 41 self.val[key]=value
42 43
44 -class Dimension:
45 - def __init__(self,*dims):
46 assert(len(dims)==7) 47 self.dims=list(dims)
48
49 - def __str__(self):
50 result="[ " 51 for v in self.dims: 52 result+=str(v)+" " 53 result+="]" 54 return result
55
56 - def __cmp__(self,other):
57 if other==None: 58 return 1 59 return cmp(self.dims,other.dims)
60
61 - def __getitem__(self,key):
62 return self.dims[key]
63
64 - def __setitem__(self,key,value):
65 self.dims[key]=value
66
67 -class Vector:
68 - def __init__(self,x,y,z):
69 self.vals=[x,y,z]
70
71 - def __str__(self):
72 return "(%g %g %g)" % tuple(self.vals)
73
74 - def __cmp__(self,other):
75 if other==None: 76 return 1 77 return cmp(self.vals,other.vals)
78
79 - def __getitem__(self,key):
80 return self.vals[key]
81
82 - def __setitem__(self,key,value):
83 self.vals[key]=value
84
85 -class DictProxy(dict):
86 """A class that acts like a dictionary, but preserves the order 87 of the entries. Used to beautify the output""" 88
89 - def __init__(self):
90 dict.__init__(self) 91 self._order=[]
92
93 - def __setitem__(self,key,value):
94 dict.__setitem__(self,key,value) 95 if key not in self._order: 96 self._order.append(key)
97
98 - def __delitem__(self,key):
99 dict.__delitem__(self,key) 100 self._order.remove(key)
101
102 - def __deepcopy__(self,memo):
103 new=DictProxy() 104 for k in self._order: 105 new[k]=deepcopy(self[k],memo) 106 return new
107