From 0d1f18749ddc1c354b9f688ac51d3a291a43a5e2 Mon Sep 17 00:00:00 2001 From: Philippose Rajan Date: Sun, 4 Oct 2009 15:15:57 +0000 Subject: [PATCH] * Temporarily fixed bug: array "facedecoding" gets corrupted after converting a mesh to second order, subsequently causing a crash on using the function "GetSurfaceElementsOfFace" -- Corrected by uncommenting a previous approach used to obtain the surface elements of a face, and commenting out the currently used code till further clarification --- libsrc/meshing/meshclass.cpp | 65 +++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 27 deletions(-) diff --git a/libsrc/meshing/meshclass.cpp b/libsrc/meshing/meshclass.cpp index 3e4ee599..dfb45cc6 100644 --- a/libsrc/meshing/meshclass.cpp +++ b/libsrc/meshing/meshclass.cpp @@ -4980,42 +4980,53 @@ namespace netgen void Mesh :: GetSurfaceElementsOfFace (int facenr, Array & sei) const { - static int timer = NgProfiler::CreateTimer ("GetSurfaceElementsOfFace"); - NgProfiler::RegionTimer reg (timer); + static int timer = NgProfiler::CreateTimer ("GetSurfaceElementsOfFace"); + NgProfiler::RegionTimer reg (timer); - /* - sei.SetSize (0); - for (SurfaceElementIndex i = 0; i < GetNSE(); i++) - if ( (*this)[i].GetIndex () == facenr && (*this)[i][0] >= PointIndex::BASE && - !(*this)[i].IsDeleted() ) - sei.Append (i); - int size1 = sei.Size(); - */ + sei.SetSize (0); + for (SurfaceElementIndex i = 0; i < GetNSE(); i++) + { + if ( (*this)[i].GetIndex () == facenr && (*this)[i][0] >= PointIndex::BASE && + !(*this)[i].IsDeleted() ) + { + sei.Append (i); + } + } - sei.SetSize(0); - SurfaceElementIndex si = facedecoding[facenr-1].firstelement; - while (si != -1) - { + /* Philippose - 01/10/2009 + Commented out the following lines, and activated the originally + commented out lines above because of a bug which causes corruption + of the variable "facedecoding" when a mesh is converted to second order + */ + + // int size1 = sei.Size(); + /* + sei.SetSize(0); + + SurfaceElementIndex si = facedecoding[facenr-1].firstelement; + while (si != -1) + { if ( (*this)[si].GetIndex () == facenr && (*this)[si][0] >= PointIndex::BASE && !(*this)[si].IsDeleted() ) - { - sei.Append (si); - } + { + sei.Append (si); + } si = (*this)[si].next; - } + } + */ + + /* + // *testout << "with list = " << endl << sei << endl; - /* - // *testout << "with list = " << endl << sei << endl; - - if (size1 != sei.Size()) - { - cout << "size mismatch" << endl; - exit(1); - } - */ + if (size1 != sei.Size()) + { + cout << "size mismatch" << endl; + exit(1); + } + */ }