diff --git a/python/py_group_manager.cc b/python/py_group_manager.cc index 81b3cff91..20cb02725 100644 --- a/python/py_group_manager.cc +++ b/python/py_group_manager.cc @@ -1,96 +1,106 @@ /* -------------------------------------------------------------------------- */ #include "py_aka_array.hh" /* -------------------------------------------------------------------------- */ #include #include /* -------------------------------------------------------------------------- */ #include #include /* -------------------------------------------------------------------------- */ namespace py = pybind11; /* -------------------------------------------------------------------------- */ namespace akantu { /* -------------------------------------------------------------------------- */ void register_group_manager(py::module & mod) { /* ------------------------------------------------------------------------ */ py::class_(mod, "NodeGroup") .def( "getNodes", [](NodeGroup & self) -> decltype(auto) { return self.getNodes(); }, py::return_value_policy::reference) .def("getName", &NodeGroup::getName); /* ------------------------------------------------------------------------ */ py::class_(mod, "ElementGroup") .def( "getNodeGroup", [](ElementGroup & self) -> decltype(auto) { return self.getNodeGroup(); }, py::return_value_policy::reference) - .def("getName", &ElementGroup::getName); + .def("getName", &ElementGroup::getName) + .def( + "getElements", + [](ElementGroup & self) -> decltype(auto) { + return self.getElements(); + }, + py::return_value_policy::reference); /* ------------------------------------------------------------------------ */ py::class_(mod, "GroupManager") .def( "getElementGroup", [](GroupManager & self, const std::string & name) -> decltype(auto) { return self.getElementGroup(name); }, py::return_value_policy::reference) .def("iterateElementGroups", [](GroupManager & self) -> decltype(auto) { std::vector> groups; for (auto & group : self.iterateElementGroups()) { groups.emplace_back(group); } return groups; }) .def("iterateNodeGroups", [](GroupManager & self) -> decltype(auto) { std::vector> groups; for (auto & group : self.iterateNodeGroups()) { groups.emplace_back(group); } return groups; }) .def("createNodeGroup", &GroupManager::createNodeGroup, py::return_value_policy::reference) .def("createElementGroup", py::overload_cast( &GroupManager::createElementGroup), py::return_value_policy::reference) .def("createGroupsFromMeshDataUInt", &GroupManager::createGroupsFromMeshData) .def("createElementGroupFromNodeGroup", &GroupManager::createElementGroupFromNodeGroup, py::arg("name"), py::arg("node_group"), py::arg("dimension") = _all_dimensions) .def( "getNodeGroup", [](GroupManager & self, const std::string & name) -> decltype(auto) { return self.getNodeGroup(name); }, py::return_value_policy::reference) - .def("nodeGroups", - [](GroupManager & self) { - std::vector groups; - for (auto & g : self.iterateNodeGroups()) { - groups.push_back(&g); - } - return groups; - }, py::return_value_policy::reference) - .def("elementGroups", - [](GroupManager & self) { - std::vector groups; - for (auto & g : self.iterateElementGroups()) { - groups.push_back(&g); - } - return groups; - }, py::return_value_policy::reference) + .def( + "nodeGroups", + [](GroupManager & self) { + std::vector groups; + for (auto & g : self.iterateNodeGroups()) { + groups.push_back(&g); + } + return groups; + }, + py::return_value_policy::reference) + .def( + "elementGroups", + [](GroupManager & self) { + std::vector groups; + for (auto & g : self.iterateElementGroups()) { + groups.push_back(&g); + } + return groups; + }, + py::return_value_policy::reference) .def("createBoundaryGroupFromGeometry", &GroupManager::createBoundaryGroupFromGeometry); } } // namespace akantu