@@ -120,27 +120,25 @@ def define(self, dimensions):
120120 for m , o in zip (mappers , ops ):
121121 check_op (m , o )
122122
123- # FIXME: Currently throws an error - probably a missing handler for GuardFactor
124- # in Uxreplace
125- # def test_factor(self):
126- # """Test that ConditionalDimensions can have their symbolic factors specialized"""
127- # size = 16
128- # factor = 4
129- # i = Dimension(name='i')
130- # ci = ConditionalDimension(name='ci', parent=i, factor=factor)
123+ def test_factor (self ):
124+ """Test that ConditionalDimensions can have their symbolic factors specialized"""
125+ size = 16
126+ factor = 4
127+ i = Dimension (name = 'i' )
128+ ci = ConditionalDimension (name = 'ci' , parent = i , factor = factor )
131129
132- # g = Function(name='g', shape=(size,), dimensions=(i,))
133- # f = Function(name='f', shape=(int(size/factor),), dimensions=(ci,))
130+ g = Function (name = 'g' , shape = (size ,), dimensions = (i ,))
131+ f = Function (name = 'f' , shape = (int (size / factor ),), dimensions = (ci ,))
134132
135- # op0 = Operator([Eq(f, g)])
133+ op0 = Operator ([Eq (f , g )])
136134
137- # mapper = {ci.symbolic_factor: sympy.Integer(factor)}
135+ mapper = {ci .symbolic_factor : sympy .Integer (factor )}
138136
139- # op1 = Specializer(mapper).visit(op0)
137+ op1 = Specializer (mapper ).visit (op0 )
140138
141- # assert ci.symbolic_factor not in op1.parameters
142- # assert ci.symbolic_factor.name not in str(op1.ccode)
143- # assert "if ((i)%(4) == 0)" in str(op1.ccode)
139+ assert ci .symbolic_factor not in op1 .parameters
140+ assert ci .symbolic_factor .name not in str (op1 .ccode )
141+ assert "if ((i)%(4) == 0)" in str (op1 .ccode )
144142
145143 def test_spacing (self ):
146144 """Test that grid spacings can be specialized"""
@@ -156,14 +154,21 @@ def test_spacing(self):
156154 assert grid .dimensions [0 ].spacing .name not in str (op1 .ccode )
157155 assert "/1.0e-1F;" in str (op1 .ccode )
158156
159- # Strides/sizes
160- def test_strides (self ):
161- """Test that strides and sizes generated for linearization can be specialized"""
157+ def test_sizes (self ):
158+ """Test that strides generated for linearization can be specialized"""
162159 grid = Grid (shape = (11 , 11 ))
163160
164161 f = TimeFunction (name = 'f' , grid = grid , space_order = 2 )
165162
166163 op0 = Operator (Eq (f .forward , f .dx2 ),
167164 opt = ('advanced' , {'expand' : True , 'linearize' : True }))
168165
169- from IPython import embed ; embed ()
166+ mapper = {f .symbolic_shape [1 ]: sympy .Integer (11 ),
167+ f .symbolic_shape [2 ]: sympy .Integer (11 )}
168+
169+ op1 = Specializer (mapper ).visit (op0 )
170+
171+ assert "const int x_fsz0 = 11;" in str (op1 .ccode )
172+ assert "const int y_fsz0 = 11;" in str (op1 .ccode )
173+
174+ # TODO: Should strides get linearized? If so, how?
0 commit comments