From f1cf4c9c3548eccdf707f56771e015dc078f4594 Mon Sep 17 00:00:00 2001 From: graham <g.macpherson@opencfd.co.uk> Date: Fri, 17 Jun 2011 11:43:14 +0100 Subject: [PATCH] ENH: Support for askign for backgroundMeshDecomposition proc bb. UniformGrid parallelised. --- .../backgroundMeshDecomposition.H | 3 ++ .../backgroundMeshDecompositionI.H | 6 +++ .../conformalVoronoiMesh.H | 3 ++ .../conformalVoronoiMeshI.H | 7 ++++ .../initialPointsMethod/initialPointsMethod.H | 1 + .../uniformGrid/uniformGrid.C | 37 +++++++++++++++++-- 6 files changed, 53 insertions(+), 4 deletions(-) diff --git a/src/mesh/conformalVoronoiMesh/backgroundMeshDecomposition/backgroundMeshDecomposition.H b/src/mesh/conformalVoronoiMesh/backgroundMeshDecomposition/backgroundMeshDecomposition.H index 51aef7ae3d1..c3f9361f4e5 100644 --- a/src/mesh/conformalVoronoiMesh/backgroundMeshDecomposition/backgroundMeshDecomposition.H +++ b/src/mesh/conformalVoronoiMesh/backgroundMeshDecomposition/backgroundMeshDecomposition.H @@ -268,6 +268,9 @@ public: //- Return access to the underlying mesh inline const fvMesh& mesh() const; + + //- Return the boundBox of this processor + inline const treeBoundBox& procBounds() const; }; diff --git a/src/mesh/conformalVoronoiMesh/backgroundMeshDecomposition/backgroundMeshDecompositionI.H b/src/mesh/conformalVoronoiMesh/backgroundMeshDecomposition/backgroundMeshDecompositionI.H index a857ede2852..e1da2fe389d 100644 --- a/src/mesh/conformalVoronoiMesh/backgroundMeshDecomposition/backgroundMeshDecompositionI.H +++ b/src/mesh/conformalVoronoiMesh/backgroundMeshDecomposition/backgroundMeshDecompositionI.H @@ -30,4 +30,10 @@ const Foam::fvMesh& Foam::backgroundMeshDecomposition::mesh() const return mesh_; } + +const Foam::treeBoundBox& Foam::backgroundMeshDecomposition::procBounds() const +{ + return allBackgroundMeshBounds_[Pstream::myProcNo()]; +} + // ************************************************************************* // diff --git a/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H b/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H index 8a83f44a416..eda9ebab173 100644 --- a/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H +++ b/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H @@ -945,6 +945,9 @@ public: //- Return the conformationSurfaces object inline const conformationSurfaces& geometryToConformTo() const; + //- Return the backgroundMeshDecomposition + inline const backgroundMeshDecomposition& decomposition() const; + //- Return the cellSizeControlSurfaces object inline const cellSizeControlSurfaces& cellSizeControl() const; diff --git a/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshI.H b/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshI.H index 140c1d7070d..73603ff184a 100644 --- a/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshI.H +++ b/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshI.H @@ -469,6 +469,13 @@ Foam::conformalVoronoiMesh::geometryToConformTo() const } +inline const Foam::backgroundMeshDecomposition& +Foam::conformalVoronoiMesh::decomposition() const +{ + return decomposition_(); +} + + inline const Foam::cellSizeControlSurfaces& Foam::conformalVoronoiMesh::cellSizeControl() const { diff --git a/src/mesh/conformalVoronoiMesh/initialPointsMethod/initialPointsMethod/initialPointsMethod.H b/src/mesh/conformalVoronoiMesh/initialPointsMethod/initialPointsMethod/initialPointsMethod.H index 2eae6636996..36c129fba15 100644 --- a/src/mesh/conformalVoronoiMesh/initialPointsMethod/initialPointsMethod/initialPointsMethod.H +++ b/src/mesh/conformalVoronoiMesh/initialPointsMethod/initialPointsMethod/initialPointsMethod.H @@ -37,6 +37,7 @@ SourceFiles #include "point.H" #include "conformalVoronoiMesh.H" +#include "backgroundMeshDecomposition.H" #include "dictionary.H" #include "Random.H" #include "Switch.H" diff --git a/src/mesh/conformalVoronoiMesh/initialPointsMethod/uniformGrid/uniformGrid.C b/src/mesh/conformalVoronoiMesh/initialPointsMethod/uniformGrid/uniformGrid.C index d5892bd554e..92c369743ae 100644 --- a/src/mesh/conformalVoronoiMesh/initialPointsMethod/uniformGrid/uniformGrid.C +++ b/src/mesh/conformalVoronoiMesh/initialPointsMethod/uniformGrid/uniformGrid.C @@ -58,7 +58,18 @@ uniformGrid::uniformGrid std::list<Vb::Point> uniformGrid::initialPoints() const { - const boundBox& bb = cvMesh_.geometryToConformTo().globalBounds(); + boundBox bb; + + // Pick up the bounds of this processor, or the whole geometry, depending + // on whether this is a parallel run. + if (Pstream::parRun()) + { + bb = cvMesh_.decomposition().procBounds(); + } + else + { + bb = cvMesh_.geometryToConformTo().globalBounds(); + } scalar x0 = bb.min().x(); scalar xR = bb.max().x() - x0; @@ -82,8 +93,6 @@ std::list<Vb::Point> uniformGrid::initialPoints() const std::list<Vb::Point> initialPoints; - List<bool> isSurfacePoint(nk, false); - for (label i = 0; i < ni; i++) { for (label j = 0; j < nj; j++) @@ -112,14 +121,34 @@ std::list<Vb::Point> uniformGrid::initialPoints() const p.z() += pert*(rndGen.scalar01() - 0.5); } + if + ( + Pstream::parRun() + && !cvMesh_.decomposition().positionOnThisProcessor(p) + ) + { + // Skip this point if, in parallel, this position is not on + // this processor. + continue; + } + points[pI++] = p; } + points.setSize(pI); + Field<bool> insidePoints = cvMesh_.geometryToConformTo().wellInside ( points, minimumSurfaceDistanceCoeffSqr_ - *sqr(cvMesh_.cellSizeControl().cellSize(points, isSurfacePoint)) + *sqr + ( + cvMesh_.cellSizeControl().cellSize + ( + points, + List<bool>(pI, false) + ) + ) ); forAll(insidePoints, i) -- GitLab