diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C index e2b2989889..81fb2a36ca 100644 --- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C +++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C @@ -792,11 +792,636 @@ Foam::labelList Foam::autoSnapDriver::getZoneSurfacePoints } +Foam::tmp Foam::autoSnapDriver::avgCellCentres +( + const fvMesh& mesh, + const indirectPrimitivePatch& pp +) +{ + const labelListList& pointFaces = pp.pointFaces(); + + + tmp tavgBoundary + ( + new pointField(pointFaces.size(), vector::zero) + ); + pointField& avgBoundary = tavgBoundary(); + labelList nBoundary(pointFaces.size(), 0); + + forAll(pointFaces, pointI) + { + const labelList& pFaces = pointFaces[pointI]; + + forAll(pFaces, pfI) + { + label faceI = pFaces[pfI]; + label meshFaceI = pp.addressing()[faceI]; + + label own = mesh.faceOwner()[meshFaceI]; + avgBoundary[pointI] += mesh.cellCentres()[own]; + nBoundary[pointI]++; + } + } + + syncTools::syncPointList + ( + mesh, + pp.meshPoints(), + avgBoundary, + plusEqOp(), // combine op + vector::zero // null value + ); + syncTools::syncPointList + ( + mesh, + pp.meshPoints(), + nBoundary, + plusEqOp