ENH: reduced verbosity when decomposing/reconstructing empty meshes

- only warn about missing cells/points if the mesh is also missing
  boundary patches.
- reduce verbosity when decomposing to an empty mesh
- skip face matching when either mesh has no faces
This commit is contained in:
Mark Olesen
2017-11-06 17:06:15 +01:00
parent dc2177cc68
commit 69ea4976ac
3 changed files with 39 additions and 14 deletions

View File

@ -831,11 +831,18 @@ bool Foam::domainDecomposition::writeDecomposition(const bool decomposeSets)
// Statistics // Statistics
Info<< nl << "Processor " << proci;
Info<< endl if (procMesh.nCells())
<< "Processor " << proci << nl {
<< " Number of cells = " << procMesh.nCells() Info<< nl << " ";
<< endl; }
else
{
Info<< ": ";
}
Info<< "Number of cells = " << procMesh.nCells() << nl;
maxProcCells = max(maxProcCells, procMesh.nCells()); maxProcCells = max(maxProcCells, procMesh.nCells());
@ -865,9 +872,12 @@ bool Foam::domainDecomposition::writeDecomposition(const bool decomposeSets)
} }
} }
if (procMesh.nCells() && (nBoundaryFaces || nProcFaces))
{
Info<< " Number of processor patches = " << nProcPatches << nl Info<< " Number of processor patches = " << nProcPatches << nl
<< " Number of processor faces = " << nProcFaces << nl << " Number of processor faces = " << nProcFaces << nl
<< " Number of boundary faces = " << nBoundaryFaces << endl; << " Number of boundary faces = " << nBoundaryFaces << nl;
}
totProcFaces += nProcFaces; totProcFaces += nProcFaces;
totProcPatches += nProcPatches; totProcPatches += nProcPatches;

View File

@ -325,6 +325,11 @@ Foam::polyMesh::polyMesh(const IOobject& io)
boundary_.calcGeometry(); boundary_.calcGeometry();
// Warn if global empty mesh // Warn if global empty mesh
if (returnReduce(boundary_.empty(), orOp<bool>()))
{
WarningInFunction
<< "mesh missing boundary on one or more domains" << endl;
if (returnReduce(nPoints(), sumOp<label>()) == 0) if (returnReduce(nPoints(), sumOp<label>()) == 0)
{ {
WarningInFunction WarningInFunction
@ -335,6 +340,7 @@ Foam::polyMesh::polyMesh(const IOobject& io)
WarningInFunction WarningInFunction
<< "no cells in mesh" << endl; << "no cells in mesh" << endl;
} }
}
// Initialise demand-driven data // Initialise demand-driven data
calcDirections(); calcDirections();

View File

@ -886,6 +886,15 @@ void Foam::faceCoupleInfo::findPerfectMatchingFaces
labelList& mesh1Faces labelList& mesh1Faces
) )
{ {
// Quick check: skip face matching if either mesh has no faces
if (!mesh0.nFaces() || !mesh1.nFaces())
{
mesh0Faces.clear();
mesh1Faces.clear();
return;
}
// Face centres of external faces (without invoking // Face centres of external faces (without invoking
// mesh.faceCentres since mesh might have been clearedOut) // mesh.faceCentres since mesh might have been clearedOut)