def test_meshfunction_where_equal(): mesh = UnitSquareMesh(MPI.comm_self, 2, 2) cf = MeshFunction("size_t", mesh, mesh.topology.dim, 0) cf.set_all(1) cf[0] = 3 cf[3] = 3 assert list(cf.where_equal(3)) == [0, 3] assert list(cf.where_equal(1)) == [1, 2, 4, 5, 6, 7] ff = MeshFunction("size_t", mesh, mesh.topology.dim - 1, 100) ff.set_all(0) ff[0] = 1 ff[2] = 3 ff[3] = 3 assert list(ff.where_equal(1)) == [0] assert list(ff.where_equal(3)) == [2, 3] assert list(ff.where_equal(0)) == [1] + list(range(4, ff.size())) vf = MeshFunction("size_t", mesh, 0, 0) vf.set_all(3) vf[1] = 1 vf[2] = 1 assert list(vf.where_equal(1)) == [1, 2] assert list(vf.where_equal(3)) == [0] + list(range(3, vf.size()))
def test_Create(cube): """Create MeshFunctions.""" v = MeshFunction("size_t", cube, 0, 0) assert v.size() == cube.num_vertices() v = MeshFunction("size_t", cube, 1, 0) assert v.size() == cube.num_entities(1) v = MeshFunction("size_t", cube, 2, 0) assert v.size() == cube.num_facets() v = MeshFunction("size_t", cube, 3, 0) assert v.size() == cube.num_cells()
def test_mesh_function_assign_2D_cells(): mesh = UnitSquareMesh(MPI.comm_world, 3, 3) ncells = mesh.num_cells() f = MeshFunction("int", mesh, mesh.topology.dim, 0) for cell in Cells(mesh): f[cell] = ncells - cell.index() g = MeshValueCollection("int", mesh, 2) g.assign(f) assert ncells == f.size() assert ncells == g.size() f2 = MeshFunction("int", mesh, g, 0) for cell in Cells(mesh): value = ncells - cell.index() assert value == g.get_value(cell.index(), 0) assert f2[cell] == g.get_value(cell.index(), 0) h = MeshValueCollection("int", mesh, 2) global_indices = mesh.topology.global_indices(2) ncells_global = mesh.num_entities_global(2) for cell in Cells(mesh): if global_indices[cell.index()] in [5, 8, 10]: continue value = ncells_global - global_indices[cell.index()] h.set_value(cell.index(), int(value)) f3 = MeshFunction("int", mesh, h, 0) values = f3.array() values[values > ncells_global] = 0. assert MPI.sum(mesh.mpi_comm(), values.sum() * 1.0) == 140.
def test_CreateAssign(cube): """Create MeshFunctions with value.""" i = 10 v = MeshFunction("size_t", cube, 0, i) assert v.size() == cube.num_vertices() assert v[0] == i v = MeshFunction("size_t", cube, 1, i) assert v.size() == cube.num_entities(1) assert v[0] == i v = MeshFunction("size_t", cube, 2, i) assert v.size() == cube.num_facets() assert v[0] == i v = MeshFunction("size_t", cube, 3, i) assert v.size() == cube.num_cells() assert v[0] == i
def test_mesh_function_assign_2D_vertices(): mesh = UnitSquareMesh(MPI.comm_world, 3, 3) mesh.create_entities(0) f = MeshFunction("int", mesh, 0, 25) g = MeshValueCollection("int", mesh, 0) g.assign(f) assert mesh.num_entities(0) == f.size() assert mesh.num_cells() * 3 == g.size() f2 = MeshFunction("int", mesh, g, 0) for cell in Cells(mesh): for i, vert in enumerate(VertexRange(cell)): assert 25 == g.get_value(cell.index(), i) assert f2[vert] == g.get_value(cell.index(), i)
def test_mesh_function_assign_2D_facets(): mesh = UnitSquareMesh(MPI.comm_world, 3, 3) mesh.init(1) f = MeshFunction("int", mesh, mesh.topology.dim - 1, 25) for cell in Cells(mesh): for i, facet in enumerate(FacetRange(cell)): assert 25 == f[facet] g = MeshValueCollection("int", mesh, 1) g.assign(f) assert mesh.num_facets() == f.size() assert mesh.num_cells() * 3 == g.size() for cell in Cells(mesh): for i, facet in enumerate(FacetRange(cell)): assert 25 == g.get_value(cell.index(), i) f2 = MeshFunction("int", mesh, g, 0) for cell in Cells(mesh): for i, facet in enumerate(FacetRange(cell)): assert f2[facet] == g.get_value(cell.index(), i)