From 2ee0757364c639fffc04834ad80e9ccabd1a5290 Mon Sep 17 00:00:00 2001 From: mattijs Date: Wed, 23 Mar 2022 10:31:35 +0000 Subject: [PATCH] BUG: processorLOD: handle 0 cells. Fixes #2421 --- src/meshTools/processorLOD/box/box.C | 4 ++-- src/sampling/meshToMesh/meshToMeshParallelOps.C | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/meshTools/processorLOD/box/box.C b/src/meshTools/processorLOD/box/box.C index 246fb31973..190edc3373 100644 --- a/src/meshTools/processorLOD/box/box.C +++ b/src/meshTools/processorLOD/box/box.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2017-2021 OpenCFD Ltd. + Copyright (C) 2017-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -148,7 +148,7 @@ void Foam::processorLODs::box::setRefineFlags labelList& procRefineFlags = refineFlags[proci]; procRefineFlags.setSize(remoteSrcBoxes.size(), FIXED); - if (scalar(nTgtObjects)/scalar(nObjects) < 0.1) + if (nObjects == 0 || scalar(nTgtObjects)/scalar(nObjects) < 0.1) { // Sending less than 10% of objects of this type // - shortcut by sending all diff --git a/src/sampling/meshToMesh/meshToMeshParallelOps.C b/src/sampling/meshToMesh/meshToMeshParallelOps.C index 4f15b95ba7..da39fe2da7 100644 --- a/src/sampling/meshToMesh/meshToMeshParallelOps.C +++ b/src/sampling/meshToMesh/meshToMeshParallelOps.C @@ -124,7 +124,9 @@ Foam::autoPtr Foam::meshToMesh::calcProcMap // (possibly remote) cells from the tgt mesh such that they // (together) cover all of the src mesh const label nGlobalSrcCells = src.globalData().nTotalCells(); - const label cellsPerBox = max(1, 0.001*nGlobalSrcCells); + // Note: minimum content has to be > 1 since otherwise + // would keep on splitting. 16 is fairly random choice. + const label cellsPerBox = max(16, 0.001*nGlobalSrcCells); typename processorLODs::cellBox boxLOD ( src.cells(),