From 5a03e474e093526d8f68d490eb3556c5a9eb9b26 Mon Sep 17 00:00:00 2001
From: Wenqing Wang <wenqing.wang@ufz.de>
Date: Wed, 29 Sep 2021 16:56:24 +0200
Subject: [PATCH] [MeshIO] Disable converting high order elements for the
 legacy output

---
 MeshLib/IO/Legacy/MeshIO.cpp | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/MeshLib/IO/Legacy/MeshIO.cpp b/MeshLib/IO/Legacy/MeshIO.cpp
index c0b77823e96..34466f69d87 100644
--- a/MeshLib/IO/Legacy/MeshIO.cpp
+++ b/MeshLib/IO/Legacy/MeshIO.cpp
@@ -22,6 +22,7 @@
 #include <memory>
 #include <sstream>
 
+#include "BaseLib/Error.h"
 #include "BaseLib/FileTools.h"
 #include "BaseLib/Logging.h"
 #include "BaseLib/StringTools.h"
@@ -375,6 +376,15 @@ void MeshIO::writeElements(
     out << ele_vector_size << "\n";
     for (std::size_t i(0); i < ele_vector_size; ++i)
     {
+        auto const& element = *ele_vec[i];
+        if (element.getNumberOfBaseNodes() != element.getNumberOfNodes())
+        {
+            OGS_FATAL(
+                "Found high order element in the mesh that is not required by "
+                "OGS 5 input. High order elements are generated in OGS 5 on "
+                "demand.");
+        }
+
         out << i << " ";
         if (!material_ids)
         {
@@ -384,11 +394,11 @@ void MeshIO::writeElements(
         {
             out << (*material_ids)[i] << " ";
         }
-        out << this->ElemType2StringOutput(ele_vec[i]->getGeomType()) << " ";
-        unsigned nElemNodes(ele_vec[i]->getNumberOfBaseNodes());
+        out << ElemType2StringOutput(element.getGeomType()) << " ";
+        unsigned nElemNodes(element.getNumberOfBaseNodes());
         for (std::size_t j = 0; j < nElemNodes; ++j)
         {
-            out << ele_vec[i]->getNode(j)->getID() << " ";
+            out << element.getNode(j)->getID() << " ";
         }
         out << "\n";
     }
-- 
GitLab