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

update from Hang

parent 1d84f89e
No related branches found
No related tags found
No related merge requests found
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
# #
# Part 1 - node list # Part 1 - node list
54 3 0 0 56 3 0 0
1 -13.716000000000001 -5.0800000000000001 0 1 -13.716000000000001 -5.0800000000000001 0
2 -13.716000000000001 5.0800000000000001 0 2 -13.716000000000001 5.0800000000000001 0
3 -11.43 5.0800000000000001 0 3 -11.43 5.0800000000000001 0
...@@ -64,9 +64,12 @@ ...@@ -64,9 +64,12 @@
53 11.43 5.0800000000000001 -13.715999999999999 53 11.43 5.0800000000000001 -13.715999999999999
54 -11.43 5.0800000000000001 -13.715999999999999 54 -11.43 5.0800000000000001 -13.715999999999999
55 -6.6628777242868491 -0.9950764223207208 -6.66287772428685
56 4.2067426959563958 0.1964514680670118 -5.7864151699132815
# Part 2 - facet list # Part 2 - facet list
29 1 30 1
1 0 1 1 0 2
14 1 2 3 6 5 4 42 31 7 10 9 8 21 32 14 1 2 3 6 5 4 42 31 7 10 9 8 21 32
1 0 1 1 0 1
7 9 10 15 14 13 12 11 7 9 10 15 14 13 12 11
...@@ -82,7 +85,7 @@ ...@@ -82,7 +85,7 @@
4 14 15 20 19 4 14 15 20 19
1 0 1 1 0 1
4 10 7 20 15 4 10 7 20 15
1 0 1 1 0 3
18 7 31 30 29 28 27 26 25 24 23 22 21 8 16 17 18 19 20 18 7 31 30 29 28 27 26 25 24 23 22 21 8 16 17 18 19 20
1 0 1 1 0 1
4 21 22 33 32 4 21 22 33 32
...@@ -116,7 +119,7 @@ ...@@ -116,7 +119,7 @@
4 47 48 49 50 4 47 48 49 50
1 0 1 1 0 1
8 3 2 47 50 54 53 46 45 8 3 2 47 50 54 53 46 45
1 0 1 1 0 4
17 42 4 52 51 49 48 1 32 33 34 35 36 37 38 39 40 41 17 42 4 52 51 49 48 1 32 33 34 35 36 37 38 39 40 41
1 0 1 1 0 1
4 2 1 48 47 4 2 1 48 47
...@@ -125,6 +128,10 @@ ...@@ -125,6 +128,10 @@
1 0 1 1 0 1
4 54 51 52 53 4 54 51 52 53
# The following facet is a single segment with marker -1
1 0 -1
2 55 56
# Part 3 - hole list # Part 3 - hole list
0 0
......
...@@ -17031,6 +17031,7 @@ bool tetgenmesh::formcavity(triface* searchtet, arraypool* missingshs, ...@@ -17031,6 +17031,7 @@ bool tetgenmesh::formcavity(triface* searchtet, arraypool* missingshs,
if (b->verbose > 2) { if (b->verbose > 2) {
printf(" Form the cavity of missing region.\n"); printf(" Form the cavity of missing region.\n");
} }
missingsubfacecount += missingshs->objects;
// Mark this edge to avoid testing it later. // Mark this edge to avoid testing it later.
markedge(*searchtet); markedge(*searchtet);
crossedges->newindex((void **) &parytet); crossedges->newindex((void **) &parytet);
...@@ -17237,6 +17238,7 @@ bool tetgenmesh::formcavity(triface* searchtet, arraypool* missingshs, ...@@ -17237,6 +17238,7 @@ bool tetgenmesh::formcavity(triface* searchtet, arraypool* missingshs,
printf(" Formed cavity: %ld (%ld) cross tets (edges).\n", printf(" Formed cavity: %ld (%ld) cross tets (edges).\n",
crosstets->objects, crossedges->objects); crosstets->objects, crossedges->objects);
} }
crossingtetcount += crosstets->objects;
   
// Unmark all marked edges. // Unmark all marked edges.
for (i = 0; i < crossedges->objects; i++) { for (i = 0; i < crossedges->objects; i++) {
...@@ -24331,7 +24333,7 @@ void tetgenmesh::reconstructmesh() ...@@ -24331,7 +24333,7 @@ void tetgenmesh::reconstructmesh()
   
// Subfaces will be inserted into the mesh. // Subfaces will be inserted into the mesh.
if (in->trifacelist != NULL) { if (in->trifacelist != NULL) {
// The boundary faces are given. Insert them. // A .face file is given. It may contain boundary faces. Insert them.
for (i = 0; i < in->numberoftrifaces; i++) { for (i = 0; i < in->numberoftrifaces; i++) {
// Is it a subface? // Is it a subface?
if (in->trifacemarkerlist != NULL) { if (in->trifacemarkerlist != NULL) {
...@@ -24406,8 +24408,9 @@ void tetgenmesh::reconstructmesh() ...@@ -24406,8 +24408,9 @@ void tetgenmesh::reconstructmesh()
} // if (bondflag) } // if (bondflag)
} // if (marker > 0) } // if (marker > 0)
} // i } // i
} else { } // if (in->trifacelist)
// No input boundary faces. Indentify subfaces from the mesh.
// Indentify subfaces from the mesh.
// Create subfaces for hull faces (if they're not subface yet) and // Create subfaces for hull faces (if they're not subface yet) and
// interior faces which separate two different materials. // interior faces which separate two different materials.
eextras = in->numberoftetrahedronattributes; eextras = in->numberoftetrahedronattributes;
...@@ -24452,7 +24455,6 @@ void tetgenmesh::reconstructmesh() ...@@ -24452,7 +24455,6 @@ void tetgenmesh::reconstructmesh()
} }
tetloop.tet = tetrahedrontraverse(); tetloop.tet = tetrahedrontraverse();
} }
} // if (!in->trifacelist)
   
// Connect subfaces together. // Connect subfaces together.
subfaces->traversalinit(); subfaces->traversalinit();
...@@ -24492,7 +24494,7 @@ void tetgenmesh::reconstructmesh() ...@@ -24492,7 +24494,7 @@ void tetgenmesh::reconstructmesh()
   
// Segments will be introudced. // Segments will be introudced.
if (in->edgelist != NULL) { if (in->edgelist != NULL) {
// There are edges given. Insert segments. // A .edge file is given. It may contain boundary edges. Insert them.
for (i = 0; i < in->numberofedges; i++) { for (i = 0; i < in->numberofedges; i++) {
// Is it a segment? // Is it a segment?
if (in->edgemarkerlist != NULL) { if (in->edgemarkerlist != NULL) {
...@@ -24550,7 +24552,8 @@ void tetgenmesh::reconstructmesh() ...@@ -24550,7 +24552,8 @@ void tetgenmesh::reconstructmesh()
} }
} // if (marker != 0) } // if (marker != 0)
} // i } // i
} else { } // if (in->edgelist)
// Identify segments from the mesh. // Identify segments from the mesh.
// Create segments for non-manifold edges (which are shared by more // Create segments for non-manifold edges (which are shared by more
// than two subfaces), and for non-coplanar edges, i.e., two subfaces // than two subfaces), and for non-coplanar edges, i.e., two subfaces
...@@ -24623,7 +24626,6 @@ void tetgenmesh::reconstructmesh() ...@@ -24623,7 +24626,6 @@ void tetgenmesh::reconstructmesh()
} }
subloop.sh = shellfacetraverse(subfaces); subloop.sh = shellfacetraverse(subfaces);
} }
} // if (!in->edgelist)
   
