diff --git a/src/OpenFOAM/meshes/polyMesh/polyBoundaryMesh/polyBoundaryMesh.C b/src/OpenFOAM/meshes/polyMesh/polyBoundaryMesh/polyBoundaryMesh.C
index 98a1f6104dbf6de4998b261549f17d54829070a9..7f77ccd6f76bd7ac2b54bdcd266af8d743048f0b 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyBoundaryMesh/polyBoundaryMesh.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyBoundaryMesh/polyBoundaryMesh.C
@@ -167,10 +167,6 @@ Foam::polyBoundaryMesh::polyBoundaryMesh
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::polyBoundaryMesh::~polyBoundaryMesh()
-{}
-
-
 void Foam::polyBoundaryMesh::clearGeom()
 {
     forAll(*this, patchi)
@@ -505,6 +501,28 @@ void Foam::polyBoundaryMesh::setGroup
 }
 
 
+Foam::label Foam::polyBoundaryMesh::nNonProcessor() const
+{
+    const polyPatchList& patches = *this;
+
+    label nonProc = 0;
+
+    for (const polyPatch& p : patches)
+    {
+        if (isA<processorPolyPatch>(p))
+        {
+            break;
+        }
+        else
+        {
+            ++nonProc;
+        }
+    }
+
+    return nonProc;
+}
+
+
 Foam::wordList Foam::polyBoundaryMesh::names() const
 {
     const polyPatchList& patches = *this;
@@ -856,7 +874,6 @@ bool Foam::polyBoundaryMesh::checkParallelSync(const bool report) const
         return false;
     }
 
-
     const polyBoundaryMesh& bm = *this;
 
     bool hasError = false;
diff --git a/src/OpenFOAM/meshes/polyMesh/polyBoundaryMesh/polyBoundaryMesh.H b/src/OpenFOAM/meshes/polyMesh/polyBoundaryMesh/polyBoundaryMesh.H
index b2783c5563e76c41e82a3f3a26ae742c77f9625c..139e4fdbfb493130106b4271f22bfaf17dea0bd9 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyBoundaryMesh/polyBoundaryMesh.H
+++ b/src/OpenFOAM/meshes/polyMesh/polyBoundaryMesh/polyBoundaryMesh.H
@@ -82,10 +82,10 @@ class polyBoundaryMesh
         void calcGeometry();
 
         //- Disallow construct as copy
-        polyBoundaryMesh(const polyBoundaryMesh&);
+        polyBoundaryMesh(const polyBoundaryMesh&) = delete;
 
         //- Disallow assignment
-        void operator=(const polyBoundaryMesh&);
+        void operator=(const polyBoundaryMesh&) = delete;
 
 
 public:
@@ -126,7 +126,7 @@ public:
 
 
     //- Destructor
-    ~polyBoundaryMesh();
+    ~polyBoundaryMesh() = default;
 
         //- Clear geometry at this level and at patches
         void clearGeom();
@@ -151,6 +151,9 @@ public:
         //  Only valid for singly connected polyBoundaryMesh and not parallel
         const List<labelPairList>& neighbourEdges() const;
 
+        //- Return the number of non-processor patches
+        label nNonProcessor() const;
+
         //- Return a list of patch names
         wordList names() const;