From a78c0879a5516f29d84f65ed6a8c38756fd943b7 Mon Sep 17 00:00:00 2001
From: Martin Bauer <martin.bauer@fau.de>
Date: Thu, 15 Feb 2018 16:48:18 +0100
Subject: [PATCH] Datahandling VTK fix

---
 datahandling/parallel_datahandling.py |  5 ++++-
 datahandling/serial_datahandling.py   | 18 +++++++++++-------
 2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/datahandling/parallel_datahandling.py b/datahandling/parallel_datahandling.py
index 2113ed6b4..c0ba80cd6 100644
--- a/datahandling/parallel_datahandling.py
+++ b/datahandling/parallel_datahandling.py
@@ -6,8 +6,10 @@ from pystencils.utils import DotDict
 import waLBerla as wlb
 import warnings
 
+
 class ParallelDataHandling(DataHandling):
     GPU_DATA_PREFIX = "gpu_"
+    VTK_COUNTER = 0
 
     def __init__(self, blocks, defaultGhostLayers=1, defaultLayout='SoA', dim=3):
         """
@@ -294,7 +296,8 @@ class ParallelDataHandling(DataHandling):
             ghostLayers = 0
         if ghostLayers is True:
             ghostLayers = min(self.ghostLayersOfField(n) for n in dataNames)
-
+        fileName = "%s_%02d" % (fileName, ParallelDataHandling.VTK_COUNTER)
+        ParallelDataHandling.VTK_COUNTER += 1
         output = wlb.vtk.makeOutput(self.blocks, fileName, ghostLayers=ghostLayers)
         for n in dataNames:
             output.addCellDataWriter(wlb.field.createVTKWriter(self.blocks, n))
diff --git a/datahandling/serial_datahandling.py b/datahandling/serial_datahandling.py
index 85970d3ad..e0ce53770 100644
--- a/datahandling/serial_datahandling.py
+++ b/datahandling/serial_datahandling.py
@@ -304,17 +304,21 @@ class SerialDataHandling(DataHandling):
             for name in dataNames:
                 field = self._getFieldWithGivenNumberOfGhostLayers(name, ghostLayers)
                 if self.dim == 2:
-                    field = field[:, :, np.newaxis]
+                    cellData[name] = field[:, :, np.newaxis]
                 if len(field.shape) == 3:
-                    field = np.ascontiguousarray(field)
+                    cellData[name] = np.ascontiguousarray(field)
                 elif len(field.shape) == 4:
-                    field = [np.ascontiguousarray(field[..., i]) for i in range(field.shape[-1])]
-                    if len(field) == 2:
-                        field.append(np.zeros_like(field[0]))
-                    field = tuple(field)
+                    fSize = field.shape[-1]
+                    if fSize == self.dim:
+                        field = [np.ascontiguousarray(field[..., i]) for i in range(fSize)]
+                        if len(field) == 2:
+                            field.append(np.zeros_like(field[0]))
+                        cellData[name] = tuple(field)
+                    else:
+                        for i in range(fSize):
+                            cellData["%s[%d]" % (name, i)] = np.ascontiguousarray(field[...,i])
                 else:
                     assert False
-                cellData[name] = field
             imageToVTK(fullFileName, cellData=cellData)
         return writer
 
-- 
GitLab