From 2696e0b80670764648b756548cfacb98b5eb0e87 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Fri, 2 Jul 2004 04:56:30 +0000
Subject: [PATCH] Removed the old test on ZonLayer: we actually WANT to use the
 automatic volume if we set the layer number to 0. This is really pretty nice:
 we can now get either automatic or manual numebring in all the extrusion
 commands.

---
 Mesh/3D_Extrude.cpp | 105 +++++++++++++++++++++-----------------------
 tutorial/t2.geo     |   2 +-
 tutorial/t3.geo     |  12 +++--
 3 files changed, 58 insertions(+), 61 deletions(-)

diff --git a/Mesh/3D_Extrude.cpp b/Mesh/3D_Extrude.cpp
index f0372fea40..df064be55b 100644
--- a/Mesh/3D_Extrude.cpp
+++ b/Mesh/3D_Extrude.cpp
@@ -1,4 +1,4 @@
-// $Id: 3D_Extrude.cpp,v 1.83 2004-07-02 02:40:43 geuzaine Exp $
+// $Id: 3D_Extrude.cpp,v 1.84 2004-07-02 04:56:30 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -378,6 +378,7 @@ void Create_HexPri(int iEnt, Vertex * v[8])
           v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]);
       return;
     }
+    printf("aaa %d %d\n", iEnt, THEV->Num);
     newp->iEnt = (iEnt && ep->useZonLayer()) ? iEnt : THEV->Num;
     Tree_Add(THEV->Prisms, &newp);
   }
