diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2a8c2abe6f7320f947c07921e960a57ccc618186..360a0d34799c0bbd34e969e212b9b6dac9021258 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -651,7 +651,10 @@ if(VERBOSE_MODE)
   message(STATUS " Project uses Scales : ${WITH_SCALES}")
   message(STATUS " Project uses FFTW : ${WITH_FFTW}")
   message(STATUS " Project uses GPU : ${WITH_GPU}")
+<<<<<<< HEAD
   message(STATUS " Project uses parallel hdf5 interface : ${H5PY_PARALLEL_COMPRESSION_ENABLED}")
+=======
+>>>>>>> c9b88f65566d41430ec337958469ac7b37608012
   message(STATUS " ${PROJECT_NAME} profile mode : ${PROFILE}")
   message(STATUS " ${PROJECT_NAME} debug   mode : ${DEBUG}")
   message(STATUS " Enable -OO run? : ${OPTIM}")
diff --git a/ci/docker_images/ubuntu/bionic/Dockerfile b/ci/docker_images/ubuntu/bionic/Dockerfile
index de940fd5fbfe05dbfc8ed488601d3c8df4f66d0a..872147e972dbc3e5ca3e3f3cbe62baab1cc1442a 100644
--- a/ci/docker_images/ubuntu/bionic/Dockerfile
+++ b/ci/docker_images/ubuntu/bionic/Dockerfile
@@ -89,7 +89,7 @@ RUN pip install --upgrade numba
 # RUN cd /tmp && git clone https://github.com/sphinx-contrib/doxylink.git && cd doxylink/sphinxcontrib/doxylink \
 #  && mv doxylink.py doxylink.py3 && strip-hints doxylink.py3 > doxylink.py && rm doxylink.py3 \
 #  && mv parsing.py parsing.py3 && strip-hints parsing.py3 > parsing.py && rm parsing.py3 \
-#  && python setup.py install
+#  && cd ../.. && python setup.py install
 
 
 # scitools (python-scitools does not exist on ubuntu:bionic)
diff --git a/hysop/__init__.py.in b/hysop/__init__.py.in
index ef29096df566f849a87b1898392d60ebed0a4346..26d8c7a9ec81a48aa7573e2d19e4766d865448ee 100644
--- a/hysop/__init__.py.in
+++ b/hysop/__init__.py.in
@@ -33,7 +33,10 @@ __GPU_ENABLED__    = "@WITH_GPU@" is "ON"
 __FFTW_ENABLED__   = "@WITH_FFTW@" is "ON"
 __SCALES_ENABLED__ = "@WITH_SCALES@" is "ON"
 __OPTIMIZE__       = not __debug__
+<<<<<<< HEAD
 __H5PY_PARALLEL_COMPRESSION_ENABLED__ = ("@H5PY_PARALLEL_COMPRESSION_ENABLED@" is "ON")
+=======
+>>>>>>> c9b88f65566d41430ec337958469ac7b37608012
 
 __VERBOSE__        = get_env('VERBOSE', ("@VERBOSE@" is "ON"))
 __DEBUG__          = get_env('DEBUG',   ("@DEBUG@" is "ON"))
diff --git a/hysop/operator/hdf_io.py b/hysop/operator/hdf_io.py
index 65238694793e294988ba6ac5635060948e3b7200..443d3faf1308899b2a0b862af72385bac49c24fd 100755
--- a/hysop/operator/hdf_io.py
+++ b/hysop/operator/hdf_io.py
@@ -113,8 +113,6 @@ class HDF_IO(ComputationalGraphOperator):
         self.topology = None
         self._local_compute_slices = None
         self._global_grid_resolution = None
-        self._local_grid_resolution = None
-        self._all_local_grid_resolution = None
         self._global_slices = None
         # Dictionnary of discrete fields. Key = name in hdf file,
         # Value = discrete field
@@ -376,7 +374,6 @@ class HDF_Writer(HDF_IO):
             assert self.use_local_hdf5
             return self.io_params.filename + "_{0:05d}".format(i) + "_rk{rk:03d}.h5"
 
