Note
Go to the end to download the full example code.
2.4.1 Post-step hook function
Demonstrate the simple hook function in PDE, which is called after
each time step and may modify the state and abort the simulation.

0%| | 0/10000.0 [00:00<?, ?it/s]
Initializing: 0%| | 0/10000.0 [00:00<?, ?it/s]
0%| | 0/10000.0 [00:08<?, ?it/s]
0%| | 0.1/10000.0 [00:12<345:23:11, 124.34s/it]
0%| | 0.2/10000.0 [00:12<172:41:44, 62.17s/it]
0%| | 0.3/10000.0 [00:12<115:07:50, 41.45s/it]
0%| | 10.9/10000.0 [00:12<3:09:56, 1.14s/it]
3%|▎ | 271.5/10000.0 [00:12<07:26, 21.77it/s]
3%|▎ | 271.5/10000.0 [00:12<07:30, 21.60it/s]
3%|▎ | 271.5/10000.0 [00:12<07:30, 21.60it/s]
from pde import PDE, ScalarField, UnitGrid
def post_step_hook(state_data, t):
"""Helper function called after every time step."""
state_data[24:40, 24:40] = 1 # set central region to given value
if t > 1e3:
raise StopIteration # abort simulation at given time
eq = PDE({"c": "laplace(c)"}, post_step_hook=post_step_hook)
state = ScalarField(UnitGrid([64, 64]))
result = eq.solve(state, dt=0.1, t_range=1e4)
result.plot()
Total running time of the script: (0 minutes 12.678 seconds)