2.16. Using simulation trackers

This example illustrates how trackers can be used to analyze simulations.

Time: 3

Out:

  0%|          | 0/3.0 [00:00<?, ?it/s]
Initializing:   0%|          | 0/3.0 [00:00<?, ?it/s]
  0%|          | 0/3.0 [00:07<?, ?it/s]
  3%|3         | 0.1/3.0 [00:08<04:03, 83.92s/it]
  7%|6         | 0.2/3.0 [00:09<02:10, 46.46s/it]
 10%|9         | 0.3/3.0 [00:09<01:23, 30.98s/it]
 13%|#3        | 0.4/3.0 [00:09<01:00, 23.23s/it]
 13%|#3        | 0.4/3.0 [00:09<01:01, 23.69s/it]
100%|##########| 3.0/3.0 [00:09<00:00,  3.16s/it]
100%|##########| 3.0/3.0 [00:09<00:00,  3.16s/it]
509.7241540373601
509.7241540373601
509.72415403736017
509.7241540373601

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(interval=1),  # store data every simulation time unit
    pde.PlotTracker(show=True),  # show images during simulation
    # print some output every 5 real seconds:
    pde.PrintTracker(interval=pde.RealtimeIntervals(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 9.539 seconds)

Gallery generated by Sphinx-Gallery