diff --git a/src/overset/cellCellStencil/inverseDistance/inverseDistanceCellCellStencil.C b/src/overset/cellCellStencil/inverseDistance/inverseDistanceCellCellStencil.C index a595d80d15c4889520427226109d48ed661490a9..4915401d461543862474afb6085a58b1e217c5f3 100644 --- a/src/overset/cellCellStencil/inverseDistance/inverseDistanceCellCellStencil.C +++ b/src/overset/cellCellStencil/inverseDistance/inverseDistanceCellCellStencil.C @@ -564,7 +564,7 @@ void Foam::cellCellStencils::inverseDistance::markDonors forAll(tgtCellMap, tgtCelli) { label celli = tgtCellMap[tgtCelli]; - if (allStencil[celli].empty()) + if (srcOverlapProcs.size()) { treeBoundBox subBb(cellBb(mesh_, celli)); subBb.min() -= smallVec_; diff --git a/src/overset/cellCellStencil/trackingInverseDistance/trackingInverseDistanceCellCellStencil.C b/src/overset/cellCellStencil/trackingInverseDistance/trackingInverseDistanceCellCellStencil.C index 6f6ffdedc84b5ac853511eef3595c8d402c78cc3..4f3ba709cacc8de0cc16457b66192d041201899f 100644 --- a/src/overset/cellCellStencil/trackingInverseDistance/trackingInverseDistanceCellCellStencil.C +++ b/src/overset/cellCellStencil/trackingInverseDistance/trackingInverseDistanceCellCellStencil.C @@ -322,6 +322,7 @@ void Foam::cellCellStencils::trackingInverseDistance::markDonors PstreamBuffers& pBufs, const List<treeBoundBoxList>& meshBb, const PtrList<voxelMeshSearch>& meshSearches, + const labelList& allCellTypes, const label srcI, const label tgtI, @@ -344,13 +345,19 @@ void Foam::cellCellStencils::trackingInverseDistance::markDonors forAll(tgtCellMap, tgtCelli) { label srcCelli = meshSearch.findCell(tgtCc[tgtCelli]); - if (srcCelli != -1) + if (srcCelli != -1 && allCellTypes[srcCellMap[srcCelli]] != HOLE) { - label globalDonor = globalCells_.toGlobal(srcCellMap[srcCelli]); label celli = tgtCellMap[tgtCelli]; - allStencil[celli].setSize(1); - allStencil[celli][0] = globalDonor; - allDonor[celli] = srcI; + + // TBD: check for multiple donors. Maybe better one? For + // now check 'nearer' mesh + if (betterDonor(tgtI, allDonor[celli], srcI)) + { + allStencil[celli].setSize(1); + allStencil[celli][0] = + globalCells_.toGlobal(srcCellMap[srcCelli]); + allDonor[celli] = srcI; + } } } } @@ -393,9 +400,11 @@ void Foam::cellCellStencils::trackingInverseDistance::markDonors forAll(tgtCellMap, tgtCelli) { label celli = tgtCellMap[tgtCelli]; - if (allStencil[celli].empty()) + if (srcOverlapProcs.size()) { - const treeBoundBox subBb(cellBb(mesh_, celli)); + treeBoundBox subBb(cellBb(mesh_, celli)); + subBb.min() -= smallVec_; + subBb.max() += smallVec_; forAll(srcOverlapProcs, i) { @@ -434,7 +443,7 @@ void Foam::cellCellStencils::trackingInverseDistance::markDonors forAll(samples, sampleI) { label srcCelli = meshSearch.findCell(samples[sampleI]); - if (srcCelli != -1) + if (srcCelli != -1 && allCellTypes[srcCellMap[srcCelli]] != HOLE) { donors[sampleI] = globalCells_.toGlobal(srcCellMap[srcCelli]); } @@ -469,7 +478,7 @@ void Foam::cellCellStencils::trackingInverseDistance::markDonors label celli = tgtCellMap[cellIDs[donorI]]; // TBD: check for multiple donors. Maybe better one? - if (allStencil[celli].empty()) + if (betterDonor(tgtI, allDonor[celli], srcI)) { allStencil[celli].setSize(1); allStencil[celli][0] = globalDonor; @@ -798,6 +807,7 @@ bool Foam::cellCellStencils::trackingInverseDistance::update() pBufs, meshBb, meshSearches, + allCellTypes, // to exclude hole donors tgti, srci, @@ -809,6 +819,7 @@ bool Foam::cellCellStencils::trackingInverseDistance::update() pBufs, meshBb, meshSearches, + allCellTypes, // to exclude hole donors srci, tgti, diff --git a/src/overset/cellCellStencil/trackingInverseDistance/trackingInverseDistanceCellCellStencil.H b/src/overset/cellCellStencil/trackingInverseDistance/trackingInverseDistanceCellCellStencil.H index d5caa9acb6ab491dc8fd3afe56e45e1fad950edd..9504e8da3a773368c4fa307015fac4d82e3fc14b 100644 --- a/src/overset/cellCellStencil/trackingInverseDistance/trackingInverseDistanceCellCellStencil.H +++ b/src/overset/cellCellStencil/trackingInverseDistance/trackingInverseDistanceCellCellStencil.H @@ -108,6 +108,7 @@ protected: PstreamBuffers& pBufs, const List<treeBoundBoxList>& meshBb, const PtrList<voxelMeshSearch>& meshSearches, + const labelList& allCellTypes, const label srcI, const label tgtI,