diff --git a/hysop/iterative_method.py b/hysop/iterative_method.py
index b03ff9dcd8d5e9068bee089ba1957fd49b91de13..1b8db492fcba147047bd339957cdcb21be8a5e84 100644
--- a/hysop/iterative_method.py
+++ b/hysop/iterative_method.py
@@ -4,7 +4,7 @@ from hysop import Simulation, Problem
 from hysop.parameters.scalar_parameter import ScalarParameter
 from hysop.tools.contexts import Timer
 from hysop import dprint, vprint
-from hysop.tools.decorators  import debug
+from hysop.tools.decorators import debug
 from hysop.core.graph.graph import ready
 from hysop.constants import HYSOP_REAL, HYSOP_INTEGER
 from hysop.simulation import eps
@@ -13,6 +13,7 @@ from hysop.core.mpi import main_rank, main_size, main_comm
 import numpy as np
 import datetime
 
+
 class PseudoSimulation(Simulation):
     """Pseudo time-iterations for iterative method"""
 
@@ -80,8 +81,9 @@ class IterativeMethod(Problem):
     override Problem class in a proper way. Here only a pseudo-timestep is
     used together with a maximal number of iteration to compute a pseudo-final time.
     """
+
     def __init__(self, stop_criteria, tolerance=1e-8, state_print=100, max_iter=10000,
-                 dt0=None, dt=None, **kwargs):
+                 dt0=None, dt=None, configsimu=None, **kwargs):
         super(IterativeMethod, self).__init__(**kwargs)
         self.stop_criteria, self.tolerance = stop_criteria, tolerance
 
@@ -104,9 +106,16 @@ class IterativeMethod(Problem):
                                              dtype=self.stop_criteria.dtype)
         self._stop_criteria_reset[...] = 1e10
 
+        self.configsimu = self._default_configsimu
+        if not configsimu is None:
+            self.configsimu = configsimu
+
+    def _default_configsimu(self, l, s):
+        pass
+
     @debug
     @ready
-    def apply(self, simulation, configsimu=lambda l:None, report_freq=100, **kwds):
+    def apply(self, simulation, report_freq=0, **kwds):
         vprint('=== Entering iterative method...')
         self.stop_criteria.value = self._stop_criteria_reset
 
@@ -119,8 +128,9 @@ class IterativeMethod(Problem):
                                 dt0=self.dt0, dt=self.dt,
                                 t=ScalarParameter(name='dummy-t',
                                                   dtype=HYSOP_REAL,
-                                                  quiet=True))
-        configsimu(loop)
+                                                  quiet=True),
+                                mpi_params=self.mpi_params)
+        self.configsimu(loop, simulation)
         # Usual initialize-loop-finalize sequence :
         loop.initialize()
         with Timer() as tm:
@@ -140,8 +150,8 @@ class IterativeMethod(Problem):
                             formatter={'float_kind': lambda x: '{:8.8f}'.format(x)}),
             datetime.timedelta(seconds=round(avg_time)),
             avg_time,
-            '' if main_size==1 else ', averaged over {} ranks. '.format(main_size)))
-    
+            '' if main_size == 1 else ', averaged over {} ranks. '.format(main_size)))
+
         self.it_num.value = loop.current_iteration
         loop.finalize()
         self.final_report()