From cdccd144dae8453ba71367a555587ad76c6efe1f Mon Sep 17 00:00:00 2001
From: MARMAJOU ISABELLE <id.counilh@wanadoo.fr>
Date: Wed, 26 Mar 2025 16:21:41 +0100
Subject: [PATCH] Implement output of bad polynomial mesh if a cell volume is
 negative

---
 src/mesh/MeshData.cpp | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/mesh/MeshData.cpp b/src/mesh/MeshData.cpp
index 0eadfdf30..c1a223782 100644
--- a/src/mesh/MeshData.cpp
+++ b/src/mesh/MeshData.cpp
@@ -29,11 +29,16 @@ MeshData<Mesh<Dimension>>::_storeBadMesh()
 template void MeshData<Mesh<1>>::_storeBadMesh();
 template void MeshData<Mesh<2>>::_storeBadMesh();
 template void MeshData<Mesh<3>>::_storeBadMesh();
-
 void
 MeshData<PolynomialMesh<2>>::_storeBadMesh()
 {
-  throw NotImplementedError("storeBadMesh");
+  VTKWriter writer("bad_mesh");
+  writer.writeOnMesh(m_mesh.meshVariant(),
+                     {std::make_shared<NamedItemValueVariant>(std::make_shared<ItemValueVariant>(m_Vj), "volume")});
+  std::ostringstream error_msg;
+  error_msg << "mesh contains cells of non-positive volume (see " << rang::fgB::yellow << "bad_mesh.pvd"
+            << rang::fg::reset << " file).";
+  throw NormalError(error_msg.str());
 }
 
 template <size_t MeshDegree>
-- 
GitLab