diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.C index f1640fa8a9..edbe9ef46d 100644 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.C +++ b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.C @@ -43,7 +43,8 @@ Foam::cellSizeFunction::cellSizeFunction const word& type, const dictionary& cellSizeFunctionDict, const searchableSurface& surface, - const scalar& defaultCellSize + const scalar& defaultCellSize, + const labelList regionIndices ) : dictionary(cellSizeFunctionDict), @@ -59,6 +60,7 @@ Foam::cellSizeFunction::cellSizeFunction ), coeffsDict_(subDict(type + "Coeffs")), defaultCellSize_(defaultCellSize), + regionIndices_(regionIndices), sideMode_(), priority_(readLabel(cellSizeFunctionDict.lookup("priority", true))) { @@ -106,7 +108,8 @@ Foam::autoPtr Foam::cellSizeFunction::New ( const dictionary& cellSizeFunctionDict, const searchableSurface& surface, - const scalar& defaultCellSize + const scalar& defaultCellSize, + const labelList regionIndices ) { word cellSizeFunctionTypeName @@ -136,7 +139,13 @@ Foam::autoPtr Foam::cellSizeFunction::New return autoPtr ( - cstrIter()(cellSizeFunctionDict, surface, defaultCellSize) + cstrIter() + ( + cellSizeFunctionDict, + surface, + defaultCellSize, + regionIndices + ) ); } diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.H index fc5888fa78..b84dc09ff8 100644 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.H +++ b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.H @@ -96,6 +96,10 @@ protected: const scalar& defaultCellSize_; + //- Index of the region of the surface that this cell size function + // applies to + const labelList regionIndices_; + //- Mode of size specification, i.e. inside, outside or bothSides sideMode sideMode_; @@ -125,9 +129,10 @@ public: ( const dictionary& cellSizeFunctionDict, const searchableSurface& surface, - const scalar& defaultCellSize + const scalar& defaultCellSize, + const labelList regionIndices ), - (cellSizeFunctionDict, surface, defaultCellSize) + (cellSizeFunctionDict, surface, defaultCellSize, regionIndices) ); @@ -139,7 +144,8 @@ public: const word& type, const dictionary& cellSizeFunctionDict, const searchableSurface& surface, - const scalar& defaultCellSize + const scalar& defaultCellSize, + const labelList regionIndices ); @@ -150,7 +156,8 @@ public: ( const dictionary& cellSizeFunctionDict, const searchableSurface& surface, - const scalar& defaultCellSize + const scalar& defaultCellSize, + const labelList regionIndices ); diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearDistance/linearDistance.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearDistance/linearDistance.C index bd481700c6..41de36b760 100644 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearDistance/linearDistance.C +++ b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearDistance/linearDistance.C @@ -46,10 +46,18 @@ linearDistance::linearDistance ( const dictionary& initialPointsDict, const searchableSurface& surface, - const scalar& defaultCellSize + const scalar& defaultCellSize, + const labelList regionIndices ) : - cellSizeFunction(typeName, initialPointsDict, surface, defaultCellSize), + cellSizeFunction + ( + typeName, + initialPointsDict, + surface, + defaultCellSize, + regionIndices + ), distanceCellSize_ ( readScalar(coeffsDict().lookup("distanceCellSizeCoeff")) @@ -97,6 +105,7 @@ bool linearDistance::cellSize(const point& pt, scalar& size) const ( pointField(1, pt), scalarField(1, distanceSqr_), + regionIndices_, hits ); diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearDistance/linearDistance.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearDistance/linearDistance.H index 1e5fff72c0..f69624389a 100644 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearDistance/linearDistance.H +++ b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearDistance/linearDistance.H @@ -82,7 +82,8 @@ public: ( const dictionary& initialPointsDict, const searchableSurface& surface, - const scalar& defaultCellSize + const scalar& defaultCellSize, + const labelList regionIndices ); diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearSpatial/linearSpatial.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearSpatial/linearSpatial.C index 26d9cd1cfe..fcf3086bb8 100644 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearSpatial/linearSpatial.C +++ b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearSpatial/linearSpatial.C @@ -44,10 +44,18 @@ linearSpatial::linearSpatial ( const dictionary& initialPointsDict, const searchableSurface& surface, - const scalar& defaultCellSize + const scalar& defaultCellSize, + const labelList regionIndices ) : - cellSizeFunction(typeName, initialPointsDict, surface, defaultCellSize), + cellSizeFunction + ( + typeName, + initialPointsDict, + surface, + defaultCellSize, + regionIndices + ), referencePoint_(coeffsDict().lookup("referencePoint")), referenceCellSize_ ( @@ -94,6 +102,7 @@ bool linearSpatial::cellSize ( pointField(1, pt), scalarField(1, sqr(snapToSurfaceTol_)), + regionIndices_, hits ); diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearSpatial/linearSpatial.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearSpatial/linearSpatial.H index 6ea90cb127..6d243ffafe 100644 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearSpatial/linearSpatial.H +++ b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/linearSpatial/linearSpatial.H @@ -86,7 +86,8 @@ public: ( const dictionary& initialPointsDict, const searchableSurface& surface, - const scalar& defaultCellSize + const scalar& defaultCellSize, + const labelList regionIndices ); diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/surfaceOffsetLinearDistance/surfaceOffsetLinearDistance.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/surfaceOffsetLinearDistance/surfaceOffsetLinearDistance.C index aed94e9da0..926ded5ed9 100644 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/surfaceOffsetLinearDistance/surfaceOffsetLinearDistance.C +++ b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/surfaceOffsetLinearDistance/surfaceOffsetLinearDistance.C @@ -48,10 +48,18 @@ surfaceOffsetLinearDistance::surfaceOffsetLinearDistance ( const dictionary& initialPointsDict, const searchableSurface& surface, - const scalar& defaultCellSize + const scalar& defaultCellSize, + const labelList regionIndices ) : - cellSizeFunction(typeName, initialPointsDict, surface, defaultCellSize), + cellSizeFunction + ( + typeName, + initialPointsDict, + surface, + defaultCellSize, + regionIndices + ), distanceCellSize_ ( readScalar(coeffsDict().lookup("distanceCellSizeCoeff")) @@ -166,6 +174,7 @@ bool surfaceOffsetLinearDistance::cellSize ( pointField(1, pt), scalarField(1, totalDistanceSqr_), + regionIndices_, hits ); diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/surfaceOffsetLinearDistance/surfaceOffsetLinearDistance.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/surfaceOffsetLinearDistance/surfaceOffsetLinearDistance.H index 0a68792715..3eab72cc7c 100644 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/surfaceOffsetLinearDistance/surfaceOffsetLinearDistance.H +++ b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/surfaceOffsetLinearDistance/surfaceOffsetLinearDistance.H @@ -86,7 +86,8 @@ public: ( const dictionary& initialPointsDict, const searchableSurface& surface, - const scalar& defaultCellSize + const scalar& defaultCellSize, + const labelList regionIndices ); diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniform/uniform.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniform/uniform.C index fc5c3fba31..21a7e4bc4e 100644 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniform/uniform.C +++ b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniform/uniform.C @@ -43,10 +43,18 @@ uniform::uniform ( const dictionary& initialPointsDict, const searchableSurface& surface, - const scalar& defaultCellSize + const scalar& defaultCellSize, + const labelList regionIndices ) : - cellSizeFunction(typeName, initialPointsDict, surface, defaultCellSize) + cellSizeFunction + ( + typeName, + initialPointsDict, + surface, + defaultCellSize, + regionIndices + ) {} @@ -64,6 +72,7 @@ bool uniform::cellSize ( pointField(1, pt), scalarField(1, sqr(GREAT)), + regionIndices_, hits ); @@ -89,6 +98,7 @@ bool uniform::cellSize ( pointField(1, pt), scalarField(1, sqr(snapToSurfaceTol_)), + regionIndices_, closeToSurfaceHits ); diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniform/uniform.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniform/uniform.H index 5c7dd3c4c1..72828c5373 100644 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniform/uniform.H +++ b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniform/uniform.H @@ -67,7 +67,8 @@ public: ( const dictionary& initialPointsDict, const searchableSurface& surface, - const scalar& defaultCellSize + const scalar& defaultCellSize, + const labelList regionIndices ); diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniformDistance/uniformDistance.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniformDistance/uniformDistance.C index e2b890bab9..1d7ef706ca 100644 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniformDistance/uniformDistance.C +++ b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniformDistance/uniformDistance.C @@ -43,10 +43,18 @@ uniformDistance::uniformDistance ( const dictionary& initialPointsDict, const searchableSurface& surface, - const scalar& defaultCellSize + const scalar& defaultCellSize, + const labelList regionIndices ) : - cellSizeFunction(typeName, initialPointsDict, surface, defaultCellSize), + cellSizeFunction + ( + typeName, + initialPointsDict, + surface, + defaultCellSize, + regionIndices + ), distance_ ( readScalar(coeffsDict().lookup("distanceCoeff"))*defaultCellSize @@ -71,6 +79,7 @@ bool uniformDistance::cellSize ( pointField(1, pt), scalarField(1, distanceSqr_), + regionIndices_, hits ); @@ -78,9 +87,12 @@ bool uniformDistance::cellSize if (hitInfo.hit()) { + const point& hitPt = hitInfo.hitPoint(); + const label index = hitInfo.index(); + if (sideMode_ == rmBothsides) { - size = surfaceCellSizeFunction_().surfaceSize(hitInfo.index()); + size = surfaceCellSizeFunction_().interpolate(hitPt, index); return true; } @@ -89,7 +101,7 @@ bool uniformDistance::cellSize // getVolumeType calculation, as it will be prone to error. if (mag(pt - hitInfo.hitPoint()) < snapToSurfaceTol_) { - size = surfaceCellSizeFunction_().surfaceSize(hitInfo.index()); + size = surfaceCellSizeFunction_().interpolate(hitPt, index); return true; } @@ -107,7 +119,7 @@ bool uniformDistance::cellSize && vTL[0] == volumeType::INSIDE ) { - size = surfaceCellSizeFunction_().surfaceSize(hitInfo.index()); + size = surfaceCellSizeFunction_().interpolate(hitPt, index); functionApplied = true; } @@ -117,7 +129,7 @@ bool uniformDistance::cellSize && vTL[0] == volumeType::OUTSIDE ) { - size = surfaceCellSizeFunction_().surfaceSize(hitInfo.index()); + size = surfaceCellSizeFunction_().interpolate(hitPt, index); functionApplied = true; } @@ -134,30 +146,33 @@ bool uniformDistance::setCellSize const pointField& pts ) { - labelHashSet surfaceAlreadyHit(surface_.size()); +// labelHashSet surfaceAlreadyHit(surface_.size()); +// +// forAll(pts, ptI) +// { +// const Foam::point& pt = pts[ptI]; +// +// List hits; +// +// surface_.findNearest +// ( +// pointField(1, pt), +// scalarField(1, distanceSqr_), +// regionIndices_, +// hits +// ); +// +// if (hits[0].hit() && !surfaceAlreadyHit.found(hits[0].index())) +// { +// surfaceCellSizeFunction_().refineSurfaceSize(hits[0].index()); +// +// surfaceAlreadyHit.insert(hits[0].index()); +// } +// } +// +// return true; - forAll(pts, ptI) - { - const Foam::point& pt = pts[ptI]; - - List hits; - - surface_.findNearest - ( - pointField(1, pt), - scalarField(1, distanceSqr_), - hits - ); - - if (hits[0].hit() && !surfaceAlreadyHit.found(hits[0].index())) - { - surfaceCellSizeFunction_().refineSurfaceSize(hits[0].index()); - - surfaceAlreadyHit.insert(hits[0].index()); - } - } - - return true; + return false; } diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniformDistance/uniformDistance.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniformDistance/uniformDistance.H index 2ff6bc0935..bdbe786ff9 100644 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniformDistance/uniformDistance.H +++ b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniformDistance/uniformDistance.H @@ -73,7 +73,8 @@ public: ( const dictionary& initialPointsDict, const searchableSurface& surface, - const scalar& defaultCellSize + const scalar& defaultCellSize, + const labelList regionIndices );