Skip to content

Commit 0de2f8d

Browse files
author
Thomas Baumann
committed
Added a step size hook
1 parent 7c33bd0 commit 0de2f8d

File tree

4 files changed

+36
-11
lines changed

4 files changed

+36
-11
lines changed

pySDC/implementations/convergence_controller_classes/adaptivity.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
BasicRestartingNonMPI,
88
)
99
from pySDC.implementations.controller_classes.controller_nonMPI import controller_nonMPI
10+
from pySDC.implementations.hooks.log_step_size import LogStepSize
1011

1112

1213
class AdaptivityBase(ConvergenceController):
@@ -35,6 +36,7 @@ def setup(self, controller, params, description, **kwargs):
3536
"control_order": -50,
3637
"beta": 0.9,
3738
}
39+
controller.add_hook(LogStepSize)
3840
return {**defaults, **params}
3941

4042
def dependencies(self, controller, description, **kwargs):

pySDC/implementations/convergence_controller_classes/estimate_embedded_error.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def get_implementation(cls, flavor):
4444
elif flavor == 'nonMPI':
4545
return EstimateEmbeddedErrorNonMPI
4646
else:
47-
raise NotImplementedError(f'Flavor {flavor} of EmstimateEmbeddedError is not implemented!')
47+
raise NotImplementedError(f'Flavor {flavor} of EstimateEmbeddedError is not implemented!')
4848

4949
def setup(self, controller, params, description, **kwargs):
5050
"""
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from pySDC.core.Hooks import hooks
2+
3+
4+
class LogStepSize(hooks):
5+
"""
6+
Store the step size at the end of each step as "dt".
7+
"""
8+
9+
def post_step(self, step, level_number):
10+
"""
11+
Record step size
12+
13+
Args:
14+
step (pySDC.Step.step): the current step
15+
level_number (int): the current level number
16+
17+
Returns:
18+
None
19+
"""
20+
# some abbreviations
21+
L = step.levels[level_number]
22+
23+
self.add_to_stats(
24+
process=step.status.slot,
25+
time=L.time,
26+
level=L.level_index,
27+
iter=step.status.iter,
28+
sweep=L.status.sweep,
29+
type='dt',
30+
value=L.dt,
31+
)

pySDC/projects/Resilience/hook.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22
from pySDC.implementations.hooks.log_solution import LogSolution
33
from pySDC.implementations.hooks.log_embedded_error_estimate import LogEmbeddedErrorEstimate
44
from pySDC.implementations.hooks.log_extrapolated_error_estimate import LogExtrapolationErrorEstimate
5+
from pySDC.implementations.hooks.log_step_size import LogStepSize
56

67

7-
hook_collection = [LogSolution, LogEmbeddedErrorEstimate, LogExtrapolationErrorEstimate]
8+
hook_collection = [LogSolution, LogEmbeddedErrorEstimate, LogExtrapolationErrorEstimate, LogStepSize]
89

910

1011
class log_data(hooks):
@@ -28,15 +29,6 @@ def post_step(self, step, level_number):
2829

2930
L.sweep.compute_end_point()
3031

31-
self.add_to_stats(
32-
process=step.status.slot,
33-
time=L.time,
34-
level=L.level_index,
35-
iter=0,
36-
sweep=L.status.sweep,
37-
type='dt',
38-
value=L.dt,
39-
)
4032
self.add_to_stats(
4133
process=step.status.slot,
4234
time=L.time,

0 commit comments

Comments
 (0)