diff --git a/src/mesh/conformalVoronoiMesh/backgroundMeshDecomposition/backgroundMeshDecomposition.H b/src/mesh/conformalVoronoiMesh/backgroundMeshDecomposition/backgroundMeshDecomposition.H index 51aef7ae3d119361afc11f5d30f240f9af51f432..c3f9361f4e57dca38e50304cce7511f975a75cf1 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 a857ede28525dbf08c2b102a9aaeaa3a19ac0f90..e1da2fe389d2312cdd4b85f14251f47654e08d8b 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 8a83f44a416d63feb11cb1c503e7219d2e89dba7..eda9ebab173bae34ed66702a48e0a124c2500b29 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 140c1d7070d3050ec7e5cefb961a7736feb5fb4d..73603ff184ad1ca31089a2ab6132b589c89531b8 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 2eae6636996122cf4f96aff668a90df80ae59142..36c129fba156293dbba0c096357ff18352fbbfd9 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 d5892bd554e1766501f377005707f0a8a382baf1..92c369743aeeffd9ec2d502fd6c9856505c7d9d5 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)