From bacb35a4df3991a9bd017c4b884489f40e0ea741 Mon Sep 17 00:00:00 2001
From: Kutalmis Bercin <kutalmis.bercin@esi-group.com>
Date: Thu, 12 Sep 2024 16:30:03 +0100
Subject: [PATCH] ENH: functionObjects: add optional flag to suppress warnings
 for missing patches

---
 src/functionObjects/field/Curle/Curle.C               |  7 +++++--
 src/functionObjects/field/Curle/Curle.H               |  3 +++
 .../field/binField/binModels/binModel/binModel.C      |  6 +++++-
 .../field/binField/binModels/binModel/binModel.H      |  3 +++
 .../field/columnAverage/columnAverage.C               |  8 ++++++--
 .../field/columnAverage/columnAverage.H               |  3 +++
 .../heatTransferCoeffModel/heatTransferCoeffModel.C   |  7 +++++--
 .../heatTransferCoeffModel/heatTransferCoeffModel.H   |  3 +++
 .../field/nearWallFields/nearWallFields.C             |  7 +++++--
 .../field/nearWallFields/nearWallFields.H             |  3 +++
 .../regionSizeDistribution/regionSizeDistribution.C   | 10 ++++++++--
 .../regionSizeDistribution/regionSizeDistribution.H   |  3 +++
 src/functionObjects/field/wallHeatFlux/wallHeatFlux.C |  6 ++++--
 src/functionObjects/field/wallHeatFlux/wallHeatFlux.H |  3 +++
 .../field/wallShearStress/wallShearStress.C           |  6 ++++--
 .../field/wallShearStress/wallShearStress.H           |  3 +++
 src/functionObjects/forces/forces/forces.C            | 11 ++++++++---
 src/functionObjects/forces/forces/forces.H            |  3 +++
 18 files changed, 77 insertions(+), 18 deletions(-)

diff --git a/src/functionObjects/field/Curle/Curle.C b/src/functionObjects/field/Curle/Curle.C
index 6b53be07234..71fe3476e93 100644
--- a/src/functionObjects/field/Curle/Curle.C
+++ b/src/functionObjects/field/Curle/Curle.C
@@ -67,7 +67,8 @@ Foam::functionObjects::Curle::Curle
     c0_(0),
     rawFilePtrs_(),
     inputSurface_(),
-    surfaceWriterPtr_(nullptr)
+    surfaceWriterPtr_(nullptr),
+    warnOnNoPatch_(true)
 {
     read(dict);
 }
@@ -85,8 +86,10 @@ bool Foam::functionObjects::Curle::read(const dictionary& dict)
     }
 
     dict.readIfPresent("p", pName_);
+    dict.readIfPresent("warnOnNoPatch", warnOnNoPatch_);
 
-    patchIDs_ = pbm.patchSet(dict.get<wordRes>("patches")).sortedToc();
+    patchIDs_ =
+        pbm.patchSet(dict.get<wordRes>("patches"), warnOnNoPatch_).sortedToc();
 
     if (patchIDs_.empty())
     {
diff --git a/src/functionObjects/field/Curle/Curle.H b/src/functionObjects/field/Curle/Curle.H
index 06beac04f67..07cf5525ee3 100644
--- a/src/functionObjects/field/Curle/Curle.H
+++ b/src/functionObjects/field/Curle/Curle.H
@@ -181,6 +181,9 @@ class Curle
         //- Ouput surface when sampling a surface
         autoPtr<surfaceWriter> surfaceWriterPtr_;
 
+        //- Flag to suppress warnings for missing patches
+        bool warnOnNoPatch_;
+
 
 public:
 
diff --git a/src/functionObjects/field/binField/binModels/binModel/binModel.C b/src/functionObjects/field/binField/binModels/binModel/binModel.C
index b8fd5cbe655..09b8d9e61e5 100644
--- a/src/functionObjects/field/binField/binModels/binModel/binModel.C
+++ b/src/functionObjects/field/binField/binModels/binModel/binModel.C
@@ -122,6 +122,7 @@ Foam::binModel::binModel
     mesh_(mesh),
     decomposePatchValues_(false),
     cumulative_(false),
+    warnOnNoPatch_(true),
     coordSysPtr_(nullptr),
     nBin_(1)
 {}
@@ -138,8 +139,11 @@ bool Foam::binModel::read(const dictionary& dict)
         return false;
     }
 
+    dict.readIfPresent("warnOnNoPatch", warnOnNoPatch_);
+
     // Can also use pbm.indices(), but no warnings...
-    patchIDs_ = pbm.patchSet(dict.get<wordRes>("patches")).sortedToc();
+    patchIDs_ =
+        pbm.patchSet(dict.get<wordRes>("patches"), warnOnNoPatch_).sortedToc();
     fieldNames_ = dict.get<wordHashSet>("fields").sortedToc();
 
     wordRes zoneNames;
