diff --git a/NumLib/DOF/LocalToGlobalIndexMap.cpp b/NumLib/DOF/LocalToGlobalIndexMap.cpp
index 3be86d468591a29b2a892e0b171e0bea4f1f031c..40034c2eb29109184704af316912eb01d828b773 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 7fe89ade313f426ab2a0cd502e4245b7acc196cc..41c1c02456af72fb3db23199b875237a7eb01f3c 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);