61 if( !globalPointLabelPtr_ )
64 globalPointLabel.
setSize(pts.size());
65 globalPointLabel = -1;
75 if( !globalToLocalPointAddressingPtr_ )
76 globalToLocalPointAddressingPtr_ =
new Map<label>();
77 Map<label>& globalToLocal = *globalToLocalPointAddressingPtr_;
78 globalToLocal.clear();
81 if( !pAtParallelBoundariesPtr_ )
83 labelLongList& pAtParallelBoundaries = *pAtParallelBoundariesPtr_;
84 pAtParallelBoundaries.
clear();
87 std::map<label, labelLongList> exchangeData;
88 std::map<label, labelLongList>::iterator iter;
90 const Map<label>& globalToLocalPointAddressing =
96 exchangeData.insert(std::make_pair(pNeiProcs[procI],
labelLongList()));
103 const label pI = it();
106 nodeLabelForPoint[pI] == -1 ||
107 !pointType_[nodeLabelForPoint[pI]]
112 const label neiProc = pAtProcs(pI, procI);
116 exchangeData[neiProc].append(it.key());
128 const label pointI = globalToLocalPointAddressing[receivedData[i]];
130 if( nodeLabelForPoint[pointI] == -1 )
133 pointType_[nodeLabelForPoint[pointI]] = NONE;
136 for(iter=exchangeData.begin();iter!=exchangeData.end();++iter)
137 iter->second.clear();
141 label startPoint(0), nLocalPoints(0), nSharedPoints(0);
146 const label pI = it();
148 if( nodeLabelForPoint[pI] == -1 )
150 if( !(pointType_[nodeLabelForPoint[pI]] & useType) )
164 nSharedPoints -= nLocalPoints;
170 startPoint += nPointsAtProc[i];
175 const label pI = it();
177 if( nodeLabelForPoint[pI] == -1 )
180 const label pLabel = nodeLabelForPoint[pI];
182 if( !(pointType_[pLabel] & useType) )
188 const label neiProc = pAtProcs(pI, procI);
189 pProcs.
append(pLabel, neiProc);
196 globalPointLabel[pLabel] = startPoint++;
200 const label neiProc = pAtProcs(pI, procI);
208 exchangeData[neiProc].append(it.key());
209 exchangeData[neiProc].append(globalPointLabel[pLabel]);
214 receivedData.
clear();
218 while( counter < receivedData.
size() )
220 const label gpI = receivedData[counter++];
221 const label tgI = receivedData[counter++];
223 nodeLabelForPoint[globalToLocalPointAddressing[gpI]];
225 globalPointLabel[pLabel] = tgI;
229 forAll(globalPointLabel, pI)
231 if( globalPointLabel[pI] == -1 )
232 globalPointLabel[pI] = startPoint++;
236 forAll(globalPointLabel, pI)
240 pAtParallelBoundaries.
append(pI);
241 globalToLocal.insert(globalPointLabel[pI], pI);
247 if( (pointType_[pI] & useType) && (pProcs.
sizeOfRow(pI) != 0) )
248 pointType_[pI] |= PARALLELBOUNDARY;
255 for(iter=exchangeData.begin();iter!=exchangeData.end();++iter)
256 neiProcs.
append(iter->first);
271 pAtBufferLayers.
clear();
274 std::map<label, LongList<parTriFace> > exchangeTrias;
290 const label pLabel = pt[i];
296 const label neiProc = pProcs(pLabel, i);
306 if( sendToProcs.
size() )
318 exchangeTrias[sendToProcs[i]].append(tri);
323 pAtBufferLayers.
append(pt[j]);
332 std::map<label, List<parTriFace> > receivedTriangles;
334 exchangeTrias.clear();
338 std::map<label, point> addCoordinates;
343 receivedTriangles.begin();
344 it!=receivedTriangles.end();
355 for(
label j=0;j<3;++j)
359 if( globalToLocal.found(gpI) )
362 const label pI = globalToLocal[gpI];
363 triPointLabels[j] = pI;
365 else if( newGlobalToLocal.found(gpI) )
368 triPointLabels[j] = newGlobalToLocal[gpI];
375 newGlobalToLocal.insert(gpI,
nPoints);
398 triAtProcs.
append(it->first);
424 std::map<label, point>::const_iterator it=addCoordinates.begin();
425 it!=addCoordinates.end();
428 pts[it->first] = it->second;
430 addCoordinates.clear();
435 globalToLocal.insert(it.key(), it());
451 std::map<label, LongList<labelledPoint> > exchangeData;
465 const label neiProc = pProcs(pointI, i);
470 exchangeData[neiProc].append