From 254f98f56bcf7f4a2d42d2812f0f530da903085a Mon Sep 17 00:00:00 2001 From: graham Date: Tue, 7 Jul 2009 17:34:36 +0100 Subject: [PATCH] uniform cellSizeFunction implemented. Check applied in cellSizeFunction base class to surface for hasVolumeType - defaulting to BOTHSIDES if not a closed surface. Test point for cell sizes in conformalVoronoiMesh.C. --- .../cellSizeFunction/cellSizeFunction.C | 42 ++++++++++++------- .../cellSizeFunction/uniform/uniform.C | 39 ++++++++++++++++- .../conformalVoronoiMesh.C | 3 ++ 3 files changed, 67 insertions(+), 17 deletions(-) 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();