From 3200aecba699c8e59507f03125ec70ace4f71853 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franck=20P=C3=A9rignon?= <franck.perignon@imag.fr> Date: Fri, 7 Mar 2014 15:21:09 +0000 Subject: [PATCH] allow xmf output every time step --- HySoP/hysop/operator/monitors/printer.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/HySoP/hysop/operator/monitors/printer.py b/HySoP/hysop/operator/monitors/printer.py index 28dc1b7c8..17aed421f 100644 --- a/HySoP/hysop/operator/monitors/printer.py +++ b/HySoP/hysop/operator/monitors/printer.py @@ -25,7 +25,7 @@ class Printer(Monitoring): Print field(s) values on a given topo, in HDF5 or VTK format. """ def __init__(self, variables, topo, prefix=None, - frequency=1, formattype=None, task_id=None): + frequency=1, formattype=None, task_id=None, xmfalways=False): """ Create a results printer for given fields, prefix prefix (relative path) and an output frequency. @@ -35,6 +35,8 @@ class Printer(Monitoring): @param prefix output file name. Default is None ==> no output. Full or relative path. @param formattype : output file format, default=vtk. + @param xmfalways : true if xmf output must be done every time + an hdf5 file is created """ Monitoring.__init__(self, variables, topo, task_id=task_id) assert frequency > 0 @@ -86,6 +88,8 @@ class Printer(Monitoring): self._get_filename = lambda i: self.prefix + \ "_{0:05d}".format(i) + '.h5' self.step = self._step_HDF5 + if xmfalways: + self.step = self._step_HDF5_XMF elif self.formattype == DATA: self._get_filename = lambda i: self.prefix + \ "_{0}_{1:05d}.dat".format(self.topo.rank, i) @@ -117,7 +121,7 @@ class Printer(Monitoring): self.step(simulation) self._count += 1 - def finalize(self): + def createXMFFile(self): if self.formattype == HDF5 and self.topo.rank == self.io_rank: # Write the xmf file driving all h5 files. # Writing only one file @@ -139,6 +143,9 @@ class Printer(Monitoring): f.write(" </Domain>\n") f.write("</Xdmf>\n") f.close() + + def finalize(self): + self.createXMFFile() Monitoring.finalize(self) def _build_vtk_dict(self): @@ -217,6 +224,10 @@ class Printer(Monitoring): f.close() + def _step_HDF5_XMF(self, simu): + self._step_HDF5(simu) + self.createXMFFile() + def _step_DATA(self, simu): f = open(self._get_filename(self._count), 'w') shape = self.topo.mesh.resolution -- GitLab