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 "sammMesh.H"
00030
00031
00032
00033 void sammMesh::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
00091 label nNewVertices = 0;
00092
00093 forAll (vertexLabels, vI)
00094 {
00095
00096
00097
00098
00099
00100 label curLabel = vertexLabels[vI];
00101
00102 bool found = false;
00103
00104
00105
00106 for (label searchI = 0; searchI < nNewVertices; searchI++)
00107 {
00108 if (newFace[searchI] == curLabel)
00109 {
00110 found = true;
00111
00112 break;
00113 }
00114 }
00115
00116 if (!found)
00117 {
00118 newFace[nNewVertices] = curLabel;
00119 nNewVertices++;
00120 }
00121 }
00122
00123 newFace.setSize(nNewVertices);
00124
00125
00126
00127
00128
00129 if (nNewVertices < 3)
00130 {
00131 FatalErrorIn("void sammMesh::fixCollapsedEdges()")
00132 << "face " << faceI << " of cell " << cellI
00133 << " is colapsed down to a point or edge, which is "
00134 << "not permitted" << endl
00135 << "original face: " << vertexLabels << endl
00136 << "purged face: " << newFace << endl
00137 << abort(FatalError);
00138 }
00139 else
00140 {
00141 vertexLabels = newFace;
00142 }
00143 }
00144 }
00145 }
00146 }
00147
00148
00149