Note
Go to the end to download the full example code.
2.2.7 Klein-Gordon equation
This example solves the Klein-Gordon equation in one dimension, showing the effect of the mass term on wave propagation. With mass=0 the equation reduces to the standard wave equation; increasing the mass introduces dispersion.

0%| | 0/50.0 [00:00<?, ?it/s]
Initializing: 0%| | 0/50.0 [00:00<?, ?it/s]
0%| | 0/50.0 [00:03<?, ?it/s]
0%| | 0.01/50.0 [00:03<4:10:28, 300.64s/it]
1%| | 0.4/50.0 [00:03<06:12, 7.52s/it]
62%|██████▏ | 31.03/50.0 [00:03<00:01, 10.31it/s]
62%|██████▏ | 31.03/50.0 [00:03<00:01, 10.30it/s]
100%|██████████| 50.0/50.0 [00:03<00:00, 16.60it/s]
100%|██████████| 50.0/50.0 [00:03<00:00, 16.60it/s]
from pde import KleinGordonPDE, ScalarField, UnitGrid
grid = UnitGrid([128]) # generate grid
u = ScalarField.from_expression(grid, "exp(-((x - 32) / 5) ** 2)")
eq = KleinGordonPDE(speed=1, mass=0.5) # define the pde
state = eq.get_initial_condition(u)
result = eq.solve(state, t_range=50, dt=0.01)
result[0].plot()
Total running time of the script: (0 minutes 3.132 seconds)