Skip to content
Snippets Groups Projects
Commit c2c9681b authored by mattijs's avatar mattijs
Browse files

optional merging of sub-regions

parent ed73a70b
No related merge requests found
...@@ -36,7 +36,12 @@ namespace Foam ...@@ -36,7 +36,12 @@ namespace Foam
{ {
defineTypeNameAndDebug(searchableSurfaceCollection, 0); defineTypeNameAndDebug(searchableSurfaceCollection, 0);
addToRunTimeSelectionTable(searchableSurface, searchableSurfaceCollection, dict); addToRunTimeSelectionTable
(
searchableSurface,
searchableSurfaceCollection,
dict
);
} }
...@@ -63,15 +68,17 @@ void Foam::searchableSurfaceCollection::findNearest ...@@ -63,15 +68,17 @@ void Foam::searchableSurfaceCollection::findNearest
forAll(subGeom_, surfI) forAll(subGeom_, surfI)
{ {
// Transform then divide subGeom_[surfI].findNearest
tmp<pointField> localSamples = cmptDivide
( (
transform_[surfI].localPosition(samples), cmptDivide // Transform then divide
scale_[surfI] (
transform_[surfI].localPosition(samples),
scale_[surfI]
),
localMinDistSqr,
hitInfo
); );
subGeom_[surfI].findNearest(localSamples, localMinDistSqr, hitInfo);
forAll(hitInfo, pointI) forAll(hitInfo, pointI)
{ {
if (hitInfo[pointI].hit()) if (hitInfo[pointI].hit())
...@@ -115,7 +122,8 @@ Foam::searchableSurfaceCollection::searchableSurfaceCollection ...@@ -115,7 +122,8 @@ Foam::searchableSurfaceCollection::searchableSurfaceCollection
instance_(dict.size()), instance_(dict.size()),
scale_(dict.size()), scale_(dict.size()),
transform_(dict.size()), transform_(dict.size()),
subGeom_(dict.size()) subGeom_(dict.size()),
mergeSubRegions_(dict.lookup("mergeSubRegions"))
{ {
Info<< "SearchableCollection : " << name() << endl; Info<< "SearchableCollection : " << name() << endl;
...@@ -181,12 +189,19 @@ const Foam::wordList& Foam::searchableSurfaceCollection::regions() const ...@@ -181,12 +189,19 @@ const Foam::wordList& Foam::searchableSurfaceCollection::regions() const
{ {
regionOffset_[surfI] = allRegions.size(); regionOffset_[surfI] = allRegions.size();
const wordList& subRegions = subGeom_[surfI].regions(); if (mergeSubRegions_)
forAll(subRegions, i)
{ {
//allRegions.append(subRegions[i] + "_" + Foam::name(surfI)); // Single name regardless how many regions subsurface has
allRegions.append(instance_[surfI] + "_" + subRegions[i]); allRegions.append(instance_[surfI] + "_" + Foam::name(surfI));
}
else
{
const wordList& subRegions = subGeom_[surfI].regions();
forAll(subRegions, i)
{
allRegions.append(instance_[surfI] + "_" + subRegions[i]);
}
} }
} }
regions_.transfer(allRegions.shrink()); regions_.transfer(allRegions.shrink());
...@@ -370,7 +385,15 @@ void Foam::searchableSurfaceCollection::getRegion ...@@ -370,7 +385,15 @@ void Foam::searchableSurfaceCollection::getRegion
{} {}
else if (subGeom_.size() == 1) else if (subGeom_.size() == 1)
{ {
subGeom_[0].getRegion(info, region); if (mergeSubRegions_)
{
region.setSize(info.size());
region = regionOffset_[0];
}
else
{
subGeom_[0].getRegion(info, region);
}
} }
else else
{ {
...@@ -429,15 +452,25 @@ void Foam::searchableSurfaceCollection::getRegion ...@@ -429,15 +452,25 @@ void Foam::searchableSurfaceCollection::getRegion
// Collect points from my surface // Collect points from my surface
labelList indices(findIndices(nearestSurf, surfI)); labelList indices(findIndices(nearestSurf, surfI));
labelList surfRegion; if (mergeSubRegions_)
subGeom_[surfI].getRegion
(
UIndirectList<pointIndexHit>(info, indices),
surfRegion
);
forAll(indices, i)
{ {
region[indices[i]] = regionOffset_[surfI] + surfRegion[i]; forAll(indices, i)
{
region[indices[i]] = regionOffset_[surfI];
}
}
else
{
labelList surfRegion;
subGeom_[surfI].getRegion
(
UIndirectList<pointIndexHit>(info, indices),
surfRegion
);
forAll(indices, i)
{
region[indices[i]] = regionOffset_[surfI] + surfRegion[i];
}
} }
} }
} }
......
...@@ -40,6 +40,7 @@ SourceFiles ...@@ -40,6 +40,7 @@ SourceFiles
#include "treeBoundBox.H" #include "treeBoundBox.H"
#include "coordinateSystem.H" #include "coordinateSystem.H"
#include "UPtrList.H" #include "UPtrList.H"
#include "Switch.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
...@@ -73,6 +74,8 @@ private: ...@@ -73,6 +74,8 @@ private:
UPtrList<searchableSurface> subGeom_; UPtrList<searchableSurface> subGeom_;
Switch mergeSubRegions_;
//- Region names //- Region names
mutable wordList regions_; mutable wordList regions_;
//- From individual regions to collection regions //- From individual regions to collection regions
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment