コード例 #1
0
 def test_parallel_mesh_gen(self, data_field_class):
     r"""
     only testing initializtion and merge_queue generation. The other functions
     are exercised during integration testing
     """
     #
     # testing ParallelMeshGen init method
     #
     field = data_field_class()
     # testing defaults first
     pmg = ParallelMeshGen(field, 'system-test')
     assert pmg.system_dir == 'system-test'
     assert pmg.nprocs == 4
     assert pmg.mesh_params == {}
     assert pmg.merge_groups == []
     assert pmg.avg_fact == 1.0
     assert pmg.nx == field.nx
     assert pmg.nz == field.nz
     assert sp.all(pmg._mask)
     #
     # checking pmg only has references to data initially, new references are
     # created if the 'threashold' method was used because it resets the arrays
     # using the internal _field which was cloned and independent of the original
     assert id(pmg.data_map) == id(field.data_map)
     assert id(pmg.data_vector) == id(field.data_vector)
     assert id(pmg.point_data) == id(field.point_data)
     assert id(pmg._field) != id(field)
     #
     # testing non default values
     params = {'test-key': 'test-value'}
     pmg = ParallelMeshGen(field, 'system-test', nprocs=15, avg_fact=7.0,
                           mesh_params=params)
     assert pmg.nprocs == 15
     assert pmg.avg_fact == 7.0
     assert pmg.mesh_params == params
     #
     # Testing ParaMeshGen _create_merge_queue method
     #
     # testing merge queue for (2**, 2**n) grid shapes
     grid = sp.reshape(sp.arange(4, dtype=int), (2, 2))
     queue, new_grid = pmg._create_merge_queue(grid, 'right')
     assert queue.qsize() == 2
     pairs = []
     while queue.qsize():
         pairs.append(queue.get())
     assert pairs == [(0, 1), (2, 3)]
     assert sp.all(new_grid == sp.array([[0], [2]], ndmin=2, dtype=int))
     #
     grid = sp.reshape(sp.arange(4, dtype=int), (2, 2))
     queue, new_grid = pmg._create_merge_queue(grid, 'top')
     assert queue.qsize() == 2
     pairs = []
     while queue.qsize():
         pairs.append(queue.get())
     assert pairs == [(0, 2), (1, 3)]
     assert sp.all(new_grid == sp.array([[0, 1]], ndmin=2, dtype=int))
     #
     # testing merge queue for (n x n) grid shapes
     grid = sp.reshape(sp.arange(6, dtype=int), (2, 3))
     queue, new_grid = pmg._create_merge_queue(grid, 'right')
     assert queue.qsize() == 2
     pairs = []
     while queue.qsize():
         pairs.append(queue.get())
     assert pairs == [(0, 1), (3, 4)]
     assert sp.all(new_grid == sp.array([[0, 2], [3, 5]], ndmin=2, dtype=int))
     #
     grid = sp.reshape(sp.arange(6, dtype=int), (3, 2))
     queue, new_grid = pmg._create_merge_queue(grid, 'top')
     assert queue.qsize() == 2
     pairs = []
     while queue.qsize():
         pairs.append(queue.get())
     assert pairs == [(0, 2), (1, 3)]
     assert sp.all(new_grid == sp.array([[0, 1], [4, 5]], ndmin=2, dtype=int))