54 void Foam::processorPointPatch::initGeometry()
62 meshPoints_ = procPolyPatch_.meshPoints();
68 const polyPatch& pp = patch();
74 masterFaces[faceI] = pp[faceI].reverseFace();
86 initPatchPatchPoints();
91 void Foam::processorPointPatch::calcGeometry()
95 calcPatchPatchPoints();
103 || !boundaryMesh().
mesh().globalData().nGlobalPoints()
106 nonGlobalPatchPoints_.setSize(meshPoints_.size());
107 forAll(nonGlobalPatchPoints_, i)
109 nonGlobalPatchPoints_[i] = i;
116 boundaryMesh().globalPatch().meshPoints();
118 nonGlobalPatchPoints_.
setSize(meshPoints_.size());
120 label noFiltPoints = 0;
122 forAll (meshPoints_, pointI)
124 label curP = meshPoints_[pointI];
128 forAll (sharedPoints, sharedI)
130 if (sharedPoints[sharedI] == curP)
139 nonGlobalPatchPoints_[noFiltPoints] = pointI;
140 meshPoints_[noFiltPoints] = curP;
145 nonGlobalPatchPoints_.setSize(noFiltPoints);
146 meshPoints_.setSize(noFiltPoints);
151 void processorPointPatch::initPatchPatchPoints()
155 Info<<
"processorPointPatch::calcPatchPatchPoints() : "
156 <<
"constructing patch-patch points"
166 Map<label> patchPointSet(2*ppmp.size());
170 patchPointSet.insert(ppmp[ppi], ppi);
178 List<List<vector> > patchPatchPointNormals(bm.size());
186 && !isA<emptyPolyPatch>(bm[
patchi])
197 forAll(meshPoints, pointi)
199 label ppp = meshPoints[pointi];
205 if (iter != patchPointSet.end())
209 if (!patchPatchPoints[patchi].
size())
211 patchPatchPoints[
patchi].setSize(ppmp.size());
212 patchPatchPointNormals[
patchi].setSize(ppmp.size());
216 patchPatchPoints[
patchi][pppi] = iter();
217 patchPatchPointNormals[
patchi][pppi] = normals[pointi];
224 patchPatchPoints[
patchi].setSize(pppi);
225 patchPatchPointNormals[
patchi].setSize(pppi);
231 OPstream toNeighbProc
240 << patchPatchPointNormals;
244 Info<<
"processorPointPatch::calcPatchPatchPoints() : "
245 <<
"constructed patch-patch points"
251 void Foam::processorPointPatch::calcPatchPatchPoints()
254 IPstream fromNeighbProc
260 label nbrNPoints(readLabel(fromNeighbProc));
262 List<List<vector> > patchPatchPointNormals(fromNeighbProc);
264 pointBoundaryMesh& pbm =
const_cast<pointBoundaryMesh&
>(boundaryMesh());
273 if (nbrNPoints != ppmp.size())
275 WarningIn(
"processorPointPatch::calcPatchPatchPoints()")
276 <<
"Processor patch " <<
name()
277 <<
" has " << ppmp.size() <<
" points; coupled patch has "
278 << nbrNPoints <<
" points." <<
endl
279 <<
" (usually due to decomposed cyclics)."
280 <<
" This might give problems" <<
endl
281 <<
" when using point fields (interpolation, mesh motion)."
288 forAll(patchPatchPoints, patchi)
291 const List<vector>& patchPointNormals = patchPatchPointNormals[
patchi];
294 if (patchPoints.size())
297 facePointPatch& fpp = refCast<facePointPatch>(pbm[
patchi]);
305 Map<label> patchPointSet(2*fmp.size());
309 patchPointSet.insert(fmp[ppi], ppi);
314 bool resized =
false;
321 if (!patchPointSet.found(ppmp[patchPoints[ppi]]))
328 if (!mp.size() && fmp.size())
336 mp.setSize(nPoints + patchPoints.size());
337 loneMeshPoints_.setSize(patchPoints.size());
338 normals.setSize(nPoints + patchPoints.size());
343 mp[
nPoints] = ppmp[patchPoints[ppi]];
344 loneMeshPoints_[lpi++] = ppmp[patchPoints[ppi]];
345 normals[nPoints++] = patchPointNormals[ppi];
354 loneMeshPoints_.setSize(lpi);
355 normals.setSize(nPoints);
362 void processorPointPatch::initMovePoints(
const pointField&)
366 void processorPointPatch::movePoints(
const pointField&)
370 void processorPointPatch::initUpdateMesh()
373 processorPointPatch::initGeometry();
377 void processorPointPatch::updateMesh()
380 processorPointPatch::calcGeometry();
386 processorPointPatch::processorPointPatch
393 procPolyPatch_(refCast<const processorPolyPatch>(patch))