| 26 | } // namespace dolfinx_wrappers |
| 27 | |
| 28 | NB_MODULE(cpp, m) |
| 29 | { |
| 30 | // Create module for C++ wrappers |
| 31 | m.doc() = "DOLFINx Python interface"; |
| 32 | m.attr("__version__") = DOLFINX_VERSION; |
| 33 | |
| 34 | #ifdef NDEBUG |
| 35 | nanobind::set_leak_warnings(false); |
| 36 | #endif |
| 37 | |
| 38 | // Create common submodule [common] |
| 39 | nb::module_ common = m.def_submodule("common", "Common module"); |
| 40 | dolfinx_wrappers::common(common); |
| 41 | |
| 42 | // Create common submodule [log] |
| 43 | nb::module_ log = m.def_submodule("log", "Logging module"); |
| 44 | dolfinx_wrappers::log(log); |
| 45 | |
| 46 | // Create mesh submodule [mesh] |
| 47 | nb::module_ mesh = m.def_submodule("mesh", "Mesh library module"); |
| 48 | dolfinx_wrappers::mesh(mesh); |
| 49 | |
| 50 | // Create graph submodule [graph] |
| 51 | nb::module_ graph = m.def_submodule("graph", "Graph module"); |
| 52 | dolfinx_wrappers::graph(graph); |
| 53 | |
| 54 | // Create fem submodule [fem] |
| 55 | nb::module_ fem = m.def_submodule("fem", "FEM module"); |
| 56 | dolfinx_wrappers::assemble(fem); |
| 57 | dolfinx_wrappers::fem(fem); |
| 58 | |
| 59 | // Create geometry submodule |
| 60 | nb::module_ geometry = m.def_submodule("geometry", "Geometry module"); |
| 61 | dolfinx_wrappers::geometry(geometry); |
| 62 | |
| 63 | // Create io submodule |
| 64 | nb::module_ io = m.def_submodule("io", "I/O module"); |
| 65 | dolfinx_wrappers::io(io); |
| 66 | |
| 67 | // Create la submodule |
| 68 | nb::module_ la = m.def_submodule("la", "Linear algebra module"); |
| 69 | dolfinx_wrappers::la(la); |
| 70 | |
| 71 | // Create refinement submodule |
| 72 | nb::module_ refinement = m.def_submodule("refinement", "Refinement module"); |
| 73 | dolfinx_wrappers::refinement(refinement); |
| 74 | |
| 75 | #if defined(HAS_PETSC) && defined(HAS_PETSC4PY) |
| 76 | // PETSc-specific wrappers |
| 77 | nb::module_ nls = m.def_submodule("nls", "Nonlinear solver module"); |
| 78 | dolfinx_wrappers::petsc(fem, la, nls); |
| 79 | #endif |
| 80 | } |