diff --git a/src/functionObjects/field/binField/binModels/binModel/binModel.H b/src/functionObjects/field/binField/binModels/binModel/binModel.H
index 1531507e677..26a2c595c3b 100644
--- a/src/functionObjects/field/binField/binModels/binModel/binModel.H
+++ b/src/functionObjects/field/binField/binModels/binModel/binModel.H
@@ -77,6 +77,9 @@ protected:
         //- increasing distance in binning direction
         bool cumulative_;
 
+        //- Flag to suppress warnings for missing patches
+        bool warnOnNoPatch_;
+
         //- Local coordinate system of bins
         autoPtr<coordinateSystem> coordSysPtr_;
 
diff --git a/src/functionObjects/field/columnAverage/columnAverage.C b/src/functionObjects/field/columnAverage/columnAverage.C
index c9ea8f81ac4..6cab72ca732 100644
--- a/src/functionObjects/field/columnAverage/columnAverage.C
+++ b/src/functionObjects/field/columnAverage/columnAverage.C
@@ -128,7 +128,8 @@ Foam::functionObjects::columnAverage::columnAverage
 :
     fvMeshFunctionObject(name, runTime, dict),
     patchIDs_(),
-    fieldSet_(mesh_)
+    fieldSet_(mesh_),
+    warnOnNoPatch_(true)
 {
     read(dict);
 }
@@ -140,10 +141,13 @@ bool Foam::functionObjects::columnAverage::read(const dictionary& dict)
 {
     fvMeshFunctionObject::read(dict);
 
+    dict.readIfPresent("warnOnNoPatch", warnOnNoPatch_);
+
     patchIDs_ =
         mesh_.boundaryMesh().patchSet
         (
-            dict.get<wordRes>("patches")
+            dict.get<wordRes>("patches"),
+            warnOnNoPatch_
         ).sortedToc();
 
     fieldSet_.read(dict);
diff --git a/src/functionObjects/field/columnAverage/columnAverage.H b/src/functionObjects/field/columnAverage/columnAverage.H
index 0a5352954fe..f91d25c04e8 100644
--- a/src/functionObjects/field/columnAverage/columnAverage.H
+++ b/src/functionObjects/field/columnAverage/columnAverage.H
@@ -132,6 +132,9 @@ class columnAverage
         mutable autoPtr<globalIndex> globalPoints_;
         mutable autoPtr<meshStructure> meshStructurePtr_;
 
+        //- Flag to suppress warnings for missing patches
+        bool warnOnNoPatch_;
+
 
     // Private Member Functions
 
diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.C b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.C
index 125fccea7cf..0092f65f4a0 100644
--- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.C
+++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.C
@@ -51,7 +51,8 @@ Foam::heatTransferCoeffModel::heatTransferCoeffModel
 :
     mesh_(mesh),
     TName_(TName),
-    qrName_("qr")
+    qrName_("qr"),
+    warnOnNoPatch_(true)
 {}
 
 
@@ -150,8 +151,10 @@ bool Foam::heatTransferCoeffModel::read(const dictionary& dict)
     const polyBoundaryMesh& pbm = mesh_.boundaryMesh();
 
     dict.readIfPresent("qr", qrName_);
+    dict.readIfPresent("warnOnNoPatch", warnOnNoPatch_);
 
-    patchIDs_ = pbm.patchSet(dict.get<wordRes>("patches")).sortedToc();
+    patchIDs_ =
+        pbm.patchSet(dict.get<wordRes>("patches"), warnOnNoPatch_).sortedToc();
 
     return true;
 }
diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.H b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.H
index 9d44e94dbb3..6732730b576 100644
--- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.H
+++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeffModels/heatTransferCoeffModel/heatTransferCoeffModel.H
@@ -76,6 +76,9 @@ protected:
         //- Name of radiative heat flux field
         word qrName_;
 
+        //- Flag to suppress warnings for missing patches
+        bool warnOnNoPatch_;
+
 
     // Protected Member Functions
 
diff --git a/src/functionObjects/field/nearWallFields/nearWallFields.C b/src/functionObjects/field/nearWallFields/nearWallFields.C
index efd3f273ecd..7e6b17996ee 100644
--- a/src/functionObjects/field/nearWallFields/nearWallFields.C
+++ b/src/functionObjects/field/nearWallFields/nearWallFields.C
@@ -245,7 +245,8 @@ Foam::functionObjects::nearWallFields::nearWallFields
 )
 :
     fvMeshFunctionObject(name, runTime, dict),
-    fieldSet_()
+    fieldSet_(),
+    warnOnNoPatch_(true)
 {
     read(dict);
 }
