diff --git a/NumLib/DOF/LocalToGlobalIndexMap.cpp b/NumLib/DOF/LocalToGlobalIndexMap.cpp index 841fdf17ae1beaca20d2c9ea2f65578894aac260..b2f3947fce5a45c6a97be63e3a1950746b0afc95 100644 --- a/NumLib/DOF/LocalToGlobalIndexMap.cpp +++ b/NumLib/DOF/LocalToGlobalIndexMap.cpp @@ -37,13 +37,6 @@ LocalToGlobalIndexMap::findGlobalIndicesWithElementID( std::vector<MeshLib::Node*> const& nodes, std::size_t const mesh_id, const unsigned comp_id, const unsigned comp_id_write) { - // _rows should be resized based on an element ID - std::size_t max_elem_id = 0; - for (ElementIterator e = first; e != last; ++e) - max_elem_id = std::max(max_elem_id, (*e)->getID()); - if (max_elem_id+1 > static_cast<unsigned>(_rows.rows())) - _rows.conservativeResize(max_elem_id + 1, _mesh_subsets.size()); - std::unordered_set<MeshLib::Node*> const set_nodes(nodes.begin(), nodes.end()); // For each element find the global indices for node/element @@ -161,6 +154,14 @@ LocalToGlobalIndexMap::LocalToGlobalIndexMap( // For all MeshSubsets and each of their MeshSubset's and each element // of that MeshSubset save a line of global indices. + // _rows should be resized based on an element ID + std::size_t max_elem_id = 0; + for (std::vector<MeshLib::Element*>const* eles : vec_var_elements) + { + for (auto e : *eles) + max_elem_id = std::max(max_elem_id, e->getID()); + } + _rows.resize(max_elem_id + 1, _mesh_subsets.size()); std::size_t offset = 0; for (int variable_id = 0; variable_id < static_cast<int>(vec_var_n_components.size());