-
     @op_apply
     def apply(self, simulation=None, **kwds):
         if (simulation is None):
@@ -408,12 +405,14 @@ class HDF_Writer(HDF_IO):
         write_step = tuple(step)
 
         ds_names = self.dataset.keys()
+        
         joinrkfiles = None
         if self.use_local_hdf5 and (self.topology.cart_size > 1):
             joinrkfiles = range(self.topology.cart_size)
+
         grid_attributes = XMF.prepare_grid_attributes(
                             ds_names,
-                            resolution, origin, step, joinrkfiles=joinrkfiles)
+                            resolution, origin, step)
         self.grid_attributes_template = grid_attributes
 
 
@@ -445,7 +444,7 @@ class HDF_Writer(HDF_IO):
                     filenames = dict(('filename'+str(r), self._get_filename(i).format(rk=r).split('/')[-1]) for r in range(self.topology.cart_size))
                     filenames.update(('resolution'+str(r), XMF._list_format(self._all_local_grid_resolution[r])) for r in range(self.topology.cart_size))
                 grid_attrs = self.grid_attributes_template.format(
-                                    niteration=i, time=t, **filenames)
+                                    niteration=i, time=t, filename=filename)
                 f.seek(lastp)
                 f.write(grid_attrs)
                 self._last_xmf_pos = f.tell()
@@ -456,13 +455,7 @@ class HDF_Writer(HDF_IO):
             self._xdmf_data_files = []
 
     def _step_HDF5(self, simu):
-        """Write an h5 file with data on each mpi process.
-
-        If parallel interface of HDF5 is not enabled, each rank is
-        writing its own h5 file. All files are concatenated in the xmf
-        part with a 'JOIN' function.  If parallel interface enabled,
-        only one h5 file is written by all ranks.
-        """
+        """Write an h5 file with data on each mpi process."""
         # Remarks:
         # - force np.float64, ParaView seems unable to read float32
         # - writing compressed hdf5 files (gzip compression seems the best)
