Seite - 296 - in Programming for Computations – Python - A Gentle Introduction to Numerical Simulations with Python 3.6, Band Second Edition
Bild der Seite - 296 -
Text der Seite - 296 -
296 9 SolvingPartialDifferentialEquations
Parameterscanbeset as
L = 0.5
beta = 8.2E-5
N = 40
x = np.linspace(0, L, N+1)
dx = x[1] - x[0]
u = np.zeros(N+1)
U_0 = np.zeros(N+1)
U_0[0] = s(0)
U_0[1:] = 283
Let us useΔt = 1.0. We can now callode_FEand then make an animation on the
screen to seehowu(x,t)develops in time:
from ode_system_FE import ode_FE
u, t = ode_FE(rhs, U_0, dt, T=1*60*60)
# Make movie
import os
os.system(’rm tmp_*.png’)
import matplotlib.pyplot as plt
plt.ion()
y = u[0,:]
lines = plt.plot(x, y)
plt.axis([x[0], x[-1], 273, s(0)+10])
plt.xlabel(’x’)
plt.ylabel(’u(x,t)’)
counter = 0
# Plot each of the first 100 frames, then increase speed by 10x
change_speed = 100
for i in range(0, u.shape[0]):
print(t[i])
plot = True if i <= change_speed else i % 10 == 0
lines[0].set_ydata(u[i,:])
if i > change_speed:
plt.legend([’t={:.0f} 10x’.format(t[i])])
else:
plt.legend([’t={:.0f}’.format(t[i])])
plt.draw()
if plot:
plt.savefig(’tmp_{:04d}.png’.format(counter))
counter += 1
#time.sleep(0.2)
The plotting statements update the u(x,t) curve on the screen. In addition,
we save a fraction of the plots to files tmp_0000.png, tmp_0001.png,
tmp_0002.png, and so on. These plots can be combined to ordinaryvideo files. A
commontool isffmpegor its sisteravconv.
These programs take the same type of command-line options. To make a Flash
videomovie.flv, run1
Terminal
Terminal> ffmpeg -i tmp_%04d.png -r 4 -vcodec flv movie.flv
1 You may read about using a terminal inAppendix A.
Programming for Computations – Python
A Gentle Introduction to Numerical Simulations with Python 3.6, Band Second Edition
- Titel
- Programming for Computations – Python
- Untertitel
- A Gentle Introduction to Numerical Simulations with Python 3.6
- Band
- Second Edition
- Autoren
- Svein Linge
- Hans Petter Langtangen
- Verlag
- Springer Open
- Datum
- 2020
- Sprache
- englisch
- Lizenz
- CC BY 4.0
- ISBN
- 978-3-319-32428-9
- Abmessungen
- 17.8 x 25.4 cm
- Seiten
- 356
- Schlagwörter
- Programmiersprache, Informatik, programming language, functional, imperative, object-oriented, reflective
- Kategorie
- Informatik