def test_sub_bbtree(): """Testing point collision with a BoundingBoxTree of sub entitites""" mesh = UnitCubeMesh(MPI.COMM_WORLD, 4, 4, 4, cell_type=cpp.mesh.CellType.hexahedron) tdim = mesh.topology.dim fdim = tdim - 1 def top_surface(x): return numpy.isclose(x[2], 1) top_facets = locate_entities_boundary(mesh, fdim, top_surface) f_to_c = mesh.topology.connectivity(tdim - 1, tdim) cells = [f_to_c.links(f)[0] for f in top_facets] bbtree = BoundingBoxTree(mesh, tdim, cells) # Compute a BBtree for all processes process_bbtree = bbtree.create_global_tree(mesh.mpi_comm()) # Find possible ranks for this point point = numpy.array([0.2, 0.2, 1.0]) ranks = compute_collisions_point(process_bbtree, point) # Compute local collisions cells = compute_collisions_point(bbtree, point) if MPI.COMM_WORLD.rank in ranks: assert len(cells) > 0 else: assert len(cells) == 0
def test_sub_bbtree(): """Testing point collision with a BoundingBoxTree of sub entitites""" mesh = create_unit_cube(MPI.COMM_WORLD, 4, 4, 4, cell_type=CellType.hexahedron) tdim = mesh.topology.dim fdim = tdim - 1 top_facets = locate_entities_boundary(mesh, fdim, lambda x: np.isclose(x[2], 1)) f_to_c = mesh.topology.connectivity(tdim - 1, tdim) cells = [f_to_c.links(f)[0] for f in top_facets] bbtree = BoundingBoxTree(mesh, tdim, cells) # Compute a BBtree for all processes process_bbtree = bbtree.create_global_tree(mesh.comm) # Find possible ranks for this point point = np.array([0.2, 0.2, 1.0]) ranks = compute_collisions(process_bbtree, point) # Compute local collisions cells = compute_collisions(bbtree, point) if MPI.COMM_WORLD.rank in ranks.array: assert len(cells.links(0)) > 0 else: assert len(cells.links(0)) == 0