79 label nNeighbours = 0;
103 refCast<const processorPolyPatch>
121 refCast<const processorPolyPatch>
139 || sharedPointLabelsPtr_.valid()
140 || sharedPointAddrPtr_.valid()
159 if (pPoints.
size()+transPPoints.
size() > 0)
168 nGlobalPoints_ = masterNumbering.
size();
182 if (pPoints.
size()+transPPoints.
size() > 0)
184 master[i] = masterNumbering.
toGlobal(nMaster);
187 master[pPoints[j]] = master[i];
191 master[transPPoints[j]] = master[i];
226 sharedPointLabelsPtr_.reset(
new labelList(nMaster));
227 labelList& sharedPointLabels = sharedPointLabelsPtr_();
228 sharedPointAddrPtr_.reset(
new labelList(nMaster));
229 labelList& sharedPointAddr = sharedPointAddrPtr_();
237 sharedPointLabels[nMaster] = i;
238 sharedPointAddr[nMaster] = master[i];
245 Pout<<
"globalMeshData : nGlobalPoints_:" << nGlobalPoints_ <<
nl
246 <<
"globalMeshData : sharedPointLabels_:"
247 << sharedPointLabelsPtr_().size() <<
nl
248 <<
"globalMeshData : sharedPointAddr_:"
249 << sharedPointAddrPtr_().size() <<
endl;
265 const edge&
e = iter.key();
269 if (globalFnd == globalShared.end())
272 if (iter().size() == 1)
281 globalShared.
insert(
e, sharedEdgeI++);
286 if (globalFnd() == -1)
290 globalFnd() = sharedEdgeI++;
306 || sharedEdgeLabelsPtr_.valid()
307 || sharedEdgeAddrPtr_.valid()
315 const labelList& sharedPtAddr = sharedPointAddr();
316 const labelList& sharedPtLabels = sharedPointLabels();
323 meshToShared.insert(sharedPtLabels[i], i);
331 const edgeList& edges = mesh_.edges();
335 const edge&
e = edges[edgeI];
339 if (e0Fnd != meshToShared.end())
343 if (e1Fnd != meshToShared.end())
351 sharedPtAddr[e0Fnd()],
352 sharedPtAddr[e1Fnd()]
358 if (iter == localShared.end())
370 edgeLabels[sz] = edgeI;
390 label sharedEdgeI = 0;
395 Pout<<
"globalMeshData::calcSharedEdges : Merging in from proc0 : "
398 countSharedEdges(localShared, globalShared, sharedEdgeI);
416 Pout<<
"globalMeshData::calcSharedEdges : "
417 <<
"Merging in from proc"
421 countSharedEdges(procSharedEdges, globalShared, sharedEdgeI);
431 globalShared.
clear();
437 globalShared.
insert(iter.key(), iter());
442 Pout<<
"globalMeshData::calcSharedEdges : Filtered "
443 << oldSharedEdges.
size()
444 <<
" down to " << globalShared.
size() <<
endl;
461 toSlave << globalShared;
471 toMaster << localShared;
477 fromMaster >> globalShared;
484 nGlobalEdges_ = globalShared.
size();
491 const edge&
e = iter.key();
495 if (edgeFnd != globalShared.end())
504 dynSharedEdgeLabels.
append(edgeLabels[i]);
507 dynSharedEdgeAddr.
append(edgeFnd());
512 sharedEdgeLabelsPtr_.reset(
new labelList());
513 labelList& sharedEdgeLabels = sharedEdgeLabelsPtr_();
514 sharedEdgeLabels.
transfer(dynSharedEdgeLabels);
516 sharedEdgeAddrPtr_.reset(
new labelList());
517 labelList& sharedEdgeAddr = sharedEdgeAddrPtr_();
518 sharedEdgeAddr.
transfer(dynSharedEdgeAddr);
522 Pout<<
"globalMeshData : nGlobalEdges_:" << nGlobalEdges_ <<
nl
523 <<
"globalMeshData : sharedEdgeLabels:" << sharedEdgeLabels.
size()
525 <<
"globalMeshData : sharedEdgeAddr:" << sharedEdgeAddr.
size()
535 Pout<<
"globalMeshData::calcGlobalPointSlaves() :"
536 <<
" calculating coupled master to slave point addressing."
541 globalPoints globalData(mesh_, coupledPatch(),
true,
true);
543 globalPointSlavesPtr_.reset
550 globalPointTransformedSlavesPtr_.reset
558 globalPointSlavesMapPtr_.reset
575 const labelListList& transformedSlaves = globalPointTransformedSlaves();
579 labelPairList myData(globalPointSlavesMap().constructSize());
590 globalPointSlavesMap().distribute(myData);
594 allPointConnectivity.
setSize(globalPointSlavesMap().constructSize());
598 const labelList& pSlaves = slaves[pointI];
599 const labelList& pTransformSlaves = transformedSlaves[pointI];
605 pConnectivity[connI++] = myData[pointI];
609 pConnectivity[connI++] = myData[pSlaves[i]];
612 forAll(pTransformSlaves, i)
615 label transformI = globalPointSlavesMap().whichTransform
620 const labelPair&
n = myData[pTransformSlaves[i]];
634 allPointConnectivity[pSlaves[i]] = pConnectivity;
636 forAll(pTransformSlaves, i)
638 allPointConnectivity[pTransformSlaves[i]] = pConnectivity;
641 globalPointSlavesMap().reverseDistribute
643 allPointConnectivity.
size(),
655 const edgeList& edges = coupledPatch().edges();
656 const labelListList& pointEdges = coupledPatch().pointEdges();
657 const globalIndex& globalEdgeNumbers = globalEdgeNumbering();
659 const labelListList& transformedSlaves = globalPointTransformedSlaves();
662 globalPointEdges.
setSize(globalPointSlavesMap().constructSize());
663 globalPointPoints.
setSize(globalPointSlavesMap().constructSize());
664 forAll(pointEdges, pointI)
666 const labelList& pEdges = pointEdges[pointI];
667 labelList& globalPEdges = globalPointEdges[pointI];
671 globalPEdges[i] = globalEdgeNumbers.
toGlobal(pEdges[i]);
678 label otherPointI = edges[pEdges[i]].otherVertex(pointI);
683 globalTransforms().nullTransformIndex()
689 globalPointSlavesMap().distribute(globalPointEdges);
690 globalPointSlavesMap().distribute(globalPointPoints);
694 const labelList& pSlaves = slaves[pointI];
695 const labelList& pTransformSlaves = transformedSlaves[pointI];
700 n += globalPointEdges[pSlaves[i]].
size();
702 forAll(pTransformSlaves, i)
704 n += globalPointEdges[pTransformSlaves[i]].
size();
709 labelList& globalPEdges = globalPointEdges[pointI];
714 const labelList& otherData = globalPointEdges[pSlaves[i]];
717 globalPEdges[sz++] = otherData[j];
720 forAll(pTransformSlaves, i)
723 globalPointEdges[pTransformSlaves[i]];
726 globalPEdges[sz++] = otherData[j];
733 globalPointEdges[pSlaves[i]] = globalPEdges;
735 forAll(pTransformSlaves, i)
737 globalPointEdges[pTransformSlaves[i]] = globalPEdges;
751 const labelPairList& otherData = globalPointPoints[pSlaves[i]];
754 globalPPoints[sz++] = otherData[j];
758 forAll(pTransformSlaves, i)
761 label transformI = globalPointSlavesMap().whichTransform
767 globalPointPoints[pTransformSlaves[i]];
786 globalPointPoints[pSlaves[i]] = globalPPoints;
788 forAll(pTransformSlaves, i)
790 globalPointPoints[pTransformSlaves[i]] = globalPPoints;
795 globalPointSlavesMap().reverseDistribute
797 globalPointEdges.
size(),
801 globalPointSlavesMap().reverseDistribute
803 globalPointPoints.
size(),
815 const label localPoint
821 label remoteTransformI = -1;
822 label localTransformI = -1;
831 localTransformI = transformI;
836 if (procI == remoteProcI && pointI == remoteIndex)
838 remoteTransformI = transformI;
846 if (remoteTransformI == -1 || localTransformI == -1)
849 <<
"Problem. Cannot find " << remotePoint
850 <<
" or " << localPoint <<
" "
851 << coupledPatch().localPoints()[localPoint]
854 <<
"remoteTransformI:" << remoteTransformI <<
endl
855 <<
"localTransformI:" << localTransformI
859 return globalTransforms().subtractTransformIndex
871 Pout<<
"globalMeshData::calcGlobalEdgeSlaves() :"
872 <<
" calculating coupled master to slave edge addressing." <<
endl;
875 const edgeList& edges = coupledPatch().edges();
876 const globalIndex& globalEdgeNumbers = globalEdgeNumbering();
890 calcPointConnectivity(allPointConnectivity);
897 calcGlobalPointEdges(globalPointEdges, globalPointPoints);
914 const edge&
e = edges[edgeI];
915 const labelList& pEdges0 = globalPointEdges[
e[0]];
917 const labelList& pEdges1 = globalPointEdges[
e[1]];
929 globalTransforms().nullTransformIndex()
939 pEdges0[i] == pEdges1[j]
940 && pEdges0[i] != globalEdgeNumbers.
toGlobal(edgeI)
952 label transform0 = findTransform
954 allPointConnectivity[
e[0]],
958 label transform1 = findTransform
960 allPointConnectivity[
e[1]],
965 if (transform0 == transform1)
973 globalEdgeNumbers.
toLocal(procI, pEdges0[i]),
982 allEdgeConnectivity[edgeI].
transfer(eEdges);
993 forAll(allEdgeConnectivity, edgeI)
996 if (edgeInfo.
size() >= 2)
998 const labelPair& masterInfo = edgeInfo[0];
1011 labelList& eEdges = globalEdgeSlaves[edgeI];
1017 label nonTransformI = 0;
1018 label transformI = 0;
1020 for (
label i = 1; i < edgeInfo.
size(); i++)
1030 if (
transform == globalTransforms().nullTransformIndex())
1032 eEdges[nonTransformI++] = globalEdgeNumbers.
toGlobal
1040 trafoEEdges[transformI++] = info;
1044 eEdges.
setSize(nonTransformI);
1045 trafoEEdges.
setSize(transformI);
1055 globalEdgeSlavesMapPtr_.reset
1064 globalEdgeTransformedSlavesPtr_(),
1073 Pout<<
"globalMeshData::calcGlobalEdgeSlaves() :"
1074 <<
" coupled edges:" << edges.
size()
1075 <<
" additional coupled edges:"
1076 << globalEdgeSlavesMapPtr_().constructSize() - edges.
size()
1086 Pout<<
"globalMeshData::calcGlobalEdgeOrientation() :"
1087 <<
" calculating edge orientation w.r.t. master edge." <<
endl;
1100 for (
label pointI = 0; pointI < coupledPatch().nPoints(); pointI++)
1107 globalPointSlaves(),
1108 globalPointTransformedSlaves(),
1121 const labelListList& transformedSlaves = globalEdgeTransformedSlaves();
1127 for (
label edgeI = 0; edgeI < coupledPatch().nEdges(); edgeI++)
1132 slaves[edgeI].size()
1133 + transformedSlaves[edgeI].size()
1140 const edge&
e = coupledPatch().edges()[edgeI];
1158 globalEdgeOrientationPtr_.reset
1162 PackedBoolList& globalEdgeOrientation = globalEdgeOrientationPtr_();
1164 forAll(coupledPatch().edges(), edgeI)
1166 const edge&
e = coupledPatch().edges()[edgeI];
1176 masterEdgeVerts[edgeI]
1181 <<
"problem : my edge:" <<
e
1182 <<
" in master points:" << masterE
1183 <<
" v.s. masterEdgeVerts:" << masterEdgeVerts[edgeI]
1188 globalEdgeOrientation[edgeI] = (stat == 1);
1195 Pout<<
"globalMeshData::calcGlobalEdgeOrientation() :"
1196 <<
" finished calculating edge orientation."
1210 const Map<label>& meshPointMap = coupledPatch().meshPointMap();
1224 const face&
f = pp[i];
1232 if (iter != meshPointMap.end())
1234 nPointFaces[iter()]++;
1245 forAll(nPointFaces, pointI)
1247 pointBoundaryFaces[pointI].
setSize(nPointFaces[pointI]);
1262 const face&
f = pp[i];
1269 if (iter != meshPointMap.end())
1272 pp.
start() + i - mesh_.nInternalFaces();
1273 pointBoundaryFaces[iter()][nPointFaces[iter()]++] =
1287 Pout<<
"globalMeshData::calcGlobalPointBoundaryFaces() :"
1288 <<
" calculating coupled point to boundary face addressing."
1294 calcPointBoundaryFaces(pointBoundaryFaces);
1298 globalBoundaryFaceNumberingPtr_.reset
1300 new globalIndex(mesh_.nFaces()-mesh_.nInternalFaces())
1302 globalIndex& globalIndices = globalBoundaryFaceNumberingPtr_();
1306 globalPointBoundaryFacesPtr_.reset
1310 labelListList& globalPointBoundaryFaces = globalPointBoundaryFacesPtr_();
1312 forAll(pointBoundaryFaces, pointI)
1314 const labelList& bFaces = pointBoundaryFaces[pointI];
1315 labelList& globalFaces = globalPointBoundaryFaces[pointI];
1319 globalFaces[i] = globalIndices.
toGlobal(bFaces[i]);
1325 globalPointSlavesMap().distribute
1327 globalPointBoundaryFaces,
1336 globalPointTransformedSlaves();
1343 forAll(pointSlaves, pointI)
1345 const labelList& slaves = pointSlaves[pointI];
1346 const labelList& transformedSlaves = pointTransformSlaves[pointI];
1348 if (slaves.
size() > 0)
1350 labelList& myBFaces = globalPointBoundaryFaces[pointI];
1357 n += globalPointBoundaryFaces[slaves[i]].
size();
1365 globalPointBoundaryFaces[slaves[i]];
1372 label slave = slaveBFaces[j];
1375 myBFaces[
n++] = slave;
1383 if (transformedSlaves.
size() > 0)
1385 const labelList& untrafoFaces = globalPointBoundaryFaces[pointI];
1392 forAll(transformedSlaves, i)
1394 n += globalPointBoundaryFaces[transformedSlaves[i]].
size();
1399 forAll(transformedSlaves, i)
1401 label transformI = globalPointSlavesMap().whichTransform
1403 transformedSlaves[i]
1407 globalPointBoundaryFaces[transformedSlaves[i]];
1411 label slave = slaveBFaces[j];
1413 if (
findIndex(untrafoFaces, slave)== -1)
1431 if (slaves.
size() + transformedSlaves.
size() == 0)
1433 globalPointBoundaryFaces[pointI].
clear();
1440 globalPointTransformedBoundaryFacesPtr_.reset
1445 globalPointBoundaryFacesMapPtr_.reset
1450 globalPointBoundaryFaces,
1454 globalPointTransformedBoundaryFacesPtr_(),
1460 globalPointTransformedBoundaryFacesPtr_().setSize(coupledPatch().
nPoints());
1464 Pout<<
"globalMeshData::calcGlobalPointBoundaryFaces() :"
1465 <<
" coupled points:" << coupledPatch().nPoints()
1466 <<
" local boundary faces:" << globalIndices.
localSize()
1467 <<
" additional coupled faces:"
1468 << globalPointBoundaryFacesMapPtr_().constructSize()
1479 Pout<<
"globalMeshData::calcGlobalPointBoundaryCells() :"
1480 <<
" calculating coupled point to boundary cell addressing."
1494 forAll(coupledPatch().meshPoints(), pointI)
1496 label meshPointI = coupledPatch().meshPoints()[pointI];
1497 const labelList& pCells = mesh_.pointCells(meshPointI);
1499 labelList& bCells = pointBoundaryCells[pointI];
1504 label cellI = pCells[i];
1507 if (fnd != meshCellMap.end())
1513 meshCellMap.insert(cellI, bCellI);
1522 boundaryCellsPtr_.reset(
new labelList());
1523 labelList& boundaryCells = boundaryCellsPtr_();
1530 globalBoundaryCellNumberingPtr_.reset
1534 globalIndex& globalIndices = globalBoundaryCellNumberingPtr_();
1537 globalPointBoundaryCellsPtr_.reset
1541 labelListList& globalPointBoundaryCells = globalPointBoundaryCellsPtr_();
1543 forAll(pointBoundaryCells, pointI)
1545 const labelList& pCells = pointBoundaryCells[pointI];
1546 labelList& globalCells = globalPointBoundaryCells[pointI];
1550 globalCells[i] = globalIndices.
toGlobal(pCells[i]);
1556 globalPointSlavesMap().distribute
1558 globalPointBoundaryCells,
1566 globalPointTransformedSlaves();
1571 forAll(pointSlaves, pointI)
1573 const labelList& slaves = pointSlaves[pointI];
1574 const labelList& transformedSlaves = pointTransformSlaves[pointI];
1576 if (slaves.
size() > 0)
1578 labelList& myBCells = globalPointBoundaryCells[pointI];
1585 n += globalPointBoundaryCells[slaves[i]].
size();
1593 globalPointBoundaryCells[slaves[i]];
1600 label slave = slaveBCells[j];
1603 myBCells[
n++] = slave;
1611 if (transformedSlaves.
size() > 0)
1613 const labelList& untrafoCells = globalPointBoundaryCells[pointI];
1620 forAll(transformedSlaves, i)
1622 n += globalPointBoundaryCells[transformedSlaves[i]].
size();
1627 forAll(transformedSlaves, i)
1629 label transformI = globalPointSlavesMap().whichTransform
1631 transformedSlaves[i]
1635 globalPointBoundaryCells[transformedSlaves[i]];
1639 label slave = slaveBCells[j];
1642 if (
findIndex(untrafoCells, slave)== -1)
1658 if (slaves.
size() + transformedSlaves.
size() == 0)
1660 globalPointBoundaryCells[pointI].
clear();
1667 globalPointTransformedBoundaryCellsPtr_.reset
1672 globalPointBoundaryCellsMapPtr_.reset
1677 globalPointBoundaryCells,
1681 globalPointTransformedBoundaryCellsPtr_(),
1687 globalPointTransformedBoundaryCellsPtr_().setSize(coupledPatch().
nPoints());
1691 Pout<<
"globalMeshData::calcGlobalPointBoundaryCells() :"
1692 <<
" coupled points:" << coupledPatch().nPoints()
1693 <<
" local boundary cells:" << globalIndices.
localSize()
1694 <<
" additional coupled cells:"
1695 << globalPointBoundaryCellsMapPtr_().constructSize()
1706 Pout<<
"globalMeshData::calcGlobalCoPointSlaves() :"
1707 <<
" calculating coupled master to collocated"
1708 <<
" slave point addressing." <<
endl;
1712 globalPoints globalData(mesh_, coupledPatch(),
true,
false);
1714 globalCoPointSlavesPtr_.reset
1721 globalCoPointSlavesMapPtr_.reset
1731 Pout<<
"globalMeshData::calcGlobalCoPointSlaves() :"
1732 <<
" finished calculating coupled master to collocated"
1733 <<
" slave point addressing." <<
endl;
1748 processorPatches_(0),
1749 processorPatchIndices_(0),
1750 processorPatchNeighbours_(0),
1752 sharedPointLabelsPtr_(NULL),
1753 sharedPointAddrPtr_(NULL),
1754 sharedPointGlobalLabelsPtr_(NULL),
1756 sharedEdgeLabelsPtr_(NULL),
1757 sharedEdgeAddrPtr_(NULL)
1774 nGlobalPoints_ = -1;
1775 sharedPointLabelsPtr_.clear();
1776 sharedPointAddrPtr_.clear();
1777 sharedPointGlobalLabelsPtr_.clear();
1781 sharedEdgeLabelsPtr_.clear();
1782 sharedEdgeAddrPtr_.clear();
1785 coupledPatchPtr_.clear();
1786 coupledPatchMeshEdgesPtr_.clear();
1787 coupledPatchMeshEdgeMapPtr_.clear();
1788 globalTransformsPtr_.clear();
1791 globalPointNumberingPtr_.clear();
1792 globalPointSlavesPtr_.clear();
1793 globalPointTransformedSlavesPtr_.clear();
1794 globalPointSlavesMapPtr_.clear();
1796 globalEdgeNumberingPtr_.clear();
1797 globalEdgeSlavesPtr_.clear();
1798 globalEdgeTransformedSlavesPtr_.clear();
1799 globalEdgeOrientationPtr_.clear();
1800 globalEdgeSlavesMapPtr_.clear();
1803 globalBoundaryFaceNumberingPtr_.clear();
1804 globalPointBoundaryFacesPtr_.clear();
1805 globalPointTransformedBoundaryFacesPtr_.clear();
1806 globalPointBoundaryFacesMapPtr_.clear();
1809 boundaryCellsPtr_.clear();
1810 globalBoundaryCellNumberingPtr_.clear();
1811 globalPointBoundaryCellsPtr_.clear();
1812 globalPointTransformedBoundaryCellsPtr_.clear();
1813 globalPointBoundaryCellsMapPtr_.clear();
1816 globalCoPointSlavesPtr_.clear();
1817 globalCoPointSlavesMapPtr_.clear();
1826 if (!sharedPointGlobalLabelsPtr_.valid())
1828 sharedPointGlobalLabelsPtr_.reset
1830 new labelList(sharedPointLabels().size())
1832 labelList& sharedPointGlobalLabels = sharedPointGlobalLabelsPtr_();
1836 "pointProcAddressing",
1837 mesh_.facesInstance()/mesh_.meshSubDir,
1846 Pout<<
"globalMeshData::sharedPointGlobalLabels : "
1847 <<
"Reading pointProcAddressing" <<
endl;
1859 sharedPointGlobalLabels[i] = pointProcAddressing[pointI];
1864 Pout<<
"globalMeshData::sharedPointGlobalLabels :"
1865 <<
" Setting pointProcAddressing to -1" <<
endl;
1867 sharedPointGlobalLabels = -1;
1870 return sharedPointGlobalLabelsPtr_();
1881 const labelList& pointAddr = sharedPointAddr();
1890 label sharedPointI = pointAddr[i];
1892 sharedPoints[sharedPointI] = mesh_.points()[
pointLabels[i]];
1907 fromSlave >> nbrSharedPointAddr >> nbrSharedPoints;
1909 forAll(nbrSharedPointAddr, i)
1911 label sharedPointI = nbrSharedPointAddr[i];
1913 sharedPoints[sharedPointI] = nbrSharedPoints[i];
1931 toSlave << sharedPoints;
1949 fromMaster >> sharedPoints;
1953 return sharedPoints;
1961 pointField sharedPoints(mesh_.points(), sharedPointLabels());
1967 scalar tolDim = matchTol_ * mesh_.bounds().mag();
1982 return mergedPoints;
1988 if (nGlobalPoints_ == -1)
1992 return nGlobalPoints_;
1998 if (!sharedPointLabelsPtr_.valid())
2002 return sharedPointLabelsPtr_();
2008 if (!sharedPointAddrPtr_.valid())
2012 return sharedPointAddrPtr_();
2018 if (nGlobalEdges_ == -1)
2022 return nGlobalEdges_;
2028 if (!sharedEdgeLabelsPtr_.valid())
2032 return sharedEdgeLabelsPtr_();
2038 if (!sharedEdgeAddrPtr_.valid())
2042 return sharedEdgeAddrPtr_();
2048 if (!coupledPatchPtr_.valid())
2060 nCoupled += pp.size();
2076 coupledFaces[nCoupled++] = faceI++;
2081 coupledPatchPtr_.reset
2096 Pout<<
"globalMeshData::coupledPatch() :"
2097 <<
" constructed coupled faces patch:"
2098 <<
" faces:" << coupledPatchPtr_().size()
2099 <<
" points:" << coupledPatchPtr_().nPoints()
2103 return coupledPatchPtr_();
2109 if (!coupledPatchMeshEdgesPtr_.valid())
2111 coupledPatchMeshEdgesPtr_.reset
2115 coupledPatch().meshEdges
2123 return coupledPatchMeshEdgesPtr_();
2130 if (!coupledPatchMeshEdgeMapPtr_.valid())
2134 coupledPatchMeshEdgeMapPtr_.reset(
new Map<label>(2*
me.size()));
2135 Map<label>& em = coupledPatchMeshEdgeMapPtr_();
2139 em.insert(
me[i], i);
2142 return coupledPatchMeshEdgeMapPtr_();
2148 if (!globalPointNumberingPtr_.valid())
2150 globalPointNumberingPtr_.reset
2155 return globalPointNumberingPtr_();
2162 if (!globalTransformsPtr_.valid())
2166 return globalTransformsPtr_();
2172 if (!globalPointSlavesPtr_.valid())
2174 calcGlobalPointSlaves();
2176 return globalPointSlavesPtr_();
2183 if (!globalPointTransformedSlavesPtr_.valid())
2185 calcGlobalPointSlaves();
2187 return globalPointTransformedSlavesPtr_();
2193 if (!globalPointSlavesMapPtr_.valid())
2195 calcGlobalPointSlaves();
2197 return globalPointSlavesMapPtr_();
2203 if (!globalEdgeNumberingPtr_.valid())
2205 globalEdgeNumberingPtr_.reset
2210 return globalEdgeNumberingPtr_();
2216 if (!globalEdgeSlavesPtr_.valid())
2218 calcGlobalEdgeSlaves();
2220 return globalEdgeSlavesPtr_();
2227 if (!globalEdgeTransformedSlavesPtr_.valid())
2229 calcGlobalEdgeSlaves();
2231 return globalEdgeTransformedSlavesPtr_();
2237 if (!globalEdgeOrientationPtr_.valid())
2239 calcGlobalEdgeOrientation();
2241 return globalEdgeOrientationPtr_();
2247 if (!globalEdgeSlavesMapPtr_.valid())
2249 calcGlobalEdgeSlaves();
2251 return globalEdgeSlavesMapPtr_();
2258 if (!globalBoundaryFaceNumberingPtr_.valid())
2260 calcGlobalPointBoundaryFaces();
2262 return globalBoundaryFaceNumberingPtr_();
2269 if (!globalPointBoundaryFacesPtr_.valid())
2271 calcGlobalPointBoundaryFaces();
2273 return globalPointBoundaryFacesPtr_();
2280 if (!globalPointTransformedBoundaryFacesPtr_.valid())
2282 calcGlobalPointBoundaryFaces();
2284 return globalPointTransformedBoundaryFacesPtr_();
2291 if (!globalPointBoundaryFacesMapPtr_.valid())
2293 calcGlobalPointBoundaryFaces();
2295 return globalPointBoundaryFacesMapPtr_();
2301 if (!boundaryCellsPtr_.valid())
2303 calcGlobalPointBoundaryCells();
2305 return boundaryCellsPtr_();
2312 if (!globalBoundaryCellNumberingPtr_.valid())
2314 calcGlobalPointBoundaryCells();
2316 return globalBoundaryCellNumberingPtr_();
2323 if (!globalPointBoundaryCellsPtr_.valid())
2325 calcGlobalPointBoundaryCells();
2327 return globalPointBoundaryCellsPtr_();
2334 if (!globalPointTransformedBoundaryCellsPtr_.valid())
2336 calcGlobalPointBoundaryCells();
2338 return globalPointTransformedBoundaryCellsPtr_();
2345 if (!globalPointBoundaryCellsMapPtr_.valid())
2347 calcGlobalPointBoundaryCells();
2349 return globalPointBoundaryCellsMapPtr_();
2355 if (!globalCoPointSlavesPtr_.valid())
2357 calcGlobalCoPointSlaves();
2359 return globalCoPointSlavesPtr_();
2365 if (!globalCoPointSlavesMapPtr_.valid())
2367 calcGlobalCoPointSlaves();
2369 return globalCoPointSlavesMapPtr_();
2380 const globalIndex& globalCoupledPoints = globalPointNumbering();
2383 const mapDistribute& pointSlavesMap = globalCoPointSlavesMap();
2392 forAll(masterGlobalPoint, pointI)
2394 const labelList& slavePoints = pointSlaves[pointI];
2395 if (slavePoints.
size() > 0)
2397 masterGlobalPoint[pointI] = globalCoupledPoints.
toGlobal(pointI);
2415 forAll(pointSlaves, pointI)
2417 if (masterGlobalPoint[pointI] == -1)
2424 masterGlobalPoint[pointI]
2425 == globalCoupledPoints.
toGlobal(pointI)
2438 label myUniquePoints = mesh_.nPoints() - cpp.
nPoints() + nMaster;
2452 pointToGlobal.
setSize(mesh_.nPoints());
2454 uniquePoints.
setSize(myUniquePoints);
2457 forAll(isMaster, meshPointI)
2459 if (isMaster[meshPointI])
2461 pointToGlobal[meshPointI] = globalPointsPtr().toGlobal(nMaster);
2462 uniquePoints[nMaster] = meshPointI;
2472 forAll(pointSlaves, pointI)
2474 const labelList& slaves = pointSlaves[pointI];
2476 if (slaves.
size() > 0)
2480 masterToGlobal[pointI] = pointToGlobal[meshPointI];
2483 masterToGlobal[slaves[i]] = masterToGlobal[pointI];
2492 forAll(pointSlaves, pointI)
2496 if (!isMaster[meshPointI])
2498 pointToGlobal[meshPointI] = masterToGlobal[pointI];
2503 return globalPointsPtr;
2517 const mapDistribute& pointSlavesMap = globalCoPointSlavesMap();
2542 forAll(meshPoints, patchPointI)
2544 label meshPointI = meshPoints[patchPointI];
2550 patchToCoupled[patchPointI] = iter();
2551 coupledToGlobalPatch[iter()] = globalPPoints.
toGlobal(patchPointI);
2569 pointSlavesMap.
distribute(coupledToGlobalPatch);
2570 forAll(pointSlaves, coupledPointI)
2572 const labelList& slaves = pointSlaves[coupledPointI];
2574 if (slaves.
size() > 0)
2578 if (coupledToGlobalPatch[coupledPointI] != -1)
2581 masterI = coupledToGlobalPatch[coupledPointI];
2588 label slavePp = coupledToGlobalPatch[slaves[i]];
2589 if (slavePp != -1 && slavePp < masterI)
2599 coupledToGlobalPatch[coupledPointI] = masterI;
2602 coupledToGlobalPatch[slaves[i]] = masterI;
2617 forAll(meshPoints, patchPointI)
2619 if (patchToCoupled[patchPointI] == -1)
2625 label coupledPointI = patchToCoupled[patchPointI];
2628 globalPPoints.
toGlobal(patchPointI)
2629 == coupledToGlobalPatch[coupledPointI]
2652 uniqueMeshPoints.
setSize(nMasters);
2659 forAll(meshPoints, patchPointI)
2661 if (patchToCoupled[patchPointI] == -1)
2663 uniqueMeshPoints[nMasters++] = meshPoints[patchPointI];
2667 label coupledPointI = patchToCoupled[patchPointI];
2670 globalPPoints.
toGlobal(patchPointI)
2671 == coupledToGlobalPatch[coupledPointI]
2674 globalMaster[coupledPointI] =
2675 globalPointsPtr().toGlobal(nMasters);
2676 uniqueMeshPoints[nMasters++] = meshPoints[patchPointI];
2696 forAll(meshPoints, patchPointI)
2698 if (patchToCoupled[patchPointI] == -1)
2700 pointToGlobal[patchPointI] = globalPointsPtr().toGlobal(nMasters++);
2704 label coupledPointI = patchToCoupled[patchPointI];
2705 pointToGlobal[patchPointI] = globalMaster[coupledPointI];
2709 globalPPoints.
toGlobal(patchPointI)
2710 == coupledToGlobalPatch[coupledPointI]
2718 return globalPointsPtr;
2740 scalar tolDim = matchTol_ * mesh_.bounds().mag();
2744 Pout<<
"globalMeshData : merge dist:" << tolDim <<
endl;
2768 Pout<<
"globalMeshData : nTotalFaces_:" << nTotalFaces_ <<
endl;
2781 Pout<<
"globalMeshData : nTotalCells_:" << nTotalCells_ <<
endl;
2796 Pout<<
"globalMeshData : nTotalPoints_:" << nTotalPoints_ <<
endl;