From c4ba72623cfd9ed15f89216befbcb13271b681fb Mon Sep 17 00:00:00 2001
From: Thibaut Lunet <thibaut.lunet@tuhh.de>
Date: Sat, 17 May 2025 10:22:28 +0200
Subject: [PATCH] TL: mini fix for edge cases (#551)

* TL: mini fix for edge cases

* TL: better implementation

* TL: forgot that
---
 pySDC/helpers/fieldsIO.py | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/pySDC/helpers/fieldsIO.py b/pySDC/helpers/fieldsIO.py
index 58e00d3c..43e4fdb5 100644
--- a/pySDC/helpers/fieldsIO.py
+++ b/pySDC/helpers/fieldsIO.py
@@ -417,8 +417,6 @@ class Rectilinear(Scalar):
         coords = self.setupCoords(*coords)
         self.header = {"nVar": int(nVar), "coords": coords}
         self.nItems = nVar * self.nDoF
-        if self.MPI_ON:
-            self.MPI_SETUP()
 
     @property
     def hInfos(self):
@@ -440,8 +438,6 @@ class Rectilinear(Scalar):
         gridSizes = np.fromfile(f, dtype=np.int32, count=dim)
         coords = [np.fromfile(f, dtype=np.float64, count=n) for n in gridSizes]
         self.setHeader(nVar, coords)
-        if self.MPI_ON:
-            self.MPI_SETUP()
 
     def reshape(self, fields: np.ndarray):
         """Reshape the fields to a N-d array (inplace operation)"""
@@ -539,7 +535,7 @@ class Rectilinear(Scalar):
             return True
         return self.comm.Get_rank() == 0
 
-    def MPI_SETUP(self):
+    def MPI_SETUP_FILETYPE(self):
         """Setup subarray masks for each processes"""
         self.mpiType = MPI_DTYPE(self.dtype)
         self.mpiFileType = self.mpiType.Create_subarray(
@@ -556,6 +552,8 @@ class Rectilinear(Scalar):
             "a": MPI.MODE_WRONLY | MPI.MODE_APPEND,
         }[mode]
         self.mpiFile = MPI.File.Open(self.comm, self.fileName, amode)
+        if self.mpiType is None:
+            self.MPI_SETUP_FILETYPE()
 
     def MPI_WRITE(self, data):
         """Write data (np.ndarray) in the binary file in MPI mode, at the current file cursor position."""
-- 
GitLab