(self)
| 12 | self.__init_volume_boundaries() |
| 13 | |
| 14 | def __init_surface_boundaries(self): |
| 15 | self.__add_attribute("vertex_normal") |
| 16 | surface_boundary = \ |
| 17 | PyMeshUtils.Boundary.extract_surface_boundary(self.__mesh.raw_mesh) |
| 18 | boundaries = surface_boundary.get_boundaries() |
| 19 | assert(boundaries.shape[1] == 2) |
| 20 | |
| 21 | self.boundary_nodes = surface_boundary.get_boundary_nodes().ravel() |
| 22 | self.boundaries = boundaries |
| 23 | |
| 24 | v1 = self.__mesh.vertices_ref[boundaries[:,0]] |
| 25 | v2 = self.__mesh.vertices_ref[boundaries[:,1]] |
| 26 | self.__boundary_areas = norm(v1 - v2, axis=1) |
| 27 | self.__boundary_node_areas = np.zeros(self.__mesh.num_vertices) |
| 28 | for i, bd in enumerate(boundaries): |
| 29 | self.__boundary_node_areas[bd] += self.__boundary_areas[i] |
| 30 | self.__boundary_node_areas /= 2.0 |
| 31 | self.__boundary_centers = (v1 + v2) / 2.0 |
| 32 | self.__boundary_normals = np.zeros_like(v1) |
| 33 | self.__boundary_normals[:,0] = v1[:,1] - v2[:,1] |
| 34 | self.__boundary_normals[:,1] = v2[:,0] - v1[:,0] |
| 35 | self.__boundary_normals = np.divide( |
| 36 | self.__boundary_normals, self.__boundary_areas[:,np.newaxis]) |
| 37 | |
| 38 | def __init_volume_boundaries(self): |
| 39 | self.__add_attribute("face_area") |
no test coverage detected