Skip to content

liblaf.melon.mesh ยค

Functions:

  • graph โ€“

graph ยค

graph(mesh: Any) -> Graph
Source code in src/liblaf/melon/mesh/_graph.py
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def graph(mesh: Any) -> nx.Graph:
    mesh: pv.PolyData | pv.UnstructuredGrid = io.as_mesh(mesh).copy()
    mesh.point_data["__point_id"] = np.arange(mesh.n_points)
    edges: pv.PolyData = mesh.extract_all_edges()  # pyright: ignore[reportAssignmentType]
    edges = edges.compute_cell_sizes()  # pyright: ignore[reportAssignmentType]
    point_id: Integer[np.ndarray, " P"] = edges.point_data["__point_id"]
    lines: Integer[np.ndarray, "E 2"] = edges.lines.reshape(edges.n_lines, 3)[:, 1:]
    edgelist: pl.DataFrame = pl.from_dict(
        {
            "source": point_id[lines[:, 0]],
            "target": point_id[lines[:, 1]],
            "length": edges.cell_data["Length"],
        }  # pyright: ignore[reportArgumentType]
    )
    return nx.from_pandas_edgelist(edgelist, edge_attr="length")