From d6777b612e3154767027c5c2d65114d19ee66e8f Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Fri, 13 Jun 2008 21:16:08 +0000
Subject: [PATCH] deal with netgen exceptions

---
 contrib/Netgen/nglib_addon.cpp | 30 ++++++++++++++++++++----------
 1 file changed, 20 insertions(+), 10 deletions(-)

diff --git a/contrib/Netgen/nglib_addon.cpp b/contrib/Netgen/nglib_addon.cpp
index 51527333fa..8796bd7105 100644
--- a/contrib/Netgen/nglib_addon.cpp
+++ b/contrib/Netgen/nglib_addon.cpp
@@ -31,7 +31,7 @@ class mystreambuf: public streambuf
     }
     else{
       if(!strncmp(txt, "ERROR", 5))
-	Msg::Fatal(txt);
+	Msg::Error(txt);
       else
 	Msg::Info(txt);
     }
@@ -76,11 +76,16 @@ Ng_Result NgAddOn_GenerateVolumeMesh(Ng_Mesh *mesh, double maxh)
   MeshingParameters mparam;
   mparam.uselocalh = 1;
   mparam.maxh = maxh;
-
-  m->CalcLocalH();
-  MeshVolume(mparam, *m);
-  //RemoveIllegalElements(*m);
-  //OptimizeVolume(mparam, *m);
+  
+  try{
+    m->CalcLocalH();
+    MeshVolume(mparam, *m);
+    //RemoveIllegalElements(*m);
+    //OptimizeVolume(mparam, *m);
+  }
+  catch(netgen::NgException error){
+    return NG_VOLUME_FAILURE;
+  }
   return NG_OK;
 }
 
@@ -93,10 +98,15 @@ Ng_Result NgAddOn_OptimizeVolumeMesh(Ng_Mesh *mesh, double maxh)
   mparam.uselocalh = 1;
   mparam.maxh = maxh;
 
-  m->CalcLocalH();
-  //MeshVolume(mparam, *m);
-  RemoveIllegalElements(*m);
-  OptimizeVolume(mparam, *m);
+  try{
+    m->CalcLocalH();
+    //MeshVolume(mparam, *m);
+    RemoveIllegalElements(*m);
+    OptimizeVolume(mparam, *m);
+  }
+  catch(netgen::NgException error){
+    return NG_VOLUME_FAILURE;
+  }
   return NG_OK;
 }
 
-- 
GitLab