49 const label nIterations
52 const VRWGraph& pPoints = mesh_.addressingData().pointPoints();
55 for(
label iterationI=0;iterationI<nIterations;++iterationI)
61 const label pointI = smoothPoints[i];
63 if( vertexLocation_[pointI] & LOCKED )
66 if( vertexLocation_[pointI] & PARALLELBOUNDARY )
77 if( nPointPoints == 0 )
80 for(
label pI=0;pI<nPointPoints;++pI)
81 newP +=
points[pPoints(pointI, pI)];
87 laplacianParallel(procPoints,
false);
90 updateMeshGeometry(smoothPoints);
96 const label nIterations
99 const VRWGraph& pPoints = mesh_.addressingData().pointPoints();
102 for(
label iterationI=0;iterationI<nIterations;++iterationI)
108 const label pointI = smoothPoints[i];
110 if( vertexLocation_[pointI] & LOCKED )
113 if( vertexLocation_[pointI] & PARALLELBOUNDARY )
115 procPoints.
append(pointI);
125 const label pLabel = pPoints(pointI, pI);
126 if( vertexLocation_[pLabel] & INSIDE )
140 laplacianParallel(smoothPoints,
true);
143 updateMeshGeometry(smoothPoints);
149 const label nIterations
152 const VRWGraph& pointCells = mesh_.addressingData().pointCells();
153 const vectorField& centres = mesh_.addressingData().cellCentres();
156 for(
label iterationI=0;iterationI<nIterations;++iterationI)
161 # pragma omp parallel for schedule(dynamic, 20)
165 const label pointI = smoothPoints[i];
167 if( vertexLocation_[pointI] & LOCKED )
173 if( vertexLocation_[pointI] & PARALLELBOUNDARY )
176 # pragma omp critical
178 procPoints.
append(pointI);
185 newP += centres[pointCells(pointI, pcI)];
192 laplacianPCParallel(procPoints);
194 updateMeshGeometry(smoothPoints);
201 const label nIterations
204 const VRWGraph& pointCells = mesh_.addressingData().pointCells();
205 const vectorField& centres = mesh_.addressingData().cellCentres();
206 const scalarField& volumes = mesh_.addressingData().cellVolumes();
210 for(
label iterationI=0;iterationI<nIterations;++iterationI)
215 # pragma omp parallel for schedule(dynamic, 20)
219 const label pointI = smoothPoints[i];
221 if( vertexLocation_[pointI] & LOCKED )
227 if( vertexLocation_[pointI] & PARALLELBOUNDARY )
230 # pragma omp critical
232 procPoints.
append(pointI);
238 scalar sumWeights(0.0);
241 const label cellI = pointCells(pointI, pcI);
242 const scalar
w =
Foam::max(volumes[cellI], VSMALL);
243 newP +=
w * centres[cellI];
251 laplacianWPCParallel(procPoints);
253 updateMeshGeometry(smoothPoints);
263 const VRWGraph& pointCells = mesh_.addressingData().pointCells();
265 boolList chF(mesh_.faces().size(),
false);
268 # pragma omp parallel for if( smoothPoints.size() > 100 ) \
269 schedule(dynamic, 20)
273 const label pointI = smoothPoints[i];
275 if( vertexLocation_[pointI] & LOCKED )
280 const cell&
c =
cells[pointCells(pointI, pcI)];
291 const label start = pBnd[patchI].patchStart();
292 const label size = pBnd[patchI].patchSize();
295 for(
label faceI=0;faceI<size;++faceI)
297 if( chF[start+faceI] )
304 pBnd[patchI].neiProcNo(),
308 toOtherProc << sendData;
318 pBnd[patchI].neiProcNo()
321 fromOtherProc >> receivedData;
323 const label start = pBnd[patchI].patchStart();
325 chF[start+receivedData[i]] =
true;
331 mesh_.addressingData()
332 ).updateGeometry(chF);
345 vertexLocation_(vertexLocation)
363 smoothPoints.
append(pointI);
389 const label nIterations
397 smoothPoints.
append(pointI);
400 laplacianPC(smoothPoints, nIterations);
414 const label nIterations
422 smoothPoints.
append(pointI);
425 laplacianWPC(smoothPoints, nIterations);