@@ -468,64 +469,59 @@ void Extrude_Simplex_Phase3(void *data, void *dum)
   k = 0;
   for(i = 0; i < ep->mesh.NbLayer; i++) {
     for(j = 0; j < ep->mesh.NbElmLayer[i]; j++) {
-
       List_Read(L0, k, &v[0]);
       List_Read(L1, k, &v[1]);
       List_Read(L2, k, &v[2]);
       List_Read(L0, k + 1, &v[3]);
       List_Read(L1, k + 1, &v[4]);
       List_Read(L2, k + 1, &v[5]);
-
       k++;
-      if(ep->mesh.ZonLayer[i]) {
-
-        if(ep->mesh.Recombine) {
-	  Create_PriPyrTet(ep->mesh.ZonLayer[i], v);
-        }
-        else {
-          if(are_exist(v[3], v[1], Tree_Ares) &&
-             are_exist(v[4], v[2], Tree_Ares) &&
-             are_exist(v[3], v[2], Tree_Ares)) {
-            Create_Sim(ep->mesh.ZonLayer[i], v[0], v[1], v[2], v[3]);
-            Create_Sim(ep->mesh.ZonLayer[i], v[3], v[4], v[5], v[2]);
-            Create_Sim(ep->mesh.ZonLayer[i], v[1], v[3], v[4], v[2]);
-          }
-          else if(are_exist(v[3], v[1], Tree_Ares) &&
-		  are_exist(v[1], v[5], Tree_Ares) &&
-		  are_exist(v[3], v[2], Tree_Ares)) {
-            Create_Sim(ep->mesh.ZonLayer[i], v[0], v[1], v[2], v[3]);
-            Create_Sim(ep->mesh.ZonLayer[i], v[3], v[4], v[5], v[1]);
-            Create_Sim(ep->mesh.ZonLayer[i], v[3], v[1], v[5], v[2]);
-          }
-          else if(are_exist(v[3], v[1], Tree_Ares) &&
-		  are_exist(v[1], v[5], Tree_Ares) &&
-		  are_exist(v[5], v[0], Tree_Ares)) {
-            Create_Sim(ep->mesh.ZonLayer[i], v[0], v[1], v[2], v[5]);
-            Create_Sim(ep->mesh.ZonLayer[i], v[3], v[4], v[5], v[1]);
-            Create_Sim(ep->mesh.ZonLayer[i], v[1], v[3], v[5], v[0]);
-          }
-          else if(are_exist(v[4], v[0], Tree_Ares) &&
-		  are_exist(v[4], v[2], Tree_Ares) &&
-		  are_exist(v[3], v[2], Tree_Ares)) {
-            Create_Sim(ep->mesh.ZonLayer[i], v[0], v[1], v[2], v[4]);
-            Create_Sim(ep->mesh.ZonLayer[i], v[3], v[4], v[5], v[2]);
-            Create_Sim(ep->mesh.ZonLayer[i], v[0], v[3], v[4], v[2]);
-          }
-          else if(are_exist(v[4], v[0], Tree_Ares) &&
-		  are_exist(v[4], v[2], Tree_Ares) &&
-		  are_exist(v[5], v[0], Tree_Ares)) {
-            Create_Sim(ep->mesh.ZonLayer[i], v[0], v[1], v[2], v[4]);
-            Create_Sim(ep->mesh.ZonLayer[i], v[3], v[4], v[5], v[0]);
-            Create_Sim(ep->mesh.ZonLayer[i], v[0], v[2], v[4], v[5]);
-          }
-          else if(are_exist(v[4], v[0], Tree_Ares) &&
-		  are_exist(v[1], v[5], Tree_Ares) &&
-		  are_exist(v[5], v[0], Tree_Ares)) {
-            Create_Sim(ep->mesh.ZonLayer[i], v[0], v[1], v[2], v[5]);
-            Create_Sim(ep->mesh.ZonLayer[i], v[3], v[4], v[5], v[0]);
-            Create_Sim(ep->mesh.ZonLayer[i], v[0], v[1], v[4], v[5]);
-          }
-        }
+      if(ep->mesh.Recombine) {
+	Create_PriPyrTet(ep->mesh.ZonLayer[i], v);
+      }
+      else {
+	if(are_exist(v[3], v[1], Tree_Ares) &&
+	   are_exist(v[4], v[2], Tree_Ares) &&
+	   are_exist(v[3], v[2], Tree_Ares)) {
+	  Create_Sim(ep->mesh.ZonLayer[i], v[0], v[1], v[2], v[3]);
+	  Create_Sim(ep->mesh.ZonLayer[i], v[3], v[4], v[5], v[2]);
+	  Create_Sim(ep->mesh.ZonLayer[i], v[1], v[3], v[4], v[2]);
+	}
+	else if(are_exist(v[3], v[1], Tree_Ares) &&
+		are_exist(v[1], v[5], Tree_Ares) &&
+		are_exist(v[3], v[2], Tree_Ares)) {
+	  Create_Sim(ep->mesh.ZonLayer[i], v[0], v[1], v[2], v[3]);
+	  Create_Sim(ep->mesh.ZonLayer[i], v[3], v[4], v[5], v[1]);
+	  Create_Sim(ep->mesh.ZonLayer[i], v[3], v[1], v[5], v[2]);
+	}
+	else if(are_exist(v[3], v[1], Tree_Ares) &&
+		are_exist(v[1], v[5], Tree_Ares) &&
+		are_exist(v[5], v[0], Tree_Ares)) {
+	  Create_Sim(ep->mesh.ZonLayer[i], v[0], v[1], v[2], v[5]);
+	  Create_Sim(ep->mesh.ZonLayer[i], v[3], v[4], v[5], v[1]);
+	  Create_Sim(ep->mesh.ZonLayer[i], v[1], v[3], v[5], v[0]);
+	}
+	else if(are_exist(v[4], v[0], Tree_Ares) &&
+		are_exist(v[4], v[2], Tree_Ares) &&
+		are_exist(v[3], v[2], Tree_Ares)) {
+	  Create_Sim(ep->mesh.ZonLayer[i], v[0], v[1], v[2], v[4]);
+	  Create_Sim(ep->mesh.ZonLayer[i], v[3], v[4], v[5], v[2]);
+	  Create_Sim(ep->mesh.ZonLayer[i], v[0], v[3], v[4], v[2]);
+	}
+	else if(are_exist(v[4], v[0], Tree_Ares) &&
+		are_exist(v[4], v[2], Tree_Ares) &&
+		are_exist(v[5], v[0], Tree_Ares)) {
+	  Create_Sim(ep->mesh.ZonLayer[i], v[0], v[1], v[2], v[4]);
+	  Create_Sim(ep->mesh.ZonLayer[i], v[3], v[4], v[5], v[0]);
+	  Create_Sim(ep->mesh.ZonLayer[i], v[0], v[2], v[4], v[5]);
+	}
+	else if(are_exist(v[4], v[0], Tree_Ares) &&
+		are_exist(v[1], v[5], Tree_Ares) &&
+		are_exist(v[5], v[0], Tree_Ares)) {
+	  Create_Sim(ep->mesh.ZonLayer[i], v[0], v[1], v[2], v[5]);
+	  Create_Sim(ep->mesh.ZonLayer[i], v[3], v[4], v[5], v[0]);
+	  Create_Sim(ep->mesh.ZonLayer[i], v[0], v[1], v[4], v[5]);
+	}
       }
     }
   }
@@ -557,15 +553,12 @@ void Extrude_Quadrangle_Phase3(void *data, void *dum)
       List_Read(L1, k, &v[1]);
       List_Read(L2, k, &v[2]);
       List_Read(L3, k, &v[3]);
-
       List_Read(L0, k + 1, &v[4]);
       List_Read(L1, k + 1, &v[5]);
       List_Read(L2, k + 1, &v[6]);
       List_Read(L3, k + 1, &v[7]);
-
       k++;
-      if(ep->mesh.ZonLayer[i])
-	Create_HexPri(ep->mesh.ZonLayer[i], v);
+      Create_HexPri(ep->mesh.ZonLayer[i], v);
     }
   }
 }
