# A numerical solution of 1D Gaussian advection equation by Upwind Scheme.importmatplotlib.pyplotasplimportnumpyasnpt0=0.0dt=0.1t_final=2x0=-2.0dx=0.1x_max=4.0T=np.arange(t0,t_final+dt,dt)X=np.arange(x0,x_max+dx,dx)U=[0.0for_inX]fig,ax=pl.subplots()nframe=0fortinT:ift==t0:foriinrange(len(X)):U[i]=np.exp(-X[i]**2)else:U_prime=[0.0for_inX]foriinrange(len(X)):ifi==0:U_prime[i]=np.exp(-(x0-(1-np.cos(t)))**2)elifi==len(X)-1:U_prime[i]=np.exp(-(x_max-(1-np.cos(t)))**2)else:a=np.sin(t)ifa>0:U_prime[i]=U[i]-a*dt/dx*(U[i]-U[i-1])else:U_prime[i]=U[i]-a*dt/dx*(U[i+1]-U[i])U=U_primeax.clear()line,=ax.plot(X,U,'b-',linewidth=3)ax.set_xlabel('x')ax.set_ylabel('u')ax.set_xlim([x0,x_max])fig.savefig('upwind1d/frame_'+"%03d"%nframe+'.png')nframe+=1# To generate GIF: convert frame_* GaussianUpwind1D.gif
Лиценз
I, the copyright holder of this work, hereby publish it under the following license: