diff --git a/postprocessor.py b/postprocessor.py index ed0c6d0..adcb4d7 100644 --- a/postprocessor.py +++ b/postprocessor.py @@ -394,51 +394,50 @@ class PostProcessor(HDF5Container): self.def_rules() - def load_data(self, points_src, loaded, filename, save): + def load_data(self, points_src, filename, save): """ Load data from the source file in the memory. (Long and memory heavy) """ - if not loaded: - if os.path.exists(filename): - hdf5 = tables.open_file(filename, mode="r") + if os.path.exists(filename): + hdf5 = tables.open_file(filename, mode="r") + try: + node = hdf5.get_node("/data") + data = {} + for key in node._v_children: + data[key] = hdf5.get_node("/data/" + key).read() + finally: + hdf5.close() + else: + data_pymses = points_src.flatten() + data = {} + for key in data_pymses.fields: + data[key] = data_pymses[key] + try: + data["dx"] = data_pymses.get_sizes() + except AttributeError: + pass + data["pos"] = data_pymses.points + + if save: + hdf5 = tables.open_file(filename, mode="w") try: - node = hdf5.get_node("/data") - data = {} - for key in node._v_children: - data[key] = hdf5.get_node("/data/" + key).read() + for key in data: + hdf5.create_array( + "/data", key, data[key], "", createparents=True + ) finally: hdf5.close() - else: - data_pymses = points_src.flatten() - data = {} - for key in data_pymses.fields: - data[key] = data_pymses[key] - try: - data["dx"] = data_pymses.get_sizes() - except AttributeError: - pass - data["pos"] = data_pymses.points - - if save: - hdf5 = tables.open_file(filename, mode="w") - try: - for key in data: - hdf5.create_array( - "/data", key, data[key], "", createparents=True - ) - finally: - hdf5.close() - return data + return data def load_parts(self): - self.parts = self.load_data( - self._part, - self.parts_loaded, - self.parts_filename, - self.pp_params.process.save_parts, - ) - self.parts_loaded = True + if not self.parts_loaded: + self.parts = self.load_data( + self._part, + self.parts_filename, + self.pp_params.process.save_parts, + ) + self.parts_loaded = True def unload_parts(self): """ @@ -455,14 +454,14 @@ class PostProcessor(HDF5Container): Cells will be accessible trough self.cells (Long and memory heavy) """ - cells_src = CellsToPoints(self._amr) - self.cells = self.load_data( - cells_src, - self.cells_loaded, - self.cells_filename, - self.pp_params.process.save_cells, - ) - self.parts_loaded = True + if not self.cells_loaded: + cells_src = CellsToPoints(self._amr) + self.cells = self.load_data( + cells_src, + self.cells_filename, + self.pp_params.process.save_cells, + ) + self.cells_loaded = True def unload_cells(self): """