mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: Update cell size functions to use the regionIndices findNearest
functions
This commit is contained in:
@ -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> 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> Foam::cellSizeFunction::New
|
||||
|
||||
return autoPtr<cellSizeFunction>
|
||||
(
|
||||
cstrIter()(cellSizeFunctionDict, surface, defaultCellSize)
|
||||
cstrIter()
|
||||
(
|
||||
cellSizeFunctionDict,
|
||||
surface,
|
||||
defaultCellSize,
|
||||
regionIndices
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
);
|
||||
|
||||
|
||||
|
||||
@ -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
|
||||
);
|
||||
|
||||
|
||||
@ -82,7 +82,8 @@ public:
|
||||
(
|
||||
const dictionary& initialPointsDict,
|
||||
const searchableSurface& surface,
|
||||
const scalar& defaultCellSize
|
||||
const scalar& defaultCellSize,
|
||||
const labelList regionIndices
|
||||
);
|
||||
|
||||
|
||||
|
||||
@ -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
|
||||
);
|
||||
|
||||
|
||||
@ -86,7 +86,8 @@ public:
|
||||
(
|
||||
const dictionary& initialPointsDict,
|
||||
const searchableSurface& surface,
|
||||
const scalar& defaultCellSize
|
||||
const scalar& defaultCellSize,
|
||||
const labelList regionIndices
|
||||
);
|
||||
|
||||
|
||||
|
||||
@ -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
|
||||
);
|
||||
|
||||
|
||||
@ -86,7 +86,8 @@ public:
|
||||
(
|
||||
const dictionary& initialPointsDict,
|
||||
const searchableSurface& surface,
|
||||
const scalar& defaultCellSize
|
||||
const scalar& defaultCellSize,
|
||||
const labelList regionIndices
|
||||
);
|
||||
|
||||
|
||||
|
||||
@ -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
|
||||
);
|
||||
|
||||
|
||||
@ -67,7 +67,8 @@ public:
|
||||
(
|
||||
const dictionary& initialPointsDict,
|
||||
const searchableSurface& surface,
|
||||
const scalar& defaultCellSize
|
||||
const scalar& defaultCellSize,
|
||||
const labelList regionIndices
|
||||
);
|
||||
|
||||
|
||||
|
||||
@ -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<pointIndexHit> 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<pointIndexHit> 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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -73,7 +73,8 @@ public:
|
||||
(
|
||||
const dictionary& initialPointsDict,
|
||||
const searchableSurface& surface,
|
||||
const scalar& defaultCellSize
|
||||
const scalar& defaultCellSize,
|
||||
const labelList regionIndices
|
||||
);
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user