@@ -133,7 +133,8 @@ def run(self, u0, t0, Tend):
133133 # some initializations and reset of statistics
134134 uend = None
135135 num_procs = len (self .MS )
136- self .hooks .reset_stats ()
136+ for hook in self .hooks :
137+ hook .reset_stats ()
137138
138139 assert (
139140 (Tend - t0 ) / self .dt
@@ -152,7 +153,8 @@ def run(self, u0, t0, Tend):
152153
153154 # call pre-run hook
154155 for S in self .MS :
155- self .hooks .pre_run (step = S , level_number = 0 )
156+ for hook in self .hooks :
157+ hook .pre_run (step = S , level_number = 0 )
156158
157159 nblocks = int ((Tend - t0 ) / self .dt / num_procs )
158160
@@ -169,9 +171,10 @@ def run(self, u0, t0, Tend):
169171
170172 # call post-run hook
171173 for S in self .MS :
172- self .hooks .post_run (step = S , level_number = 0 )
174+ for hook in self .hooks :
175+ hook .post_run (step = S , level_number = 0 )
173176
174- return uend , self .hooks . return_stats ()
177+ return uend , self .return_stats ()
175178
176179 def build_propagation_matrix (self , niter ):
177180 """
@@ -302,22 +305,25 @@ def pfasst(self, MS):
302305
303306 MS = self .update_data (MS = MS , u = self .u , res = self .res , niter = niter , level = 0 , stage = 'PRE_STEP' )
304307 for S in MS :
305- self .hooks .pre_step (step = S , level_number = 0 )
308+ for hook in self .hooks :
309+ hook .pre_step (step = S , level_number = 0 )
306310
307311 while np .linalg .norm (self .res , np .inf ) > self .tol and niter < self .maxiter :
308312
309313 niter += 1
310314
311315 MS = self .update_data (MS = MS , u = self .u , res = self .res , niter = niter , level = 0 , stage = 'PRE_ITERATION' )
312316 for S in MS :
313- self .hooks .pre_iteration (step = S , level_number = 0 )
317+ for hook in self .hooks :
318+ hook .pre_iteration (step = S , level_number = 0 )
314319
315320 if self .nlevels > 1 :
316321 for _ in range (MS [0 ].levels [1 ].params .nsweeps ):
317322
318323 MS = self .update_data (MS = MS , u = self .u , res = self .res , niter = niter , level = 1 , stage = 'PRE_COARSE_SWEEP' )
319324 for S in MS :
320- self .hooks .pre_sweep (step = S , level_number = 1 )
325+ for hook in self .hooks :
326+ hook .pre_sweep (step = S , level_number = 1 )
321327
322328 self .u += self .Tcf .dot (np .linalg .solve (self .Pc , self .Tfc .dot (self .res )))
323329 self .res = self .u0 - self .C .dot (self .u )
@@ -326,27 +332,32 @@ def pfasst(self, MS):
326332 MS = MS , u = self .u , res = self .res , niter = niter , level = 1 , stage = 'POST_COARSE_SWEEP'
327333 )
328334 for S in MS :
329- self .hooks .post_sweep (step = S , level_number = 1 )
335+ for hook in self .hooks :
336+ hook .post_sweep (step = S , level_number = 1 )
330337
331338 for _ in range (MS [0 ].levels [0 ].params .nsweeps ):
332339
333340 MS = self .update_data (MS = MS , u = self .u , res = self .res , niter = niter , level = 0 , stage = 'PRE_FINE_SWEEP' )
334341 for S in MS :
335- self .hooks .pre_sweep (step = S , level_number = 0 )
342+ for hook in self .hooks :
343+ hook .pre_sweep (step = S , level_number = 0 )
336344
337345 self .u += np .linalg .solve (self .P , self .res )
338346 self .res = self .u0 - self .C .dot (self .u )
339347
340348 MS = self .update_data (MS = MS , u = self .u , res = self .res , niter = niter , level = 0 , stage = 'POST_FINE_SWEEP' )
341349 for S in MS :
342- self .hooks .post_sweep (step = S , level_number = 0 )
350+ for hook in self .hooks :
351+ hook .post_sweep (step = S , level_number = 0 )
343352
344353 MS = self .update_data (MS = MS , u = self .u , res = self .res , niter = niter , level = 0 , stage = 'POST_ITERATION' )
345354 for S in MS :
346- self .hooks .post_iteration (step = S , level_number = 0 )
355+ for hook in self .hooks :
356+ hook .post_iteration (step = S , level_number = 0 )
347357
348358 MS = self .update_data (MS = MS , u = self .u , res = self .res , niter = niter , level = 0 , stage = 'POST_STEP' )
349359 for S in MS :
350- self .hooks .post_step (step = S , level_number = 0 )
360+ for hook in self .hooks :
361+ hook .post_step (step = S , level_number = 0 )
351362
352363 return MS
0 commit comments