@@ -261,9 +262,11 @@ bool Foam::functionObjects::nearWallFields::read(const dictionary& dict)
 
     dict.readEntry("fields", fieldSet_);
     dict.readEntry("distance", distance_);
+    dict.readIfPresent("warnOnNoPatch", warnOnNoPatch_);
 
     // Can also use pbm.indices(), but no warnings...
-    patchIDs_ = pbm.patchSet(dict.get<wordRes>("patches")).sortedToc();
+    patchIDs_ =
+        pbm.patchSet(dict.get<wordRes>("patches"), warnOnNoPatch_).sortedToc();
 
 
     // Clear out any previously loaded fields
diff --git a/src/functionObjects/field/nearWallFields/nearWallFields.H b/src/functionObjects/field/nearWallFields/nearWallFields.H
index 587f601d1b3..1483ec30e73 100644
--- a/src/functionObjects/field/nearWallFields/nearWallFields.H
+++ b/src/functionObjects/field/nearWallFields/nearWallFields.H
@@ -134,6 +134,9 @@ protected:
             //- From resulting back to original field
             HashTable<word> reverseFieldMap_;
 
+            //- Flag to suppress warnings for missing patches
+            bool warnOnNoPatch_;
+
 
         // Calculated addressing
 
diff --git a/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C b/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C
index c5e86068c65..5d08705ce1e 100644
--- a/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C
+++ b/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C
@@ -206,7 +206,10 @@ Foam::functionObjects::regionSizeDistribution::findPatchRegions
 
     labelHashSet patchRegions(2*regions.nRegions());
 
-    labelHashSet patchSet(mesh_.boundaryMesh().patchSet(patchNames_));
+    labelHashSet patchSet
+    (
+        mesh_.boundaryMesh().patchSet(patchNames_, warnOnNoPatch_)
+    );
 
     for (const label patchi : patchSet)
     {
@@ -369,7 +372,8 @@ Foam::functionObjects::regionSizeDistribution::regionSizeDistribution
     writeFile(obr_, name),
     alphaName_(dict.get<word>("field")),
     patchNames_(dict.get<wordRes>("patches")),
-    isoPlanes_(dict.getOrDefault("isoPlanes", false))
+    isoPlanes_(dict.getOrDefault("isoPlanes", false)),
+    warnOnNoPatch_(true)
 {
     read(dict);
 }
@@ -416,6 +420,8 @@ bool Foam::functionObjects::regionSizeDistribution::read(const dictionary& dict)
          direction_.normalise();
     }
 
+    dict.readIfPresent("warnOnNoPatch", warnOnNoPatch_);
+
     return true;
 }
 
diff --git a/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H b/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H
index b9cd7f96deb..72b54c9415c 100644
--- a/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H
+++ b/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H
@@ -249,6 +249,9 @@ class regionSizeDistribution
             //- Switch to enable iso-planes sampling
             bool isoPlanes_;
 
+        //- Flag to suppress warnings for missing patches
+        bool warnOnNoPatch_;
+
 
     // Private Member Functions
 
diff --git a/src/functionObjects/field/wallHeatFlux/wallHeatFlux.C b/src/functionObjects/field/wallHeatFlux/wallHeatFlux.C
index 70618231d07..5cc9e9eeb65 100644
--- a/src/functionObjects/field/wallHeatFlux/wallHeatFlux.C
+++ b/src/functionObjects/field/wallHeatFlux/wallHeatFlux.C
@@ -106,7 +106,8 @@ Foam::functionObjects::wallHeatFlux::wallHeatFlux
 :
     fvMeshFunctionObject(name, runTime, dict),
     writeFile(obr_, name, typeName, dict),
