Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 #include "starMesh.H"
00030 
00031 
00032 
00033 void starMesh::fixCollapsedEdges()
00034 {
00035     cellFaces_.setSize(cellShapes_.size());
00036 
00037     forAll (cellShapes_, cellI)
00038     {
00039         cellFaces_[cellI] = cellShapes_[cellI].faces();
00040     }
00041 
00042     
00043     
00044 
00045     forAll (cellFaces_, cellI)
00046     {
00047         faceList& curFaces = cellFaces_[cellI];
00048 
00049         forAll (curFaces, faceI)
00050         {
00051             face& vertexLabels = curFaces[faceI];
00052 
00053             bool duplicatesFound = false;
00054 
00055             forAll (vertexLabels, vI)
00056             {
00057                 label curLabel = vertexLabels[vI];
00058 
00059                 label nFound = 0;
00060 
00061                 forAll (vertexLabels, searchI)
00062                 {
00063                     if (vertexLabels[searchI] == curLabel)
00064                     {
00065                         nFound++;
00066                     }
00067                 }
00068 
00069                 if (nFound > 1)
00070                 {
00071                     duplicatesFound = true;
00072 
00073                     break;
00074                 }
00075             }
00076 
00077             if (duplicatesFound)
00078             {
00079                 
00080                 isShapeMesh_ = false;
00081 
00082                 
00083                 
00084                 
00085                 
00086                 
00087 
00088                 
00089                 face newFace(vertexLabels.size());
00090                 label nNewVertices = 0;
00091 
00092                 forAll (vertexLabels, vI)
00093                 {
00094                     
00095                     
00096                     
00097                     
00098 
00099                     label curLabel = vertexLabels[vI];
00100 
00101                     bool found = false;
00102 
00103                     
00104                     
00105                     for (label searchI = 0; searchI < nNewVertices; searchI++)
00106                     {
00107                         if (newFace[searchI] == curLabel)
00108                         {
00109                             found = true;
00110 
00111                             break;
00112                         }
00113                     }
00114 
00115                     if (!found)
00116                     {
00117                         newFace[nNewVertices] = curLabel;
00118                         nNewVertices++;
00119                     }
00120                 }
00121 
00122                 newFace.setSize(nNewVertices);
00123 
00124                 
00125                 
00126                 
00127 
00128                 if (nNewVertices < 3)
00129                 {
00130                     FatalErrorIn("starMesh::fixCollapsedEdges()")
00131                         << "Face " << faceI << " of cell " << cellI
00132                         << " is colapsed down to a point or edge, which is "
00133                         << "not permitted" << endl
00134                         << "original face: " << vertexLabels << endl
00135                         << "purged face: " << newFace << endl
00136                         << abort(FatalError);
00137                 }
00138                 else
00139                 {
00140                     vertexLabels = newFace;
00141                 }
00142             }
00143         }
00144     }
00145 }
00146 
00147 
00148