From cbb7f90d9ea68143372807f6c34428cac1e640d5 Mon Sep 17 00:00:00 2001
From: Thomas Fischer <thomas.fischer@ufz.de>
Date: Fri, 15 Nov 2019 14:31:40 +0100
Subject: [PATCH] [MGTL] Improve error msg. in MeshNodeSearcher.

---
 MeshGeoToolsLib/MeshNodeSearcher.cpp | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/MeshGeoToolsLib/MeshNodeSearcher.cpp b/MeshGeoToolsLib/MeshNodeSearcher.cpp
index 8b67976f638..85df600ca7d 100644
--- a/MeshGeoToolsLib/MeshNodeSearcher.cpp
+++ b/MeshGeoToolsLib/MeshNodeSearcher.cpp
@@ -11,6 +11,7 @@
 #include "MeshNodeSearcher.h"
 
 #include <typeinfo>
+#include <sstream>
 
 #include "HeuristicSearchLength.h"
 #include "MeshNodesAlongPolyline.h"
@@ -109,12 +110,21 @@ std::vector<std::size_t> MeshNodeSearcher::getMeshNodeIDs(
         }
         if (ids.size() != 1)
         {
+            std::stringstream ss;
+            auto const& bulk_nodes = _mesh.getNodes();
+            for (auto const id : ids)
+            {
+                ss << "- bulk node: " << (*bulk_nodes[id]) << ", distance: "
+                   << std::sqrt(MathLib::sqrDist(bulk_nodes[id]->getCoords(),
+                                                 p.getCoords()))
+                   << "\n";
+            }
             OGS_FATAL(
                 "Found %d nodes in the mesh for point %d : (%g, %g, %g) in %g "
                 "epsilon radius in the mesh '%s'. Expected to find exactly one "
-                "node.",
+                "node.\n%s",
                 ids.size(), p.getID(), p[0], p[1], p[2], epsilon_radius,
-                _mesh.getName().c_str());
+                _mesh.getName().c_str(), ss.str().c_str());
         }
         node_ids.push_back(ids.front());
     }
-- 
GitLab