From 500a3ada5cd4f97ddb10432c89755942f7bc04e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franck=20P=C3=A9rignon?= <franck.perignon@imag.fr> Date: Wed, 22 May 2013 16:38:05 +0000 Subject: [PATCH] Misc fix ... --- Examples/testPenalization.py | 9 ++++--- HySoP/hysop/operator/discrete/analytic.py | 3 +++ .../operator/discrete/curlAndDiffusion_fft.py | 6 +---- HySoP/hysop/operator/discrete/multiphase.py | 2 +- .../operator/discrete/particle_advection.py | 2 +- .../operator/discrete/scales_advection.py | 2 +- HySoP/hysop/operator/discrete/stretching.py | 2 +- .../operator/discrete/synchronizeGhosts.py | 2 +- HySoP/hysop/operator/monitors/printer.py | 27 ++++++++----------- 9 files changed, 25 insertions(+), 30 deletions(-) diff --git a/Examples/testPenalization.py b/Examples/testPenalization.py index 7aebc8612..192becbff 100644 --- a/Examples/testPenalization.py +++ b/Examples/testPenalization.py @@ -8,6 +8,7 @@ from parmepy.domain.obstacle.plates import Plates pi = math.pi from parmepy.operator.penalization import Penalization from parmepy.operator.monitors.printer import Printer +from parmepy.problem.simulation import Simulation def vitesse(x, y, z): @@ -67,9 +68,9 @@ penal2.setUp() printer = Printer(fields=[scal2], frequency=1) printer.setUp() print scal.norm() - -penal.apply(dt=0.1) -penal2.apply(dt=0.1) -printer.apply(ite=1) +simulation = Simulation() +penal.apply(simulation) +penal2.apply(simulation) +printer.apply(simulation) print "print ..." print scal.norm() diff --git a/HySoP/hysop/operator/discrete/analytic.py b/HySoP/hysop/operator/discrete/analytic.py index 80fcc6d7a..f8508720f 100644 --- a/HySoP/hysop/operator/discrete/analytic.py +++ b/HySoP/hysop/operator/discrete/analytic.py @@ -35,6 +35,9 @@ class Analytic_D(DiscreteOperator): Initialize is always called with coords + current time. Any extra parameters must be set using field.setExtraParameters. """ + if simulation is None: + raise ValueError("Missing simulation value for computation.") + self.compute_time = MPI.Wtime() for df in self.variables: df.initialize(self.vformula, simulation.time) diff --git a/HySoP/hysop/operator/discrete/curlAndDiffusion_fft.py b/HySoP/hysop/operator/discrete/curlAndDiffusion_fft.py index 6bede01e0..67fc5d496 100644 --- a/HySoP/hysop/operator/discrete/curlAndDiffusion_fft.py +++ b/HySoP/hysop/operator/discrete/curlAndDiffusion_fft.py @@ -35,11 +35,7 @@ class DiffusionFFT(DiscreteOperator): self.compute_time = 0. @debug - def apply(self, t=None, dt=None, ite=None): - """ - Apply operator. - """ - self.compute_time = time.time() + def apply(self, simulation): if (self.vorticity.dimension == 2): diff --git a/HySoP/hysop/operator/discrete/multiphase.py b/HySoP/hysop/operator/discrete/multiphase.py index 172aaf677..887fca716 100644 --- a/HySoP/hysop/operator/discrete/multiphase.py +++ b/HySoP/hysop/operator/discrete/multiphase.py @@ -34,7 +34,7 @@ class Pressure_d(DiscreteOperator): @debug def apply(self, simulation=None): if simulation is None: - raise ValueError("Missing dt value for diffusion computation.") + raise ValueError("Missing simulation value for computation.") self.compute_time = time.time() dt = simulation.timeStep diff --git a/HySoP/hysop/operator/discrete/particle_advection.py b/HySoP/hysop/operator/discrete/particle_advection.py index aa8b05b86..bd494c991 100644 --- a/HySoP/hysop/operator/discrete/particle_advection.py +++ b/HySoP/hysop/operator/discrete/particle_advection.py @@ -149,7 +149,7 @@ class ParticleAdvection(DiscreteOperator): @debug def apply(self, simulation=None): if simulation is None: - raise ValueError("Missing dt value for diffusion computation.") + raise ValueError("Missing simulation value for computation.") self.numMethod(simulation.time, simulation.timeStep) diff --git a/HySoP/hysop/operator/discrete/scales_advection.py b/HySoP/hysop/operator/discrete/scales_advection.py index 3c4aaa9b6..76ad8f0ab 100644 --- a/HySoP/hysop/operator/discrete/scales_advection.py +++ b/HySoP/hysop/operator/discrete/scales_advection.py @@ -42,7 +42,7 @@ class ScalesAdvection(DiscreteOperator): @debug def apply(self, simulation=None): if simulation is None: - raise ValueError("Missing dt value for diffusion computation.") + raise ValueError("Missing simulation value for computation.") self.compute_time = time.time() dt = simulation.timeStep diff --git a/HySoP/hysop/operator/discrete/stretching.py b/HySoP/hysop/operator/discrete/stretching.py index b26a9419a..6fede186d 100755 --- a/HySoP/hysop/operator/discrete/stretching.py +++ b/HySoP/hysop/operator/discrete/stretching.py @@ -79,7 +79,7 @@ class Stretching_d(DiscreteOperator): -integrate with the chosen method (RK4. RK2. euler) """ if simulation is None: - raise ValueError("Missing dt value for diffusion computation.") + raise ValueError("Missing simulation value for computation.") self.compute_time = time.time() dt = simulation.timeStep diff --git a/HySoP/hysop/operator/discrete/synchronizeGhosts.py b/HySoP/hysop/operator/discrete/synchronizeGhosts.py index 6a6b622c6..23036054c 100644 --- a/HySoP/hysop/operator/discrete/synchronizeGhosts.py +++ b/HySoP/hysop/operator/discrete/synchronizeGhosts.py @@ -114,7 +114,7 @@ class SynchronizeGhosts_d(DiscreteOperator): #self.discreteOperator.setUp() @debug - def apply(self, t, dt, ite): + def apply(self, simulation=None): self.resolution = self.topology.localGridResolution resolution = self.topology.localGridResolution ghosts = self.topology.ghosts diff --git a/HySoP/hysop/operator/monitors/printer.py b/HySoP/hysop/operator/monitors/printer.py index 89ccb20e8..1ca7e7f75 100644 --- a/HySoP/hysop/operator/monitors/printer.py +++ b/HySoP/hysop/operator/monitors/printer.py @@ -7,7 +7,6 @@ from parmepy.constants import np, S_DIR, PARMES_REAL from parmepy.operator.monitors.monitoring import Monitoring import evtk.hl as evtk from parmepy.mpi import main_rank -from parmepy.mpi import MPI class Printer(Monitoring): @@ -30,6 +29,8 @@ class Printer(Monitoring): Monitoring.__init__(self, fields, frequency) ## output file name prefix self.prefix = prefix + str(main_rank) + ## Extension for filename + self.ext = ext ## Method to collect data in case of distributed data self.get_data_method = None if self.freq != 0: @@ -37,13 +38,14 @@ class Printer(Monitoring): self.step = self._printStep else: self.step = self._passStep - ## Printing compute time - self.compute_time = 0. ## Internal counter self._call_number = 0 - def apply(self, t=None, dt=None, ite=None): - self.step(ite) + def apply(self, simulation=None): + if simulation is None: + raise ValueError("Missing simulation value for monitoring.") + + self.step(simulation.currentIteration) def _build_vtk_dict(self): """Build a dictionary from fields to VTK image.""" @@ -74,7 +76,7 @@ class Printer(Monitoring): raise ValueError("Cannot set non callable method to get data " + "to print. Given method : " + str(method)) - def _passStep(self, ite): + def _passStep(self, ite=None): """A code method that do nothing.""" pass @@ -82,8 +84,8 @@ class Printer(Monitoring): """ Try to write data into VTK files. If fails, turn to classical ascii output. + @param iter : current iteration number """ - t = MPI.Wtime() if (ite % self.freq) == 0: self._call_number += 1 # Transfer from GPU to CPU if required @@ -94,8 +96,8 @@ class Printer(Monitoring): except AttributeError: pass # Set output file name - filename = self.outputPrefix + "results_{0:05d}.dat".format(ite) - print "Print file : " + filename + filename = self.prefix + '_it_' + str(ite) + self.ext + print "Print to file " + filename ## VTK output \todo: Need fix in 2D, getting an IOError. try: evtk.imageToVTK(filename, pointData=self._build_vtk_dict()) @@ -145,13 +147,6 @@ class Printer(Monitoring): f.write("\n") f.close() print "==\n" - self.compute_time += (time.time() - t) - - def printComputeTime(self): - self.time_info[0] = "\"IO\" " - self.time_info[1] = str(self.compute_time) + " " - print "IO total time : ", self.compute_time, self._call_number - if __name__ == "__main__": print __doc__ -- GitLab