[postprocessor] correct bug of Nonizing pp.parts when reloading

This commit is contained in:
Noe Brucy
2021-05-21 10:51:05 +02:00
parent c36490e399
commit 9bb39a984f
+43 -44
View File
@@ -394,51 +394,50 @@ class PostProcessor(HDF5Container):
self.def_rules() 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. Load data from the source file in the memory.
(Long and memory heavy) (Long and memory heavy)
""" """
if not loaded: if os.path.exists(filename):
if os.path.exists(filename): hdf5 = tables.open_file(filename, mode="r")
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: try:
node = hdf5.get_node("/data") for key in data:
data = {} hdf5.create_array(
for key in node._v_children: "/data", key, data[key], "", createparents=True
data[key] = hdf5.get_node("/data/" + key).read() )
finally: finally:
hdf5.close() hdf5.close()
else: return data
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
def load_parts(self): def load_parts(self):
self.parts = self.load_data( if not self.parts_loaded:
self._part, self.parts = self.load_data(
self.parts_loaded, self._part,
self.parts_filename, self.parts_filename,
self.pp_params.process.save_parts, self.pp_params.process.save_parts,
) )
self.parts_loaded = True self.parts_loaded = True
def unload_parts(self): def unload_parts(self):
""" """
@@ -455,14 +454,14 @@ class PostProcessor(HDF5Container):
Cells will be accessible trough self.cells Cells will be accessible trough self.cells
(Long and memory heavy) (Long and memory heavy)
""" """
cells_src = CellsToPoints(self._amr) if not self.cells_loaded:
self.cells = self.load_data( cells_src = CellsToPoints(self._amr)
cells_src, self.cells = self.load_data(
self.cells_loaded, cells_src,
self.cells_filename, self.cells_filename,
self.pp_params.process.save_cells, self.pp_params.process.save_cells,
) )
self.parts_loaded = True self.cells_loaded = True
def unload_cells(self): def unload_cells(self):
""" """