From 32d9254e36bdb88d1aa8d7257ee946c37df40cac Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Wed, 7 Jan 2009 11:08:52 +0000
Subject: [PATCH] subdivide after optimization

---
 Mesh/Generator.cpp | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp
index aacb75f468..e4a13b1f3f 100644
--- a/Mesh/Generator.cpp
+++ b/Mesh/Generator.cpp
@@ -408,9 +408,6 @@ static void Mesh2D(GModel *m)
     }
   }
   
-  // use "full quad" subdivision
-  if(CTX.mesh.algo_subdivide == 1) RefineMesh(m, false, true);
-
   // gmshCollapseSmallEdges (*m);
 
   double t2 = Cpu();
@@ -456,9 +453,6 @@ static void Mesh3D(GModel *m)
   for(unsigned int i = 0; i < connected.size(); i++)
     MeshDelaunayVolume(connected[i]);
 
-  // Use "full hexa" subdivision?
-  if(CTX.mesh.algo_subdivide == 2) RefineMesh(m, false, false, true);
-
   double t2 = Cpu();
   CTX.mesh_timer[2] = t2 - t1;
   Msg::Info("Mesh 3D complete (%g s)", CTX.mesh_timer[2]);
@@ -564,6 +558,12 @@ void GenerateMesh(GModel *m, int ask)
       if(CTX.mesh.optimize_netgen > i) OptimizeMeshNetgen(m);
     }
   }
+
+  // Subdivide into quads or hexas
+  if(m->getMeshStatus() == 2 && CTX.mesh.algo_subdivide == 1) 
+    RefineMesh(m, false, true);
+  else if(m->getMeshStatus() == 3 && CTX.mesh.algo_subdivide == 2) 
+    RefineMesh(m, false, false, true);
   
   // Create high order elements
   if(m->getMeshStatus() && CTX.mesh.order > 1) 
-- 
GitLab