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