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