From 09baf91fe964feab8482c1782dbb82025f3c5249 Mon Sep 17 00:00:00 2001
From: Thomas Fischer <thomas.fischer@ufz.de>
Date: Mon, 23 Sep 2024 10:07:06 +0200
Subject: [PATCH] [MeL/IO/XDMF] Return also computed parent data type

---
 MeshLib/IO/XDMF/transformData.cpp | 8 ++++----
 MeshLib/IO/XDMF/transformData.h   | 6 +++---
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/MeshLib/IO/XDMF/transformData.cpp b/MeshLib/IO/XDMF/transformData.cpp
index 89a08219ae8..093eb53f8a3 100644
--- a/MeshLib/IO/XDMF/transformData.cpp
+++ b/MeshLib/IO/XDMF/transformData.cpp
@@ -314,14 +314,14 @@ ParentDataType getTopologyType(MeshLib::Mesh const& mesh)
     return cellTypeOGS2XDMF(ogs_cell_type).id;
 }
 
-std::vector<int> transformToXDMFTopology(MeshLib::Mesh const& mesh,
-                                         std::size_t const offset)
+std::pair<std::vector<int>, ParentDataType> transformToXDMFTopology(
+    MeshLib::Mesh const& mesh, std::size_t const offset)
 {
     std::vector<MeshLib::Element*> const& elements = mesh.getElements();
     std::vector<int> values;
     values.reserve(elements.size());
 
-    auto topology_type = getTopologyType(mesh);
+    auto const topology_type = getTopologyType(mesh);
     if (topology_type == ParentDataType::MIXED)
     {
         for (auto const& cell : elements)
@@ -349,7 +349,7 @@ std::vector<int> transformToXDMFTopology(MeshLib::Mesh const& mesh,
         }
     }
 
-    return values;
+    return {values, topology_type};
 }
 
 XdmfHdfData transformTopology(std::vector<int> const& values,
diff --git a/MeshLib/IO/XDMF/transformData.h b/MeshLib/IO/XDMF/transformData.h
index d3583b9a139..28460d90e69 100644
--- a/MeshLib/IO/XDMF/transformData.h
+++ b/MeshLib/IO/XDMF/transformData.h
@@ -75,8 +75,8 @@ std::vector<double> transformToXDMFGeometry(MeshLib::Mesh const& mesh);
  * \param mesh OGS mesh can be mesh or partitionedMesh
  * \param offset Local offset to transform local to global cell ID. Offset must
  * be zero in serial and must be defined for each process in parallel execution.
- * \return vector containing a copy of the data
+ * \return vector containing a copy of the data and the computed ParentDataType
  */
-std::vector<int> transformToXDMFTopology(MeshLib::Mesh const& mesh,
-                                         std::size_t const offset);
+std::pair<std::vector<int>, ParentDataType> transformToXDMFTopology(
+    MeshLib::Mesh const& mesh, std::size_t const offset);
 }  // namespace MeshLib::IO
-- 
GitLab