diff --git a/src/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.C b/src/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.C index aa1e263a76..c7e92f3897 100644 --- a/src/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.C +++ b/src/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/cellSizeFunction/cellSizeFunction.C @@ -57,23 +57,35 @@ cellSizeFunction::cellSizeFunction { word mode = cellSizeFunctionDict.lookup("mode"); - if (mode == "inside") + if (surface_.hasVolumeType()) { - sideMode_ = INSIDE; - } - else if (mode == "outside") - { - sideMode_ = OUTSIDE; - } - else if (mode == "bothSides") - { - sideMode_ = BOTHSIDES; - } - else - { - FatalErrorIn("cellSizeFunction::cellSizeFunction") + if (mode == "inside") + { + sideMode_ = INSIDE; + } + else if (mode == "outside") + { + sideMode_ = OUTSIDE; + } + else if (mode == "bothSides") + { + sideMode_ = BOTHSIDES; + } + else + { + FatalErrorIn("cellSizeFunction::cellSizeFunction") << "Unknown mode, expected: inside, outside or bothSides" << nl - << exit(FatalError); + << exit(FatalError); + } + } + else if (mode != BOTHSIDES) + { + WarningIn("cellSizeFunction::cellSizeFunction") + << "surface does not support volumeType, defaulting mode to " + << "bothSides." + << endl; + + sideMode_ = BOTHSIDES; } } diff --git a/src/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniform/uniform.C b/src/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniform/uniform.C index 8a7797713f..e86d3715b2 100644 --- a/src/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniform/uniform.C +++ b/src/conformalVoronoiMesh/cellSizeControlSurfaces/cellSizeFunction/uniform/uniform.C @@ -55,9 +55,44 @@ uniform::uniform bool uniform::cellSize(const point& pt, scalar& size) const { - size = cellSize_; + if (sideMode_ == BOTHSIDES) + { + size = cellSize_; - return true; + return true; + } + + pointField ptF(1, pt); + List vTL(1); + + surface_.getVolumeType(ptF, vTL); + + size = 0; + + bool functionApplied = false; + + if + ( + sideMode_ == INSIDE + && vTL[1] == searchableSurface::INSIDE + ) + { + size = cellSize_; + + functionApplied = true; + } + else if + ( + sideMode_ == OUTSIDE + && vTL[1] == searchableSurface::OUTSIDE + ) + { + size = cellSize_; + + functionApplied = true; + } + + return functionApplied; } diff --git a/src/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C b/src/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C index bd4f9bd283..8c2d83fbb2 100644 --- a/src/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C +++ b/src/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C @@ -100,6 +100,9 @@ Foam::conformalVoronoiMesh::conformalVoronoiMesh { timeCheck(); + point sizeTestPt = vector(0.5, 0.3, 0.6); + Info<< nl << cellSizeControl().cellSize(sizeTestPt) << endl; + createFeaturePoints(); timeCheck();