From ff567dbe71c5ae7686c5fd3e9acc5f8a1954f327 Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@esi-group.com>
Date: Thu, 7 Sep 2023 14:34:30 +0200
Subject: [PATCH] CONFIG: adjust compile-time value of maxThreadFileBufferSize
 to 0

- consistent with etc/controlDict default

STYLE: update banner message for collated
---
 etc/controlDict                               |  2 +-
 .../collatedFileOperation.C                   | 45 ++++++++++++-------
 2 files changed, 31 insertions(+), 16 deletions(-)

diff --git a/etc/controlDict b/etc/controlDict
index fc3d73ae544..f084663716d 100644
--- a/etc/controlDict
+++ b/etc/controlDict
@@ -114,7 +114,7 @@ OptimisationSwitches
     //  (sized with magnitude of value) is large enough to hold all
     //  outstanding writes so will not try to initialise the Pstream with
     //  threading support.
-    //  Default: 1e9
+    //  Default: 0
     maxThreadFileBufferSize 0;
 
     //- masterUncollated: non-blocking buffer size.
diff --git a/src/OpenFOAM/global/fileOperations/collatedFileOperation/collatedFileOperation.C b/src/OpenFOAM/global/fileOperations/collatedFileOperation/collatedFileOperation.C
index 5bfe78a1f4a..bb0b861f955 100644
--- a/src/OpenFOAM/global/fileOperations/collatedFileOperation/collatedFileOperation.C
+++ b/src/OpenFOAM/global/fileOperations/collatedFileOperation/collatedFileOperation.C
@@ -59,7 +59,7 @@ namespace fileOperations
 
     float collatedFileOperation::maxThreadFileBufferSize
     (
-        debug::floatOptimisationSwitch("maxThreadFileBufferSize", 1e9)
+        debug::floatOptimisationSwitch("maxThreadFileBufferSize", 0)
     );
     registerOptSwitch
     (
@@ -90,26 +90,41 @@ void Foam::fileOperations::collatedFileOperation::printBanner
     DetailInfo
         << "I/O    : " << this->type();
 
-    if (maxThreadFileBufferSize == 0)
-    {
-        DetailInfo
-            << " [unthreaded] (maxThreadFileBufferSize = 0)." << nl
-            << "         Writing may be slow for large file sizes."
-            << endl;
-    }
-    else
+    if (mag(maxThreadFileBufferSize) > 1)
     {
+        // FUTURE: deprecate or remove threading?
         DetailInfo
             << " [threaded] (maxThreadFileBufferSize = "
             << maxThreadFileBufferSize << ")." << nl
             << "         Requires buffer large enough to collect all data"
-               " or thread support" << nl
-            << "         enabled in MPI. If MPI thread support cannot be"
-               " enabled, deactivate" << nl
-            << "         threading by setting maxThreadFileBufferSize"
-               " to 0 in" << nl
+               " or MPI thread support." << nl
+            << "         To avoid MPI threading [slow], set"
+               " (maxThreadFileBufferSize = 0) in" << nl
             << "         OpenFOAM etc/controlDict" << endl;
     }
+    else
+    {
+        DetailInfo
+            << " [unthreaded] (maxThreadFileBufferSize = 0)." << nl;
+
+        if (mag(maxMasterFileBufferSize) < 1)
+        {
+            DetailInfo
+                << "         With scheduled transfer" << nl;
+        }
+        else if (maxMasterFileBufferSize >= 1)
+        {
+            DetailInfo
+                << "         With non-blocking transfer,"
+                   " buffer-size = " << maxMasterFileBufferSize << nl;
+        }
+        else
+        {
+            DetailInfo
+                << "         With non-blocking transfer,"
+                   " minimal buffer size" << nl;
+        }
+    }
 
     if (withRanks)
     {
@@ -455,7 +470,7 @@ bool Foam::fileOperations::collatedFileOperation::writeObject
         {
             // Re-check static maxThreadFileBufferSize variable to see
             // if needs to use threading
-            const bool useThread = (maxThreadFileBufferSize != 0);
+            const bool useThread = (mag(maxThreadFileBufferSize) > 1);
 
             if (debug)
             {
-- 
GitLab