From 4c96647af2d7161cdacb8a2bce7d4d0dd5f71ee7 Mon Sep 17 00:00:00 2001
From: Kutalmis Bercin <kutalmis.bercin@esi-group.com>
Date: Tue, 20 Jul 2021 12:22:34 +0100
Subject: [PATCH] BUG: DMD: write snapshot0 at start times (fixes #2122)

---
 .../field/DMD/DMDModels/derived/STDMD/STDMD.C | 25 +++++++++++++------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/src/functionObjects/field/DMD/DMDModels/derived/STDMD/STDMD.C b/src/functionObjects/field/DMD/DMDModels/derived/STDMD/STDMD.C
index ac180feb7ac..bbbdf4e4da8 100644
--- a/src/functionObjects/field/DMD/DMDModels/derived/STDMD/STDMD.C
+++ b/src/functionObjects/field/DMD/DMDModels/derived/STDMD/STDMD.C
@@ -879,17 +879,15 @@ bool Foam::DMDModels::STDMD::initialise(const RMatrix& z)
         // algorithms at the final output computations (K:p. 43)
         {
             const label nSnap = z.m()/2;
+            timeName0_ =
+                mesh_.time().timeName(mesh_.time().startTime().value());
 
             if (nSnap == 0)
             {
                 empty_ = true;
             }
 
-            scalarField snapshot0(nSnap);
-            std::copy(z.cbegin(), z.cbegin() + nSnap, snapshot0.begin());
-            timeName0_ = mesh_.time().timeName();
-
-            IOField<scalar>
+            IOField<scalar> snapshot0
             (
                 IOobject
                 (
@@ -897,10 +895,21 @@ bool Foam::DMDModels::STDMD::initialise(const RMatrix& z)
                     timeName0_,
                     mesh_,
                     IOobject::NO_READ,
-                    IOobject::NO_WRITE
+                    IOobject::NO_WRITE,
+                    false
                 ),
-                snapshot0
-            ).write();
+                nSnap
+            );
+
+            std::copy(z.cbegin(), z.cbegin() + nSnap, snapshot0.begin());
+
+            const IOstreamOption streamOpt
+            (
+                mesh_.time().writeFormat(),
+                mesh_.time().writeCompression()
+            );
+
+            fileHandler().writeObject(snapshot0, streamOpt, true);
         }
 
         Q_ = z/norm;
-- 
GitLab