// Remember the number of input segments. // Remember the number of input segments.
insegments = subsegs->items; insegments = subsegs->items;
...@@ -27152,6 +27154,8 @@ void tetgenmesh::recoverdelaunay() ...@@ -27152,6 +27154,8 @@ void tetgenmesh::recoverdelaunay()
// Queue new faces for flips. // Queue new faces for flips.
for (j = 0; j < cavetetlist->objects; j++) { for (j = 0; j < cavetetlist->objects; j++) {
parytet = (triface *) fastlookup(cavetetlist, j); parytet = (triface *) fastlookup(cavetetlist, j);
// A queued new tet may be dead.
if (!isdeadtet(*parytet)) {
for (parytet->ver = 0; parytet->ver < 4; parytet->ver++) { for (parytet->ver = 0; parytet->ver < 4; parytet->ver++) {
// Avoid queue a face twice. // Avoid queue a face twice.
fsym(*parytet, neightet); fsym(*parytet, neightet);
...@@ -27159,6 +27163,7 @@ void tetgenmesh::recoverdelaunay() ...@@ -27159,6 +27163,7 @@ void tetgenmesh::recoverdelaunay()
flippush(flipstack, parytet); flippush(flipstack, parytet);
} }
} // parytet->ver } // parytet->ver
}
} // j } // j
cavetetlist->restart(); cavetetlist->restart();
// Remove locally non-Delaunay faces. New non-Delaunay edges // Remove locally non-Delaunay faces. New non-Delaunay edges
...@@ -27386,7 +27391,7 @@ long tetgenmesh::improvequalitybyflips() ...@@ -27386,7 +27391,7 @@ long tetgenmesh::improvequalitybyflips()
} }
} }
} // i } // i
if (!remflag > 0) { if (!remflag) {
// An unremoved bad tet. Queue it again. // An unremoved bad tet. Queue it again.
unflipqueue->newindex((void **) &parybface); unflipqueue->newindex((void **) &parybface);
*parybface = *bface; *parybface = *bface;
...@@ -1393,7 +1393,7 @@ public: ...@@ -1393,7 +1393,7 @@ public:
long maxbowatcavsize, totalbowatcavsize, totaldeadtets; long maxbowatcavsize, totalbowatcavsize, totaldeadtets;
long triedgcount, triedgcopcount; long triedgcount, triedgcopcount;
long across_face_count, across_edge_count, across_max_count; long across_face_count, across_edge_count, across_max_count;
long fillregioncount; long fillregioncount, missingsubfacecount, crossingtetcount;
long cavitycount, cavityexpcount, maxcavsize, maxregionsize; long cavitycount, cavityexpcount, maxcavsize, maxregionsize;
long maxcrossfacecount, maxflipsequence; long maxcrossfacecount, maxflipsequence;
long dbg_ignore_facecount, dbg_unflip_facecount; long dbg_ignore_facecount, dbg_unflip_facecount;
...@@ -2006,7 +2006,7 @@ public: ...@@ -2006,7 +2006,7 @@ public:
maxbowatcavsize = totalbowatcavsize = totaldeadtets = 0l; maxbowatcavsize = totalbowatcavsize = totaldeadtets = 0l;
triedgcount = triedgcopcount = 0l; triedgcount = triedgcopcount = 0l;
across_face_count = across_edge_count = across_max_count = 0l; across_face_count = across_edge_count = across_max_count = 0l;
fillregioncount = 0l; fillregioncount = missingsubfacecount = crossingtetcount = 0l;
cavitycount = cavityexpcount = 0l; cavitycount = cavityexpcount = 0l;
maxcavsize = maxregionsize = 0l; maxcavsize = maxregionsize = 0l;
maxcrossfacecount = maxflipsequence = 0l; maxcrossfacecount = maxflipsequence = 0l;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment