From 60a897ac46f82f9a42d3ebcfb4b7b698840b7d6f Mon Sep 17 00:00:00 2001 From: "Dmitry Yu. Naumov" <github@naumov.de> Date: Fri, 22 Jun 2018 17:49:00 +0200 Subject: [PATCH] [NL] DOF; Fix variable offsets for derived table. The variable component offsets are absolute and the derived DOF table must have all the bulk DOF table global component offset for each variable. --- NumLib/DOF/LocalToGlobalIndexMap.cpp | 10 +++++----- NumLib/DOF/LocalToGlobalIndexMap.h | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/NumLib/DOF/LocalToGlobalIndexMap.cpp b/NumLib/DOF/LocalToGlobalIndexMap.cpp index 3be86d46859..40034c2eb29 100644 --- a/NumLib/DOF/LocalToGlobalIndexMap.cpp +++ b/NumLib/DOF/LocalToGlobalIndexMap.cpp @@ -189,12 +189,12 @@ LocalToGlobalIndexMap::LocalToGlobalIndexMap( LocalToGlobalIndexMap::LocalToGlobalIndexMap( std::vector<MeshLib::MeshSubset>&& mesh_subsets, std::vector<int> const& global_component_ids, + std::vector<int> const& variable_component_offsets, std::vector<MeshLib::Element*> const& elements, NumLib::MeshComponentMap&& mesh_component_map) : _mesh_subsets(std::move(mesh_subsets)), _mesh_component_map(std::move(mesh_component_map)), - _variable_component_offsets( - to_cumulative(std::vector<int>(1, 1))) // Single variable only. + _variable_component_offsets(variable_component_offsets) { // Each subset in the mesh_subsets represents a single component. if (_mesh_subsets.size() != global_component_ids.size()) @@ -247,9 +247,9 @@ LocalToGlobalIndexMap* LocalToGlobalIndexMap::deriveBoundaryConstrainedMap( all_mesh_subsets.emplace_back(new_mesh_subset); all_mesh_subsets.emplace_back(std::move(new_mesh_subset)); - return new LocalToGlobalIndexMap(std::move(all_mesh_subsets), - global_component_ids, elements, - std::move(mesh_component_map)); + return new LocalToGlobalIndexMap( + std::move(all_mesh_subsets), global_component_ids, + _variable_component_offsets, elements, std::move(mesh_component_map)); } std::size_t LocalToGlobalIndexMap::dofSizeWithGhosts() const diff --git a/NumLib/DOF/LocalToGlobalIndexMap.h b/NumLib/DOF/LocalToGlobalIndexMap.h index 7fe89ade313..41c1c02456a 100644 --- a/NumLib/DOF/LocalToGlobalIndexMap.h +++ b/NumLib/DOF/LocalToGlobalIndexMap.h @@ -153,6 +153,7 @@ private: explicit LocalToGlobalIndexMap( std::vector<MeshLib::MeshSubset>&& mesh_subsets, std::vector<int> const& global_component_ids, + std::vector<int> const& variable_component_offsets, std::vector<MeshLib::Element*> const& elements, NumLib::MeshComponentMap&& mesh_component_map); -- GitLab