def getTriangleMesh(fileName=None): gmsh.model.mesh.generate(2) if not fileName is None: gmsh.write(fileName + ".msh") # Renumber triangle nodeTags array with indices into aVertex nodeTags, coord, parametricCoord = gmsh.model.mesh.getNodes(2, -1, True) aVertex = np.asarray(coord, dtype=np.float32).reshape(len(nodeTags), 3) nodeTagToIdx = dict() for i, t in enumerate(nodeTags): nodeTagToIdx[t] = i elementTypes, elementTags, nodeTags = gmsh.model.mesh.getElements(2, -1) assert len(elementTypes) == 1 and elementTypes[0] == 2 assert len(elementTags) == 1 assert len(nodeTags) == 1 and len(nodeTags[0]) == len(elementTags[0]) * 3 nodeTags = nodeTags[0] aTempNodeTags = np.empty(len(nodeTags), dtype=np.int32) for i, t in enumerate(nodeTags): aTempNodeTags[i] = nodeTagToIdx[t] aTriangle = aTempNodeTags.reshape(len(elementTags[0]), 3) oMesh = Mesh(0, 0) oMesh.aVertex = aVertex oMesh.aTriangle = aTriangle return oMesh