diff --git a/hysop/tools/io_utils.py b/hysop/tools/io_utils.py
index b66ec46c96e3b883cf291444fd886da9f449911d..3de3fc9a4c6f87e88833b87544ba04a05afc525e 100755
--- a/hysop/tools/io_utils.py
+++ b/hysop/tools/io_utils.py
@@ -234,7 +234,7 @@ class IOParams(namedtuple("IOParams", ['filename', 'filepath',
 
         IO.check_dir(filename)
         return super(IOParams, cls).__new__(cls, filename, filepath,
-                                            frequency, fileformat, 
+                                            frequency, fileformat,
                                             io_leader, visu_leader,
                                             kwds)
 
@@ -387,7 +387,7 @@ class XMF(object):
 
     @staticmethod
     def prepare_grid_attributes(dataset_names,
-                                resolution, origin, step, joinrkfiles=None):
+                                resolution, origin, step):
         """
         Prepare XDMF header as a string.
 
@@ -398,7 +398,6 @@ class XMF(object):
         resolution: 3d tuple
         origin: 3d tuple
         step: 3d tuple
-        joinrkfiles : (optional)
 
         Returns:
         --------
@@ -406,10 +405,7 @@ class XMF(object):
             the xml-like header formattable with the following keywords:
                 niteration : iteration number
                 time: time in seconds
-                filename: target file name, in sequential or with parallel hdf5  support
-                filename0, ... filenameN : target file names for each rank 0 to N, in parallel without HDF5 parallel support
-                resolution0, ... resolutionN : local resolutions for each rank 0 to N, in parallel without HDF5 parallel support
-
+                filename: target file name
         """
         # The header (xml-like), saved in a string.
         # always use a 3D mesh because paraview does not like 2D meshes (uses axe (Y,Z) instead of (X,Y)).
@@ -437,29 +433,13 @@ class XMF(object):
             xml_grid += "    <Attribute Name=\""
             xml_grid += name + "\""
             xml_grid += " AttributeType=\"Scalar\" Center=\"Node\">\n"
-            if joinrkfiles is None:
-                xml_grid += "     <DataItem Dimensions=\""
-                xml_grid += XMF._list_format(resolution) + " \""
-                xml_grid += " NumberType=\"Float\" Precision=\"8\" Format=\"HDF\""
-                xml_grid += " Compression=\"Raw\">\n"  #
-                xml_grid += "      {filename}"
-                xml_grid += ":/" + name
-                xml_grid += "\n     </DataItem>\n"
-            else:
-                xml_grid += "     <DataItem Dimensions=\""
-                xml_grid += XMF._list_format(resolution) + " \""
-                xml_grid += " ItemType=\"Function\" Function=\"JOIN("
-                xml_grid += " ; ".join("$"+str(i) for i in joinrkfiles)
-                xml_grid += ")\">\n"
-                for i in joinrkfiles:
-                    xml_grid += "      <DataItem Dimensions=\""
-                    xml_grid += "{resolution"+str(i)+"}" + " \""
-                    xml_grid += " NumberType=\"Float\" Precision=\"8\" Format=\"HDF\""
-                    xml_grid += " Compression=\"Raw\">\n"  #
-                    xml_grid += "       {filename"+str(i)+"}"
-                    xml_grid += ":/" + name
-                    xml_grid += "\n      </DataItem>\n"
-                xml_grid += "     </DataItem>\n"
+            xml_grid += "     <DataItem Dimensions=\""
+            xml_grid += XMF._list_format(resolution) + " \""
+            xml_grid += " NumberType=\"Float\" Precision=\"8\" Format=\"HDF\""
+            xml_grid += " Compression=\"Raw\">\n"  #
+            xml_grid += "      {filename}"
+            xml_grid += ":/" + name
+            xml_grid += "\n     </DataItem>\n"
             xml_grid += "    </Attribute>\n"
         xml_grid += "   </Grid>\n"
         return xml_grid
diff --git a/setup.py.in b/setup.py.in
old mode 100644
new mode 100755
index 9b1630a437e2fae13c66843582c1fba1c122926c..370ff9bda8e706dcb8f81de7a29a36f520366a14
--- a/setup.py.in
+++ b/setup.py.in
@@ -57,7 +57,7 @@ def parseCMakeDefines(var):
     defines = parseCMakeVar(var)
     if len(defines)==0:
         return None
-    
+
     # regex to match compiler defines like -DMACRO_NAME or
     # -DMACRO_NAME = MACRO_VALUE
     p = re.compile('\s*(?:-D)?\s*(\w+)(?:\s*=\s*(\w+))?\s*')
@@ -126,7 +126,7 @@ def create_fortran_extension(name, pyf_file=None, src_dirs=None, sources=None,
     for sdir in src_dirs:
         sources += glob.glob(os.path.join(sdir, '*.f95'))
         sources += glob.glob(os.path.join(sdir, '*.f90'))
-    
+
     # Reorder source list with fortran modules
     # dependencies. It seems that this is not taken into
     # account in f2py or distutils.
@@ -147,6 +147,7 @@ def create_fortran_extension(name, pyf_file=None, src_dirs=None, sources=None,
 
     # --- set compilation flags ---
     fortran_flags = ['@Fortran_FLAGS@']
+    fortran_flags = list(set([_ for _ in fortran_flags[0].split(' ') if _ != '']))
 
     # we trust cmake for external libraries and
     # add them to linker, without using libraries option
@@ -308,7 +309,7 @@ if enable_fortran is "ON":
     num_dirs = []
     for sd in subdirs:
         num_dirs.append(os.path.join(fortran_root, sd))
-   
+
     hysop_libdir = [ld.strip() for ld in hysop_libdir]
     # hysop_libdir = ' '.join([ '-L{}'.format(ld) if ld[1]!='L' else hysop_libdir])
     num_dirs.append('@GENERATED_FORTRAN_FILES_DIR@')