def test_HarmonicSmoothing(): # Create some mesh and its boundary mesh = UnitSquareMesh(10, 10) boundary = BoundaryMesh(mesh, 'exterior') # Move boundary disp = Expression(("0.3*x[0]*x[1]", "0.5*(1.0-x[1])")) ALE.move(boundary, disp) # Move mesh according to given boundary ALE.move(mesh, boundary) # Check that new boundary topology corresponds to given one boundary_new = BoundaryMesh(mesh, 'exterior') assert boundary.topology().hash() == boundary_new.topology().hash() # Check that coordinates are almost equal err = sum(sum(abs(boundary.coordinates() \ - boundary_new.coordinates()))) / mesh.num_vertices() print("Current CG solver produced error in boundary coordinates", err) assert round(err - 0.0, 5) == 0 # Check mesh quality magic_number = 0.35 rmin = MeshQuality.radius_ratio_min_max(mesh)[0] assert rmin > magic_number
def test_HarmonicSmoothing(self): print "" print "Testing HarmonicSmoothing::move(Mesh& mesh, " \ "const BoundaryMesh& new_boundary)" # Create some mesh and its boundary mesh = UnitSquareMesh(10, 10) boundary = BoundaryMesh(mesh, 'exterior') # Move boundary disp = Expression(("0.3*x[0]*x[1]", "0.5*(1.0-x[1])")) boundary.move(disp) # Move mesh according to given boundary mesh.move(boundary) # Check that new boundary topology corresponds to given one boundary_new = BoundaryMesh(mesh, 'exterior') self.assertEqual(boundary.topology().hash(), boundary_new.topology().hash()) # Check that coordinates are almost equal err = sum(sum(abs(boundary.coordinates() \ - boundary_new.coordinates()))) / mesh.num_vertices() print "Current CG solver produced error in boundary coordinates", err self.assertAlmostEqual(err, 0.0, places=5) # Check mesh quality magic_number = 0.35 rmin = MeshQuality.radius_ratio_min_max(mesh)[0] self.assertTrue(rmin > magic_number)
def test_HarmonicSmoothing(self): print "" print "Testing HarmonicSmoothing::move(Mesh& mesh, " \ "const BoundaryMesh& new_boundary)" # Create some mesh and its boundary mesh = UnitSquareMesh(10, 10) boundary = BoundaryMesh(mesh, 'exterior') # Move boundary disp = Expression(("0.3*x[0]*x[1]", "0.5*(1.0-x[1])")) boundary.move(disp) # Move mesh according to given boundary mesh.move(boundary) # Check that new boundary topology corresponds to given one boundary_new = BoundaryMesh(mesh, 'exterior') self.assertEqual(boundary.topology().hash(), boundary_new.topology().hash()) # Check that coordinates are almost equal err = sum(sum(abs(boundary.coordinates() \ - boundary_new.coordinates()))) / mesh.num_vertices() print "Current CG solver produced error in boundary coordinates", err self.assertAlmostEqual(err, 0.0, places=5) # Check mesh quality magic_number = 0.35 self.assertTrue(mesh.radius_ratio_min()>magic_number)
def test_mesh_function_assign_2D_vertices(): mesh = UnitSquareMesh(MPI.comm_world, 3, 3) mesh.init(0) f = MeshFunction("int", mesh, 0, 25) g = MeshValueCollection("int", mesh, 0) g.assign(f) assert mesh.num_vertices() == 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_UnitSquareMeshLocal(): """Create mesh of unit square.""" mesh = UnitSquareMesh(MPI.comm_self, 5, 7) assert mesh.num_vertices() == 48 assert mesh.num_cells() == 70 assert mesh.geometry.dim == 2