2.4.3 Heterogeneous PDE

This example loads an example image and uses it as the source field for a simple reaction-diffusion equation.

heterogeneous pde
  0%|          | 0/100.0 [00:00<?, ?it/s]
Initializing:   0%|          | 0/100.0 [00:00<?, ?it/s]
  0%|          | 0/100.0 [00:07<?, ?it/s]
  0%|          | 0.00362/100.0 [00:20<156:16:08, 5625.89s/it]
  0%|          | 0.00553/100.0 [00:25<126:33:51, 4556.57s/it]
  0%|          | 0.00691/100.0 [00:25<101:17:19, 3646.65s/it]
  0%|          | 0.07423/100.0 [00:25<9:25:22, 339.47s/it]
  2%|▏         | 2.46221/100.0 [00:25<16:38, 10.24s/it]
 43%|████▎     | 42.67025/100.0 [00:25<00:33,  1.69it/s]
 43%|████▎     | 42.67025/100.0 [00:25<00:33,  1.69it/s]
100%|██████████| 100.0/100.0 [00:25<00:00,  3.96it/s]
100%|██████████| 100.0/100.0 [00:25<00:00,  3.96it/s]

import inspect
from pathlib import Path

from pde import PDE, ScalarField

# load a field relative to the current file
package_path = Path(inspect.getfile(lambda: None)).parents[2]
img_path = package_path / "docs" / "source" / "_images" / "logo_small.png"

background = ScalarField.from_image(img_path)  # create source field from image
state = ScalarField(background.grid)  # generate initial condition

# define the pde
eq = PDE({"c": "laplace(c) + 0.2 * source - 0.1 * c"}, consts={"source": background})
result = eq.solve(state, t_range=100, adaptive=True)
result.plot()

Total running time of the script: (0 minutes 26.891 seconds)