From 255e47356c36a7a70422dedaa9e64a603cccc295 Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@esi-group.com>
Date: Wed, 5 Jun 2019 16:17:33 +0200
Subject: [PATCH] BUG: surface writer for surfaceNoise was not Time-aware

- the updated surface writers must be explicitly tagged as being
  Time-aware (useTimeDir) to have them splice Time (in this case freq)
  into the output path.

  The older writers worked in the opposite way. They extracted a time
  value from the naming of the output directory (which was fragile).
---
 .../noiseModels/surfaceNoise/surfaceNoise.C     | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C b/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C
index b047f00db32..5ce195eccd7 100644
--- a/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C
+++ b/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C
@@ -235,7 +235,7 @@ Foam::scalar surfaceNoise::writeSurfaceData
 {
     Info<< "    processing " << title << " for frequency " << freq << endl;
 
-    const fileName outDir(outDirBase/Foam::name(freq));
+    const instant freqInst(freq, Foam::name(freq));
 
     if (Pstream::parRun())
     {
@@ -277,16 +277,20 @@ Foam::scalar surfaceNoise::writeSurfaceData
 
             if (writeSurface)
             {
+                // Time-aware, with time spliced into the output path
+                writerPtr_->beginTime(freqInst);
+
                 writerPtr_->open
                 (
                     surf.points(),
                     surf.surfFaces(),
-                    (outDir / fName),
+                    (outDirBase / fName),
                     false  // serial - already merged
                 );
 
                 writerPtr_->write(title, allData);
 
+                writerPtr_->endTime();
                 writerPtr_->clear();
             }
 
@@ -304,16 +308,20 @@ Foam::scalar surfaceNoise::writeSurfaceData
 
         if (writeSurface)
         {
+            // Time-aware, with time spliced into the output path
+            writerPtr_->beginTime(freqInst);
+
             writerPtr_->open
             (
                 surf.points(),
                 surf.surfFaces(),
-                (outDir / fName),
+                (outDirBase / fName),
                 false  // serial - already merged
             );
 
             writerPtr_->write(title, data);
 
+            writerPtr_->endTime();
             writerPtr_->clear();
         }
 
@@ -442,6 +450,9 @@ bool surfaceNoise::read(const dictionary& dict)
             dict.subOrEmptyDict("writeOptions").subOrEmptyDict(writerType)
         );
 
+        // Use outputDir/TIME/surface-name
+        writerPtr_->useTimeDir() = true;
+
         return true;
     }
 
-- 
GitLab