def test_mesh2d_init_from_polygon_grid_concave(): """Test the initalization of Mesh2D from_polygon_grid.""" verts = (Point2D(0, 0), Point2D(2, 0), Point2D(2, 1), Point2D(1, 1), Point2D(1, 2), Point2D(0, 2)) polygon = Polygon2D(verts) mesh = Mesh2D.from_polygon_grid(polygon, 0.5, 0.5, False) assert len(mesh.vertices) == 21 assert len(mesh.faces) == 12 assert mesh.area == 3 assert mesh.min.x == 0 assert mesh.min.y == 0 assert mesh.max.x == 2 assert mesh.max.y == 2 assert mesh.center.x == 1 assert mesh.center.y == 1 assert mesh.centroid.x == pytest.approx(0.83, rel=1e-2) assert mesh.centroid.y == pytest.approx(0.83, rel=1e-2) assert len(mesh.face_areas) == 12 assert mesh.face_areas[0] == 0.25 assert len(mesh.face_centroids) == 12 assert mesh._is_color_by_face is False assert mesh.colors is None
def generate_faces(self): polygon = Polygon2D.from_dict({"type": "Polygon2D", "vertices": [(-self.xy / 2, -self.xy / 2), (self.xy / 2, -self.xy / 2), (self.xy / 2, self.xy / 2), (-self.xy / 2, self.xy / 2)]}) mesh = Mesh2D.from_polygon_grid(polygon, x_dim=self.subsurface_size, y_dim=self.subsurface_size) self.faces_top = [Face3D([Point3D(mesh.vertices[vertex].x, mesh.vertices[vertex].y, 0) for vertex in face]) for face in mesh.faces] pt0 = Point3D(-self.xy / 2, -self.xy / 2, 0) pt1 = Point3D(self.xy / 2, -self.xy / 2, 0) pt2 = Point3D(self.xy / 2, self.xy / 2, 0) pt3 = Point3D(-self.xy / 2, self.xy / 2, 0) pt4 = Point3D(-self.xy / 2, -self.xy / 2, -self.depth) pt5 = Point3D(self.xy / 2, -self.xy / 2, -self.depth) pt6 = Point3D(self.xy / 2, self.xy / 2, -self.depth) pt7 = Point3D(-self.xy / 2, self.xy / 2, -self.depth) self.face_bottom = Face3D([pt7, pt6, pt5, pt4]) self.face_south = Face3D([pt4, pt5, pt1, pt0]) self.face_east = Face3D([pt5, pt6, pt2, pt1]) self.face_north = Face3D([pt6, pt7, pt3, pt2]) self.face_west = Face3D([pt7, pt4, pt0, pt3])