Note
Go to the end to download the full example code.
2.3.4 Using simulation trackers
This example illustrates how trackers can be used to analyze simulations.
0%| | 0/3.0 [00:00<?, ?it/s]
Initializing: 0%| | 0/3.0 [00:00<?, ?it/s]
0%| | 0/3.0 [00:04<?, ?it/s]
3%|▎ | 0.1/3.0 [00:04<01:59, 41.24s/it]
7%|▋ | 0.2/3.0 [00:04<00:57, 20.62s/it]
73%|███████▎ | 2.2/3.0 [00:04<00:01, 1.91s/it]
73%|███████▎ | 2.2/3.0 [00:04<00:01, 1.92s/it]
100%|██████████| 3.0/3.0 [00:04<00:00, 1.41s/it]
100%|██████████| 3.0/3.0 [00:04<00:00, 1.41s/it]
508.6625160930638
508.66251609306386
508.66251609306374
508.6625160930638
import pde
grid = pde.UnitGrid([32, 32]) # generate grid
state = pde.ScalarField.random_uniform(grid) # generate initial condition
storage = pde.MemoryStorage()
trackers = [
"progress", # show progress bar during simulation
"steady_state", # abort when steady state is reached
storage.tracker(interrupts=1), # store data every simulation time unit
pde.PlotTracker(show=True), # show images during simulation
# print some output every 5 real seconds:
pde.PrintTracker(interrupts=pde.RealtimeInterrupts(duration=5)),
]
eq = pde.DiffusionPDE(0.1) # define the PDE
eq.solve(state, 3, dt=0.1, tracker=trackers)
for field in storage:
print(field.integral)
Total running time of the script: (0 minutes 4.259 seconds)