69 const label procI = globalIndexAndTransform::processor(info);
70 const label index = globalIndexAndTransform::index(info);
76 globalIndexAndTransform::processor(allInfo[i]) == procI
77 && globalIndexAndTransform::index(allInfo[i]) == index
93 scalar tol = refCast<const coupledPolyPatch>
95 mesh_.boundaryMesh()[patchI]
111 sendInfo[i] = globalIndexAndTransform::encode
113 globalIndexAndTransform::processor(info[i]),
114 globalIndexAndTransform::index(info[i]),
115 globalTransforms_.addToTransformIndex
117 globalIndexAndTransform::transformIndex(info[i]),
134 const label patchPointI,
152 const face&
f = pp[patchFaceI];
158 allInfo.
append(addSendTransform(pp.
index(), knownInfo));
168 const label localPointI,
172 bool anyChanged =
false;
187 label index = findSamePoint(myInfo, nbrInfo[i]);
192 newInfo[newI++] = nbrInfo[i];
201 if (myInfo[index] == nbrInfo[i])
207 label myTransform = globalIndexAndTransform::transformIndex
211 label nbrTransform = globalIndexAndTransform::transformIndex
217 label minTransform = globalTransforms_.minimumTransformIndex
223 if (minTransform != myTransform)
226 newInfo[index] = nbrInfo[i];
243 const label meshPointI
248 meshToPatchPoint.size() == 0
250 : meshToPatchPoint[meshPointI]
258 const label localPointI
263 patchToMeshPoint.
size() == 0
265 : patchToMeshPoint[localPointI]
275 const label localPointI
278 label infoChanged =
false;
283 if (iter != meshToProcPoint_.end())
285 if (mergeInfo(nbrInfo, localPointI, procPoints_[iter()]))
296 globalIndexAndTransform::encode
300 globalTransforms_.nullTransformIndex()
304 if (mergeInfo(nbrInfo, localPointI, knownInfo))
307 meshToProcPoint_.insert(localPointI, procPoints_.size());
309 procPoints_.append(knownInfo);
323 const label localPointI
326 label infoChanged =
false;
331 if (iter != meshToProcPoint_.end())
333 if (mergeInfo(nbrInfo, localPointI, procPoints_[iter()]))
341 meshToProcPoint_.insert(localPointI, procPoints_.size());
343 procPoints_.append(nbrInfo);
357 label procI = globalIndexAndTransform::processor(pointInfo);
358 label index = globalIndexAndTransform::index(pointInfo);
359 label trafoI = globalIndexAndTransform::transformIndex(pointInfo);
361 Pout<<
" proc:" << procI;
362 Pout<<
" localpoint:";
364 Pout<<
" through transform:"
365 << trafoI <<
" bits:"
366 << globalTransforms_.decodeTransformIndex(trafoI);
368 if (procI == Pstream::myProcNo())
370 label meshPointI = localToMeshPoint(patchToMeshPoint, index);
371 Pout<<
" at:" << mesh_.points()[meshPointI];
384 printProcPoint(patchToMeshPoint, pointInfo[i]);
411 forAll(meshPoints, patchPointI)
413 label meshPointI = meshPoints[patchPointI];
414 label localPointI = meshToLocalPoint
423 globalIndexAndTransform::encode
427 globalTransforms_.nullTransformIndex()
436 if (storeInitialInfo(knownInfo, localPointI))
438 changedPoints.
insert(localPointI);
449 label meshPointI = meshPoints[boundaryPoints[i]];
450 label localPointI = meshToLocalPoint
459 globalIndexAndTransform::encode
463 globalTransforms_.nullTransformIndex()
467 if (storeInitialInfo(knownInfo, localPointI))
469 changedPoints.
insert(localPointI);
481 const bool mergeSeparated,
488 const labelPairList& patchInfo = globalTransforms_.patchTransformSign();
499 (Pstream::parRun() && isA<processorPolyPatch>(pp))
500 && (mergeSeparated || patchInfo[patchI].first() == -1)
504 refCast<const processorPolyPatch>(pp);
521 forAll(meshPoints, patchPointI)
523 label meshPointI = meshPoints[patchPointI];
524 label localPointI = meshToLocalPoint
530 if (changedPoints.
found(localPointI))
532 label index = meshToProcPoint_[localPointI];
554 Pout<<
" Sending from " << pp.
name() <<
" to "
560 toNeighbour <<
patchFaces << indexInFace << allInfo;
573 const bool mergeSeparated,
581 const labelPairList& patchInfo = globalTransforms_.patchTransformSign();
584 changedPoints.
clear();
592 (Pstream::parRun() && isA<processorPolyPatch>(pp))
593 && (mergeSeparated || patchInfo[patchI].first() == -1)
597 refCast<const processorPolyPatch>(pp);
605 fromNeighbour >>
patchFaces >> indexInFace >> nbrInfo;
621 label index = (
f.size() - indexInFace[i]) %
f.size();
624 label meshPointI =
f[index];
626 label localPointI = meshToLocalPoint
632 if (mergeInfo(nbrInfo[i], localPointI))
634 changedPoints.
insert(localPointI);
641 isA<cyclicPolyPatch>(pp)
642 && refCast<const cyclicPolyPatch>(pp).owner()
644 && (mergeSeparated || patchInfo[patchI].first() == -1)
651 refCast<const cyclicPolyPatch>(pp);
656 const labelList coupledMeshPoints(reverseMeshPoints(cycPatch));
660 label meshPointA = meshPoints[i];
661 label meshPointB = coupledMeshPoints[i];
663 if (meshPointA != meshPointB)
670 label localA = meshToLocalPoint
675 label localB = meshToLocalPoint
684 meshToProcPoint_.find(localA);
686 if (procPointA != meshToProcPoint_.end())
691 procPoints_[procPointA()]
694 if (mergeInfo(infoA, localB))
696 changedPoints.
insert(localB);
702 meshToProcPoint_.find(localB);
704 if (procPointB != meshToProcPoint_.end())
709 procPoints_[procPointB()]
712 if (mergeInfo(infoB, localA))
714 changedPoints.
insert(localA);
733 Map<label> oldMeshToProcPoint(meshToProcPoint_.xfer());
734 meshToProcPoint_.resize(oldMeshToProcPoint.size());
736 procPoints_.setCapacity(oldProcPoints.size());
741 label localPointI = iter.key();
744 if (pointInfo.
size() == 2)
751 label proc0 = globalIndexAndTransform::processor(pointInfo[0]);
752 label proc1 = globalIndexAndTransform::processor(pointInfo[1]);
757 proc0 == Pstream::myProcNo()
758 && directNeighbours.found
760 globalIndexAndTransform::index(pointInfo[0])
764 proc1 == Pstream::myProcNo()
765 && directNeighbours.found
767 globalIndexAndTransform::index(pointInfo[1])
773 if (proc0 == Pstream::myProcNo())
780 else if (proc1 == Pstream::myProcNo())
802 meshToProcPoint_.insert(localPointI, procPoints_.size());
803 procPoints_.append(pointInfo);
806 else if (pointInfo.
size() == 1)
813 globalIndexAndTransform::processor(pointInfo[0])
814 != Pstream::myProcNo()
815 || !directNeighbours.found
817 globalIndexAndTransform::index(pointInfo[0])
821 meshToProcPoint_.insert(localPointI, procPoints_.size());
822 procPoints_.append(pointInfo);
827 meshToProcPoint_.insert(localPointI, procPoints_.size());
828 procPoints_.append(pointInfo);
832 procPoints_.shrink();
833 meshToProcPoint_.resize(2*procPoints_.size());
844 faceList masterFaces(nbrPatch.size());
848 masterFaces[faceI] = nbrPatch[faceI].reverseFace();
863 const bool keepAllPoints,
864 const bool mergeSeparated
869 Pout<<
"globalPoints::calculateSharedPoints(..) : "
870 <<
"doing processor to processor communication to get sharedPoints"
872 <<
" keepAllPoints :" << keepAllPoints <<
endl
873 <<
" mergeSeparated:" << mergeSeparated <<
endl
892 initOwnPoints(meshToPatchPoint,
true, changedPoints);
902 Pstream::defaultCommsType == Pstream::scheduled
903 ? Pstream::nonBlocking
904 : Pstream::defaultCommsType
929 neighbourList = meshToProcPoint_;
933 bool changed =
false;
940 Pstream::defaultCommsType == Pstream::scheduled
941 ? Pstream::nonBlocking
942 : Pstream::defaultCommsType
962 changed = changedPoints.
size() > 0;
985 remove(patchToMeshPoint, neighbourList);
1004 pointPoints_.setSize(globalIndices_.localSize());
1010 if (pointInfo.
size() >= 2)
1013 const labelPair& masterInfo = pointInfo[0];
1018 globalIndexAndTransform::processor(masterInfo)
1019 == Pstream::myProcNo()
1021 && (globalIndexAndTransform::index(masterInfo) == iter.key())
1024 labelList& pPoints = pointPoints_[iter.key()];
1027 labelPairList& trafoPPoints = transformedPoints[iter.key()];
1030 label nonTransformI = 0;
1031 label transformI = 0;
1033 for (
label i = 1; i < pointInfo.
size(); i++)
1036 label procI = globalIndexAndTransform::processor(info);
1037 label index = globalIndexAndTransform::index(info);
1043 if (
transform == globalTransforms_.nullTransformIndex())
1045 pPoints[nonTransformI++] = globalIndices_.toGlobal
1053 trafoPPoints[transformI++] = info;
1057 pPoints.
setSize(nonTransformI);
1058 trafoPPoints.
setSize(transformI);
1074 transformedPointPoints_,
1082 Pout<<
"globalPoints::calculateSharedPoints(..) : "
1083 <<
"Finished global points" <<
endl;
1094 const bool keepAllPoints,
1095 const bool mergeSeparated
1099 globalIndices_(mesh_.nPoints()),
1100 globalTransforms_(
mesh),
1101 nPatchPoints_(countPatchPoints(
mesh.boundaryMesh())),
1102 procPoints_(nPatchPoints_),
1103 meshToProcPoint_(nPatchPoints_)
1109 calculateSharedPoints
1124 const bool keepAllPoints,
1125 const bool mergeSeparated
1129 globalIndices_(coupledPatch.
nPoints()),
1130 globalTransforms_(
mesh),
1131 nPatchPoints_(coupledPatch.
nPoints()),
1132 procPoints_(nPatchPoints_),
1133 meshToProcPoint_(nPatchPoints_)
1135 calculateSharedPoints