53 for(
label faceI=0;faceI<nInternalFaces;++faceI)
54 if( !removeFace[faceI] )
57 faces[nFaces].
transfer(faces[faceI]);
59 newFaceLabel[faceI] = nFaces;
70 const label oldStart = boundaries[patchI].patchStart();
71 const label oldNumFacesInPatch = boundaries[patchI].patchSize();
73 patchStart[npI] = nFaces;
74 nFacesInPatch[npI] = 0;
76 for(
label faceI=0;faceI<oldNumFacesInPatch;++faceI)
77 if( !removeFace[oldStart+faceI] )
80 if( nFaces < (oldStart+faceI) )
81 faces[nFaces].
transfer(faces[oldStart+faceI]);
82 newFaceLabel[oldStart+faceI] = nFaces++;
90 boundaries[patchI].patchStart() = patchStart[patchI];
91 boundaries[patchI].patchSize() = nFacesInPatch[patchI];
100 forAll(procBoundaries, patchI)
101 nProcFaces += procBoundaries[patchI].patchSize();
107 forAll(procBoundaries, patchI)
109 const label start = procBoundaries[patchI].patchStart();
110 const label end = start + procBoundaries[patchI].patchSize();
111 for(
label faceI=start;faceI<end;++faceI)
112 procFaces[nProcFaces++].transfer(faces[faceI]);
118 forAll(procBoundaries, patchI)
121 const label start = procBoundaries[patchI].patchStart();
122 boolList removeProcFace(procBoundaries[patchI].patchSize(),
false);
123 forAll(removeProcFace, faceI)
124 if( removeFace[start+faceI] )
125 removeProcFace[faceI] =
true;
130 procBoundaries[patchI].neiProcNo(),
131 removeProcFace.byteSize()
133 toOtherProc << removeProcFace;
139 forAll(procBoundaries, patchI)
141 const label start = procBoundaries[patchI].patchStart();
146 procBoundaries[patchI].neiProcNo()
148 fromOtherProc >> removeOtherProcFace;
150 forAll(removeOtherProcFace, faceI)
152 if( !removeFace[start+faceI] && removeOtherProcFace[faceI] )
157 ordinaryBoundaryFace[nProcFaces] =
true;
158 ++boundaries[npI].patchSize();
159 if( nFaces < (start+faceI) )
160 faces[nFaces].
transfer(procFaces[nProcFaces]);
161 newFaceLabel[start+faceI] = nFaces++;
168 if( nProcFaces != procFaces.
size() )
171 "void polyMeshGenModifier::removeFaces()"
181 forAll(procBoundaries, patchI)
183 const label oldStart = procBoundaries[patchI].patchStart();
184 const label oldNumFacesInPatch = procBoundaries[patchI].patchSize();
186 patchStart[npI] = nFaces;
187 neiProcNo[npI] = procBoundaries[patchI].neiProcNo();
188 nFacesInPatch[npI] = 0;
190 for(
label faceI=0;faceI<oldNumFacesInPatch;++faceI)
193 !removeFace[oldStart+faceI] &&
194 !ordinaryBoundaryFace[nProcFaces]
197 ++nFacesInPatch[npI];
198 faces[nFaces].
transfer(procFaces[nProcFaces]);
199 newFaceLabel[oldStart+faceI] = nFaces++;
209 forAll(procBoundaries, patchI)
211 procBoundaries[patchI].patchSize() = nFacesInPatch[patchI];
212 procBoundaries[patchI].patchStart() = patchStart[patchI];
223 # pragma omp parallel for if( cells.size() > 1000 ) schedule(dynamic, 40)
232 if( newFaceLabel[
c[fI]] != -1 )
233 newC.
append(newFaceLabel[
c[fI]]);
235 c.setSize(newC.
size());
243 Info <<
"Finished removing faces" <<
endl;
257 if( newFaceLabel[faceI] != -1 )
260 const face&
f = faces[faceI];
269 if( faces[faceJ] ==
f )
273 newFaceLabel[faceI] = nFaces;
275 newFaceLabel[duplicates[i]] = nFaces;
284 for(
label faceI=0;faceI<nInternalFaces;++faceI)
286 if( newFaceLabel[faceI] >= faceI )
289 faces[newFaceLabel[faceI]].
transfer(faces[faceI]);
297 const label start = patch.patchStart();
298 const label end = start + patch.patchSize();
300 patch.patchStart() = newFaceLabel[start];
301 for(
label faceI=start;faceI<end;++faceI)
303 if( newFaceLabel[faceI] < faceI )
304 faces[newFaceLabel[faceI]].
transfer(faces[faceI]);
317 for(
label faceI=start;faceI<end;++faceI)
319 if( newFaceLabel[faceI] < faceI )
320 faces[newFaceLabel[faceI]].
transfer(faces[faceI]);
330 # pragma omp parallel for if( cells.size() > 1000 ) schedule(dynamic, 40)
339 if( newFaceLabel[
c[fI]] != -1 )
340 newC.
append(newFaceLabel[
c[fI]]);
342 c.setSize(newC.
size());