diff --git a/src/finiteArea/faMesh/faBoundaryMesh/faBoundaryMesh.C b/src/finiteArea/faMesh/faBoundaryMesh/faBoundaryMesh.C index dee21f5617..82b497a3ad 100644 --- a/src/finiteArea/faMesh/faBoundaryMesh/faBoundaryMesh.C +++ b/src/finiteArea/faMesh/faBoundaryMesh/faBoundaryMesh.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2016-2017 Wikki Ltd - Copyright (C) 2018-2022 OpenCFD Ltd. + Copyright (C) 2018-2023 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -180,10 +180,20 @@ Foam::faBoundaryMesh::faBoundaryMesh void Foam::faBoundaryMesh::calcGeometry() { - // processorFaPatch geometry triggers calculation of pointNormals. + // processor initGeometry send/recv the following: + // - edgeCentres() : faMesh::edgeCentres() + // - edgeLengths() : faMesh::Le() + // - edgeFaceCentres() : faMesh::areaCentres() + // + // faMesh::Le() has its own point-to-point communication (OK) but + // triggers either/or edgeAreaNormals(), pointAreaNormals() + // with their own communication that can block. + // This uses parallel comms and hence will not be trigggered // on processors that do not have a processorFaPatch so instead // force construction. + + (void)mesh_.edgeAreaNormals(); (void)mesh_.pointAreaNormals(); PstreamBuffers pBufs(Pstream::defaultCommsType); @@ -773,10 +783,9 @@ bool Foam::faBoundaryMesh::checkDefinition(const bool report) const void Foam::faBoundaryMesh::movePoints(const pointField& p) { - // processorFaPatch geometry triggers calculation of pointNormals. - // This uses parallel comms and hence will not be trigggered - // on processors that do not have a processorFaPatch so instead - // force construction. + // See comments in calcGeometry() + + (void)mesh_.edgeAreaNormals(); (void)mesh_.pointAreaNormals(); PstreamBuffers pBufs(Pstream::defaultCommsType);