MCPcopy Create free account
hub / github.com/FEniCS/dolfinx / graph

Function graph

python/dolfinx/wrappers/graph.cpp:32–137  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

30namespace dolfinx_wrappers
31{
32void graph(nb::module_& m)
33{
34 declare_adjacency_list_init<std::int32_t, std::nullptr_t>(m, "int32");
35 declare_adjacency_list_init<std::int64_t, std::nullptr_t>(m, "int64");
36 declare_adjacency_list<std::tuple<int, std::size_t, std::int8_t>,
37 std::pair<std::int32_t, std::int32_t>>(
38 m, "int_sizet_int8__int32_int32");
39
40 using partition_fn
41 = std::function<dolfinx::graph::AdjacencyList<std::int32_t>(
42 MPICommWrapper, int,
43 const dolfinx::graph::AdjacencyList<std::int64_t>&, bool)>;
44 m.def(
45 "partitioner", []() -> partition_fn
46 { return create_partitioner_py(dolfinx::graph::partition_graph); },
47 "Default graph partitioner");
48
49#ifdef HAS_PTSCOTCH
50 m.def(
51 "partitioner_scotch",
52 [](double imbalance, int seed) -> partition_fn
53 {
54 return create_partitioner_py(dolfinx::graph::scotch::partitioner(
55 dolfinx::graph::scotch::strategy::none, imbalance, seed));
56 },
57 nb::arg("imbalance") = 0.025, nb::arg("seed") = 0,
58 "SCOTCH graph partitioner");
59#endif
60#ifdef HAS_PARMETIS
61 m.def(
62 "partitioner_parmetis",
63 [](double imbalance, std::array<int, 3> options) -> partition_fn
64 {
65 return create_partitioner_py(
66 dolfinx::graph::parmetis::partitioner(imbalance, options));
67 },
68 nb::arg("imbalance") = 1.02,
69 nb::arg("options") = std ::array<int, 3>({1, 0, 5}),
70 "ParMETIS graph partitioner");
71#endif
72#ifdef HAS_KAHIP
73 m.def(
74 "partitioner_kahip",
75 [](int mode = 1, int seed = 1, double imbalance = 0.03,
76 bool suppress_output = true) -> partition_fn
77 {
78 return create_partitioner_py(dolfinx::graph::kahip::partitioner(
79 mode, seed, imbalance, suppress_output));
80 },
81 nb::arg("mode") = 1, nb::arg("seed") = 1, nb::arg("imbalance") = 0.03,
82 nb::arg("suppress_output") = true, "KaHIP graph partitioner");
83#endif
84
85 m.def("reorder_gps", &dolfinx::graph::reorder_gps, nb::arg("graph"));
86
87 m.def(
88 "comm_graph", [](const dolfinx::common::IndexMap& map, int root)
89 { return dolfinx::graph::comm_graph(map, root); }, nb::arg("map"),

Callers 1

NB_MODULEFunction · 0.85

Calls 8

create_partitioner_pyFunction · 0.85
comm_graphFunction · 0.85
transformFunction · 0.85
comm_to_jsonFunction · 0.85
partitionerFunction · 0.50
num_nodesMethod · 0.45
linksMethod · 0.45
valueMethod · 0.45

Tested by

no test coverage detected