From 1a0a6b51dd33520014195b7c332af5e9b01378d5 Mon Sep 17 00:00:00 2001 From: mattijs Date: Fri, 13 Sep 2013 16:18:04 +0100 Subject: [PATCH] ENH: snappyHexMesh: detect small distance snapping --- .../autoHexMeshDriver/autoSnapDriver.C | 750 +++++++++++++++++- .../autoHexMeshDriver/autoSnapDriver.H | 23 +- .../autoHexMeshDriver/autoSnapDriverFeature.C | 168 +++- .../snapParameters/snapParameters.C | 9 +- .../snapParameters/snapParameters.H | 9 +- .../meshRefinement/meshRefinement.H | 30 +- .../meshRefinementProblemCells.C | 6 +- .../meshRefinement/meshRefinementRefine.C | 56 +- 8 files changed, 987 insertions(+), 64 deletions(-) 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