Skip to content
Snippets Groups Projects
Commit 2696e0b8 authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

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.
parent bbe06f55
No related branches found
No related tags found
No related merge requests found
// $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);
}
}
}
......
......@@ -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:
......
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment