From a74fbf49af0767c19765d7cbf7ff8e2b7fb8250b Mon Sep 17 00:00:00 2001
From: Pierre-Alexandre Beaufort <pierre-alexandre.beaufort@uclouvain.be>
Date: Thu, 30 Jun 2016 12:30:40 +0000
Subject: [PATCH] correction for GEdges from splitting

---
 Geo/discreteFace.cpp | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/Geo/discreteFace.cpp b/Geo/discreteFace.cpp
index e270b06d75..4e356049a5 100644
--- a/Geo/discreteFace.cpp
+++ b/Geo/discreteFace.cpp
@@ -244,7 +244,7 @@ void discreteFace::printAtlasMesh(std::vector<MElement*> elm, int I)
     mv2int[*it] = count;
     count++;
   }
-  fprintf(pmesh,"$EndNodes\n$Elements\n%u\n",elm.size());
+  fprintf(pmesh,"$EndNodes\n$Elements\n%u\n",(unsigned int)elm.size());
   for(unsigned int i=0; i<elm.size(); i++){
     MElement* tri = elm[i];
     fprintf(pmesh,"%d 2 2 0 0",i+1);
@@ -284,7 +284,7 @@ void discreteFace::printAtlasMesh(discreteDiskFace* ddf, int I)
     mv2int[*it] = count;
     count++;
   }
-  fprintf(pmesh,"$EndNodes\n$Elements\n%u\n",ddf->triangles.size());
+  fprintf(pmesh,"$EndNodes\n$Elements\n%u\n",(unsigned int)ddf->triangles.size());
   for(unsigned int i=0; i<ddf->triangles.size(); i++){
     MTriangle* tri = ddf->triangles[i];
     fprintf(pmesh,"%d 2 2 0 0",i+1);
@@ -396,7 +396,9 @@ void discreteFace::setupDiscreteEdge(discreteEdge*de,std::vector<MLine*>mlines,s
     de->mesh_vertices.push_back(mlines[i]->getVertex(0));
     if(trash) trash->insert(mlines[i]->getVertex(0));
   }
-  de->createGeometry();  
+  de->createGeometry();
+  if(de->getBeginVertex()->mesh_vertices[0]!=de->lines[0]->getVertex(0))// small hack ... #mark
+    de->reverse();
 }
 
 
@@ -453,10 +455,7 @@ void discreteFace::splitDiscreteEdge ( GEdge *de , GVertex *gv, discreteEdge* ne
 void discreteFace::split(triangulation* trian,std::vector<triangulation*> &partition,int nPartitions)
 {
 #if defined(HAVE_SOLVER) && defined(HAVE_ANN) && defined(HAVE_METIS)
-  /*
-  if(trian->aspectRatio() < 4.)
-    printf("it is splitted because of aspect ratio");
-  */
+  
   int nVertex = trian->tri.size(); // number of elements
   int nEdge = trian->ed2tri.size() - trian->borderEdg.size();// number of edges, (without the boundary ones)
 
@@ -618,6 +617,7 @@ void discreteFace::updateTopology(std::vector<triangulation*>&partition)
 	      setupDiscreteVertex(v[imvt],mvt[imvt],NULL);
 	      discreteEdge* de[2];
 	      splitDiscreteEdge(onit,v[imvt],de);
+	      gGEdges.erase(onit);
 	      gGEdges.insert(de[0]);
 	      gGEdges.insert(de[1]);
 	    }// end if-elseif-else
-- 
GitLab