diff --git a/tutorial/t2.geo b/tutorial/t2.geo
index 3ec4488e81..a3dbd3b90d 100644
--- a/tutorial/t2.geo
+++ b/tutorial/t2.geo
@@ -29,7 +29,7 @@ Translate {-0.05, 0, 0} { Point{3}; }
 
 tmp[] = Translate {0, 0.1, 0} { Duplicata{ Point{3}; } } ;
 
-// In this case, we assign the result of the Translate command to a
+// In this case, we assigned the result of the Translate command to a
 // list, so that we can retrieve the number of the newly created point
 // and use it to create new lines and a new surface:
 
diff --git a/tutorial/t3.geo b/tutorial/t3.geo
index eb27f45ac2..6dc9881339 100644
--- a/tutorial/t3.geo
+++ b/tutorial/t3.geo
@@ -36,14 +36,18 @@ Extrude Surface { 122, {0,1,0} , {-0.1,0,0.1} , -Pi/2 } {
 // Note that a translation ({-2*h,0,0}) and a rotation ({1,0,0},
 // {0,0.15,0.25}, Pi/2) can also be combined:
 
-Extrude Surface {news-1, {-2*h,0,0}, {1,0,0} , {0,0.15,0.25} , Pi/2}{ 
-  Layers {10,9004,1}; Recombine; 
-};
+aa[] = Extrude Surface {news-1, {-2*h,0,0}, {1,0,0} , {0,0.15,0.25} , Pi/2}{ 
+  Layers {10,0,1}; Recombine; 
+}; ;
+
+// In this last extrusion command, we set the volume number to 0,
+// which means that the elements will simply belong the automatically
+// created volume (whose number we get from the aa[] list).
 
 // We finally define a new physical volume to save all the tetrahedra
 // with a common region number (101):
 
-Physical Volume(101) = {9000:9004};
+Physical Volume(101) = {9000:9004, aa[1]};
 
 // Let us now change some options... Since all interactive options are
 // accessible in Gmsh's scripting language, we can for example define
-- 
GitLab