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

Fixed one more bug for degenerate, non-recombined extrusions, that could
lead to duplicate elements.
parent c920d855
No related branches found
No related tags found
No related merge requests found
// $Id: 3D_Extrude.cpp,v 1.67 2003-12-04 00:13:28 geuzaine Exp $ // $Id: 3D_Extrude.cpp,v 1.68 2003-12-04 19:44:36 geuzaine Exp $
// //
// Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
// //
...@@ -444,7 +444,6 @@ void Extrude_Simplex_Phase3(void *data, void *dum) ...@@ -444,7 +444,6 @@ void Extrude_Simplex_Phase3(void *data, void *dum)
Create_PriPyrTet(ep->mesh.ZonLayer[i], v); Create_PriPyrTet(ep->mesh.ZonLayer[i], v);
} }
else { else {
if(are_exist(v[3], v[1], Tree_Ares) && if(are_exist(v[3], v[1], Tree_Ares) &&
are_exist(v[4], v[2], Tree_Ares) && are_exist(v[4], v[2], Tree_Ares) &&
are_exist(v[3], v[2], Tree_Ares)) { are_exist(v[3], v[2], Tree_Ares)) {
...@@ -452,35 +451,35 @@ void Extrude_Simplex_Phase3(void *data, void *dum) ...@@ -452,35 +451,35 @@ void Extrude_Simplex_Phase3(void *data, void *dum)
Create_Sim(ep->mesh.ZonLayer[i], v[3], v[4], v[5], v[2]); 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]); Create_Sim(ep->mesh.ZonLayer[i], v[1], v[3], v[4], v[2]);
} }
if(are_exist(v[3], v[1], Tree_Ares) && else if(are_exist(v[3], v[1], Tree_Ares) &&
are_exist(v[1], v[5], Tree_Ares) && are_exist(v[1], v[5], Tree_Ares) &&
are_exist(v[3], 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[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[4], v[5], v[1]);
Create_Sim(ep->mesh.ZonLayer[i], v[3], v[1], v[5], v[2]); Create_Sim(ep->mesh.ZonLayer[i], v[3], v[1], v[5], v[2]);
} }
if(are_exist(v[3], v[1], Tree_Ares) && else if(are_exist(v[3], v[1], Tree_Ares) &&
are_exist(v[1], v[5], Tree_Ares) && are_exist(v[1], v[5], Tree_Ares) &&
are_exist(v[5], v[0], 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[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[3], v[4], v[5], v[1]);
Create_Sim(ep->mesh.ZonLayer[i], v[1], v[3], v[5], v[0]); Create_Sim(ep->mesh.ZonLayer[i], v[1], v[3], v[5], v[0]);
} }
if(are_exist(v[4], v[0], Tree_Ares) && else if(are_exist(v[4], v[0], Tree_Ares) &&
are_exist(v[4], v[2], Tree_Ares) && are_exist(v[4], v[2], Tree_Ares) &&
are_exist(v[3], 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[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[3], v[4], v[5], v[2]);
Create_Sim(ep->mesh.ZonLayer[i], v[0], v[3], v[4], v[2]); Create_Sim(ep->mesh.ZonLayer[i], v[0], v[3], v[4], v[2]);
} }
if(are_exist(v[4], v[0], Tree_Ares) && else if(are_exist(v[4], v[0], Tree_Ares) &&
are_exist(v[4], v[2], Tree_Ares) && are_exist(v[4], v[2], Tree_Ares) &&
are_exist(v[5], v[0], 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[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[3], v[4], v[5], v[0]);
Create_Sim(ep->mesh.ZonLayer[i], v[0], v[2], v[4], v[5]); Create_Sim(ep->mesh.ZonLayer[i], v[0], v[2], v[4], v[5]);
} }
if(are_exist(v[4], v[0], Tree_Ares) && else if(are_exist(v[4], v[0], Tree_Ares) &&
are_exist(v[1], v[5], Tree_Ares) && are_exist(v[1], v[5], Tree_Ares) &&
are_exist(v[5], v[0], 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[0], v[1], v[2], v[5]);
...@@ -519,7 +518,8 @@ void Extrude_Simplex_Phase2(void *data, void *dum) ...@@ -519,7 +518,8 @@ void Extrude_Simplex_Phase2(void *data, void *dum)
k++; k++;
//if((double)rand()/(double)RAND_MAX < 0.1) break; //if((double)rand()/(double)RAND_MAX < 0.1) break;
if(are_exist(v4, v2, Tree_Ares) && if(are_exist(v4, v2, Tree_Ares) &&
are_exist(v5, v3, Tree_Ares) && are_exist(v1, v6, Tree_Ares)) { are_exist(v5, v3, Tree_Ares) &&
are_exist(v1, v6, Tree_Ares)) {
TEST_IS_ALL_OK++; TEST_IS_ALL_OK++;
if(!are_exist(v4, v2, Tree_Swaps)) { if(!are_exist(v4, v2, Tree_Swaps)) {
are_del(v4, v2, Tree_Ares); are_del(v4, v2, Tree_Ares);
...@@ -541,7 +541,8 @@ void Extrude_Simplex_Phase2(void *data, void *dum) ...@@ -541,7 +541,8 @@ void Extrude_Simplex_Phase2(void *data, void *dum)
} }
} }
else if(are_exist(v1, v5, Tree_Ares) && else if(are_exist(v1, v5, Tree_Ares) &&
are_exist(v2, v6, Tree_Ares) && are_exist(v4, v3, Tree_Ares)) { are_exist(v2, v6, Tree_Ares) &&
are_exist(v4, v3, Tree_Ares)) {
TEST_IS_ALL_OK++; TEST_IS_ALL_OK++;
if(!are_exist(v1, v5, Tree_Swaps)) { if(!are_exist(v1, v5, Tree_Swaps)) {
are_del(v1, v5, Tree_Ares); are_del(v1, v5, Tree_Ares);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment