17 const std::vector<MeshLib::Node*>& nodes(
_mesh->getNodes());
18 std::transform(begin(nodes), end(nodes), back_inserter(
_active_nodes),
19 [
this](
Node const*
const n)
20 {
return _mesh->getElementsConnectedToNode(*n).size(); });
24 std::vector<int>
const& vec_inactive_matIDs)
29 auto* const materialIds =
30 mesh->getProperties().getPropertyVector<int>(
"MaterialIDs");
31 for (auto material_id : vec_inactive_matIDs)
33 for (auto e : _mesh->getElements())
35 if ((*materialIds)[e->getID()] == material_id)
37 setElementStatus(e->getID(), false);
43 _vec_active_eles.reserve(getNumberOfActiveElements());
44 const std::size_t nElems(_mesh->getNumberOfElements());
45 for (std::size_t i = 0; i < nElems; ++i)
47 if (_element_status[i])
49 _vec_active_eles.push_back(
54 _vec_active_nodes.reserve(this->getNumberOfActiveNodes());
55 const std::size_t nNodes(_mesh->getNumberOfNodes());
56 for (std::size_t i = 0; i < nNodes; ++i)
58 if (_active_nodes[i] > 0)
60 _vec_active_nodes.push_back(
66 "Deactivated {:d} materials and resulting active {:d} nodes and {:d} "
68 vec_inactive_matIDs.size(),
69 _vec_active_nodes.size(),
70 _vec_active_eles.size());
80 return _mesh->getElements();
90 return _mesh->getNodes();
101 return static_cast<std::size_t
>(
109 const int change = (status) ? 1 : -1;
111 const unsigned nElemNodes(
_mesh->getElement(i)->getNumberOfNodes());
113 _mesh->getElement(i)->getNodes();
114 for (
unsigned j = 0; j < nElemNodes; ++j)
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
std::size_t getID() const
std::vector< MeshLib::Element * > _vec_active_eles
bool isActiveNode(MeshLib::Node const *node) const
Returns the status of the given node.
void setElementStatus(std::size_t i, bool status)
Sets the status of element i.
MeshLib::Mesh const *const _mesh
The mesh for which the element status is administrated.
bool const _hasAnyInactive
std::vector< bool > _element_status
Element status for each mesh element (active/inactive = true/false)
ElementStatus(MeshLib::Mesh const *const mesh, bool hasAnyInactive=false)
Constructor assuming all nodes and elements.
std::size_t getNumberOfActiveElements() const
Returns the total number of active elements.
std::vector< MeshLib::Node * > const & getActiveNodes() const
Returns a vector of active node IDs.
std::vector< MeshLib::Element * > const & getActiveElements() const
Returns a vector of active element IDs.
std::size_t getNumberOfActiveNodes() const
Returns the total number of active nodes.
std::vector< MeshLib::Node * > _vec_active_nodes
std::vector< unsigned char > _active_nodes
Node status for each mesh node (value = number of active elements connected to node,...
Properties & getProperties()
bool existsPropertyVector(std::string_view name) const