Exemple #1
0
    def test_div(self, field_def, div_def):
        size = np.random.random(3) + 1.0
        cells = np.random.randint(8, 32, (3))

        nodes = grid_filters.coordinates0_point(cells, size)
        my_locals = locals()  # needed for list comprehension

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

        assert np.allclose(div, grid_filters.divergence(size, field))
Exemple #2
0
 def test_add_divergence(self, default, shape):
     if shape == 'vector':
         default.add_calculation('#F#[:,:,0]', 'x', '1', 'just a vector')
     if shape == 'tensor':
         default.add_calculation('#F#[:,:,:]', 'x', '1', 'just a tensor')
     x = default.place('x')
     default.add_divergence('x')
     in_file = default.place('divergence(x)')
     in_memory = grid_filters.divergence(
         default.size, x.reshape(tuple(default.cells) +
                                 x.shape[1:])).reshape(in_file.shape)
     assert (in_file == in_memory).all()