From 8e8aae103a798698df59ffa7c56de7d79cdecaf1 Mon Sep 17 00:00:00 2001
From: Tom Fischer <thomas.fischer@ufz.de>
Date: Thu, 7 Nov 2024 12:02:36 +0100
Subject: [PATCH] [MeL/IO/XDMF] Init tuple_size with correct value

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

diff --git a/MeshLib/IO/XDMF/transformData.cpp b/MeshLib/IO/XDMF/transformData.cpp
index f5354095b4c..1cff421eb70 100644
--- a/MeshLib/IO/XDMF/transformData.cpp
+++ b/MeshLib/IO/XDMF/transformData.cpp
@@ -395,11 +395,16 @@ XdmfHdfData transformTopology(std::vector<std::size_t> const& values,
                               unsigned int const chunk_size_bytes)
 {
     std::string const name = "topology";
-    HdfData const hdf = {
-        values.data(), values.size(),   1, name, MeshPropertyDataType::uint64,
-        n_files,       chunk_size_bytes};
-    XdmfData const xdmf{values.size(),
-                        1,
+    auto const tuple_size = ParentDataType2String(parent_data_type).second;
+    HdfData const hdf = {values.data(),
+                         values.size() / tuple_size,
+                         tuple_size,
+                         name,
+                         MeshPropertyDataType::uint64,
+                         n_files,
+                         chunk_size_bytes};
+    XdmfData const xdmf{values.size() / tuple_size,
+                        tuple_size,
                         MeshPropertyDataType::uint64,
                         name,
                         std::nullopt,
diff --git a/MeshLib/IO/XDMF/writeXdmf.cpp b/MeshLib/IO/XDMF/writeXdmf.cpp
index f190de381a5..788d4be89f8 100644
--- a/MeshLib/IO/XDMF/writeXdmf.cpp
+++ b/MeshLib/IO/XDMF/writeXdmf.cpp
@@ -204,12 +204,14 @@ std::function<std::string(std::vector<double>)> write_xdmf(
     {
         return fmt::format(
             fmt::runtime("\n\t<Topology Type=\"{topology_type}\" "
-                         "NodesPerElement=\"{nodes_per_element}\">{dataitem}"
+                         "NodesPerElement=\"{nodes_per_element}\" "
+                         "NumberOfElements=\"{number_of_elements}\">{dataitem}"
                          "\n\t</Topology>"),
             "topology_type"_a =
                 ParentDataType2String(*topology.parent_data_type),
             "dataitem"_a = dataitem_transform(topology),
-            "nodes_per_element"_a = nodes_per_element);
+            "nodes_per_element"_a = nodes_per_element,
+            "number_of_elements"_a = topology.size_partitioned_dim);
     };
 
     // Define content of <Topology> in XDMF, same as attribute_transform
-- 
GitLab