From 85e246b8f277e944cac57da4b34ad88c6b8befe7 Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@Germany>
Date: Wed, 22 Jun 2016 17:20:15 +0200
Subject: [PATCH] BUG: profiling dictionary could be binary/compressed (fixed
 #157)

BUG: memInfo not activated by -profiling option (fixed #157)
---
 src/OpenFOAM/db/Time/Time.C               | 30 ++++++++++++++++-------
 src/OpenFOAM/global/profiling/profiling.C | 16 ++++++++++++
 src/OpenFOAM/global/profiling/profiling.H |  8 ++++++
 3 files changed, 45 insertions(+), 9 deletions(-)

diff --git a/src/OpenFOAM/db/Time/Time.C b/src/OpenFOAM/db/Time/Time.C
index e2cc8e28b5f..7792e9dca20 100644
--- a/src/OpenFOAM/db/Time/Time.C
+++ b/src/OpenFOAM/db/Time/Time.C
@@ -336,16 +336,28 @@ void Foam::Time::setControls()
 
 void Foam::Time::setMonitoring(bool forceProfiling)
 {
-    // initialize profiling on request
-    // skip if 'active' keyword is explicitly set to false
-    const dictionary* profilingDict =
-    (
-        forceProfiling
-      ? &dictionary::null
-      : controlDict_.subDictPtr("profiling")
-    );
+    const dictionary* profilingDict = controlDict_.subDictPtr("profiling");
 
-    if
+    // initialize profiling on request
+    // otherwise rely on profiling entry within controlDict
+    // and skip if 'active' keyword is explicitly set to false
+    if (forceProfiling)
+    {
+        profiling::initialize
+        (
+            IOobject
+            (
+                "profiling",
+                timeName(),
+                "uniform",
+                *this,
+                IOobject::NO_READ,
+                IOobject::AUTO_WRITE
+            ),
+            *this
+        );
+    }
+    else if
     (
         profilingDict
      && profilingDict->lookupOrDefault<Switch>("active", true)
diff --git a/src/OpenFOAM/global/profiling/profiling.C b/src/OpenFOAM/global/profiling/profiling.C
index f64504f75a6..f1aec918209 100644
--- a/src/OpenFOAM/global/profiling/profiling.C
+++ b/src/OpenFOAM/global/profiling/profiling.C
@@ -438,6 +438,22 @@ bool Foam::profiling::writeData(Ostream& os) const
 }
 
 
+bool Foam::profiling::writeObject
+(
+    IOstream::streamFormat,
+    IOstream::versionNumber ver,
+    IOstream::compressionType
+) const
+{
+    return regIOobject::writeObject
+    (
+        IOstream::ASCII,
+        ver,
+        IOstream::UNCOMPRESSED
+    );
+}
+
+
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 Foam::profiling::Information* Foam::profiling::store(Information *info)
diff --git a/src/OpenFOAM/global/profiling/profiling.H b/src/OpenFOAM/global/profiling/profiling.H
index 409cbff461e..4986a92168b 100644
--- a/src/OpenFOAM/global/profiling/profiling.H
+++ b/src/OpenFOAM/global/profiling/profiling.H
@@ -207,6 +207,14 @@ public:
         //- writeData member function required by regIOobject
         virtual bool writeData(Ostream&) const;
 
+        //- Write as uncompressed ASCII, using given format
+        virtual bool writeObject
+        (
+            IOstream::streamFormat ignoreAlwaysASCII,
+            IOstream::versionNumber ver,
+            IOstream::compressionType ignoreAlwaysUncompressed
+        ) const;
+
 };
 
 
-- 
GitLab