-    qrName_("qr")
+    qrName_("qr"),
+    warnOnNoPatch_(true)
 {
     read(dict);
 
@@ -144,12 +145,13 @@ bool Foam::functionObjects::wallHeatFlux::read(const dictionary& dict)
     writeFile::read(dict);
 
     dict.readIfPresent("qr", qrName_);
+    dict.readIfPresent("warnOnNoPatch", warnOnNoPatch_);
 
     wordRes patchNames;
     labelHashSet patchSet;
     if (dict.readIfPresent("patches", patchNames) && !patchNames.empty())
     {
-        patchSet = pbm.patchSet(patchNames);
+        patchSet = pbm.patchSet(patchNames, warnOnNoPatch_);
     }
 
     labelHashSet allWalls(pbm.findPatchIDs<wallPolyPatch>());
diff --git a/src/functionObjects/field/wallHeatFlux/wallHeatFlux.H b/src/functionObjects/field/wallHeatFlux/wallHeatFlux.H
index 7938d13d94c..387b6f22311 100644
--- a/src/functionObjects/field/wallHeatFlux/wallHeatFlux.H
+++ b/src/functionObjects/field/wallHeatFlux/wallHeatFlux.H
@@ -123,6 +123,9 @@ protected:
         //- Name of radiative heat flux name
         word qrName_;
 
+        //- Flag to suppress warnings for missing patches
+        bool warnOnNoPatch_;
+
 
     // Protected Member Functions
 
diff --git a/src/functionObjects/field/wallShearStress/wallShearStress.C b/src/functionObjects/field/wallShearStress/wallShearStress.C
index 1a7325e03f9..679de4f23f5 100644
--- a/src/functionObjects/field/wallShearStress/wallShearStress.C
+++ b/src/functionObjects/field/wallShearStress/wallShearStress.C
@@ -90,7 +90,8 @@ Foam::functionObjects::wallShearStress::wallShearStress
 :
     fvMeshFunctionObject(name, runTime, dict),
     writeFile(mesh_, name, typeName, dict),
-    writeFields_(true)  // May change in the future
+    writeFields_(true),  // May change in the future
+    warnOnNoPatch_(true)
 {
     read(dict);
 
@@ -127,6 +128,7 @@ bool Foam::functionObjects::wallShearStress::read(const dictionary& dict)
 
     writeFields_ = true;   // May change in the future
     dict.readIfPresent("writeFields", writeFields_);
+    dict.readIfPresent("warnOnNoPatch", warnOnNoPatch_);
 
     const polyBoundaryMesh& pbm = mesh_.boundaryMesh();
 
@@ -134,7 +136,7 @@ bool Foam::functionObjects::wallShearStress::read(const dictionary& dict)
     labelHashSet patchSet;
     if (dict.readIfPresent("patches", patchNames) && !patchNames.empty())
     {
-        patchSet = pbm.patchSet(patchNames);
+        patchSet = pbm.patchSet(patchNames, warnOnNoPatch_);
     }
 
     labelHashSet allWalls(pbm.findPatchIDs<wallPolyPatch>());
diff --git a/src/functionObjects/field/wallShearStress/wallShearStress.H b/src/functionObjects/field/wallShearStress/wallShearStress.H
index 4d1c95d6144..c62d46a41fc 100644
--- a/src/functionObjects/field/wallShearStress/wallShearStress.H
+++ b/src/functionObjects/field/wallShearStress/wallShearStress.H
@@ -133,6 +133,9 @@ class wallShearStress
         //- Write the shear stress field ?
         bool writeFields_;
 
+        //- Flag to suppress warnings for missing patches
+        bool warnOnNoPatch_;
+
 
 protected:
 
diff --git a/src/functionObjects/forces/forces/forces.C b/src/functionObjects/forces/forces/forces.C
index fd7ab2f8760..b1e05db39cc 100644
--- a/src/functionObjects/forces/forces/forces.C
+++ b/src/functionObjects/forces/forces/forces.C
@@ -550,7 +550,8 @@ Foam::functionObjects::forces::forces
     directForceDensity_(false),
     porosity_(false),
     writeFields_(false),
-    initialised_(false)
+    initialised_(false),
+    warnOnNoPatch_(true)
 {
     if (readFields)
     {
@@ -589,7 +590,8 @@ Foam::functionObjects::forces::forces
     directForceDensity_(false),
     porosity_(false),
     writeFields_(false),
-    initialised_(false)
+    initialised_(false),
+    warnOnNoPatch_(true)
 {
     if (readFields)
     {
@@ -613,10 +615,13 @@ bool Foam::functionObjects::forces::read(const dictionary& dict)
 
     initialised_ = false;
 
+    dict.readIfPresent("warnOnNoPatch", warnOnNoPatch_);
+
     Info<< type() << ' ' << name() << ':' << endl;
 
     // Can also use pbm.indices(), but no warnings...
-    patchIDs_ = pbm.patchSet(dict.get<wordRes>("patches")).sortedToc();
+    patchIDs_ =
+        pbm.patchSet(dict.get<wordRes>("patches"), warnOnNoPatch_).sortedToc();
 
     dict.readIfPresent("directForceDensity", directForceDensity_);
     if (directForceDensity_)
diff --git a/src/functionObjects/forces/forces/forces.H b/src/functionObjects/forces/forces/forces.H
index cd96a754e0d..182734a36c3 100644
--- a/src/functionObjects/forces/forces/forces.H
+++ b/src/functionObjects/forces/forces/forces.H
@@ -264,6 +264,9 @@ protected:
             //- Flag of initialisation (internal)
             bool initialised_;
 
+            //- Flag to suppress warnings for missing patches
+            bool warnOnNoPatch_;
+
 
     // Protected Member Functions
 
-- 
GitLab