def get_triangle_mesh(file_name=None): gmsh.model.mesh.generate(2) if file_name is not None: gmsh.write(file_name + ".msh") # Renumber triangle node_tags array with indices into aVertex node_tags, coord, parametric_coord = gmsh.model.mesh.getNodes(2, -1, True) vertices = np.asarray(coord, dtype=np.float32).reshape(len(node_tags), 3) node_tag_to_idx = dict() for i, t in enumerate(node_tags): node_tag_to_idx[t] = i element_types, element_tags, node_tags = gmsh.model.mesh.getElements(2, -1) assert len(element_types) == 1 and element_types[0] == 2 assert len(element_tags) == 1 assert len(node_tags) == 1 and len(node_tags[0]) == len(element_tags[0]) * 3 node_tags = node_tags[0] temp_node_tags = np.empty(len(node_tags), dtype=np.int32) for i, t in enumerate(node_tags): temp_node_tags[i] = node_tag_to_idx[t] triangles = temp_node_tags.reshape(len(element_tags[0]), 3) mesh = Mesh(0, 0) mesh.vertices = vertices mesh.triangles = triangles return mesh