示例#1
0
    def test_grad(self,field_def,grad_def):
        size = np.random.random(3)+1.0
        grid = np.random.randint(8,32,(3))

        nodes = grid_filters.cell_coord0(grid,size)
        my_locals = locals()                                                                        # needed for list comprehension

        field = np.stack([np.broadcast_to(eval(f,globals(),my_locals),grid) for f in field_def],axis=-1)
        field = field.reshape(tuple(grid) + ((3,) if len(field_def)==3 else (1,)))
        grad = np.stack([np.broadcast_to(eval(c,globals(),my_locals),grid) for c in grad_def], axis=-1)
        grad = grad.reshape(tuple(grid) + ((3,3) if len(grad_def)==9 else (3,)))

        assert np.allclose(grad,grid_filters.gradient(size,field))
示例#2
0
 def test_add_gradient(self, default, shape):
     if shape == 'pseudo_scalar':
         default.add_calculation('#F#[:,0,0:1]', 'x', '1',
                                 'a pseudo scalar')
     if shape == 'scalar':
         default.add_calculation('#F#[:,0,0]', 'x', '1', 'just a scalar')
     if shape == 'vector':
         default.add_calculation('#F#[:,:,1]', 'x', '1', 'just a vector')
     x = default.place('x').reshape((np.product(default.cells), -1))
     default.add_gradient('x')
     in_file = default.place('gradient(x)')
     in_memory = grid_filters.gradient(
         default.size, x.reshape(tuple(default.cells) +
                                 x.shape[1:])).reshape(in_file.shape)
     assert (in_file == in_memory).all()