Texto y código sujeto bajo Creative Commons Attribution license, CC-BY-SA. (c) Original por Lorena A. Barba y Gilbert Forsyth en 2013, traducido por F.J. Navarro-Brull para CAChemE.org %pylab inline from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np ### Declaración de variables nx = 101 ny = 101 nt = 80 c = 1 dx = 2.0/(nx-1) dy = 2.0/(ny-1) sigma = .2 dt = sigma*dx x = np.linspace(0,2,nx) y = np.linspace(0,2,ny) u = np.ones((ny,nx)) ## crea un vector 1xn de unos v = np.ones((ny,nx)) un = np.ones((ny,nx)) vn = np.ones((ny,nx)) ### Asignar variables inciales u[.5/dy:1/dy+1,.5/dx:1/dx+1]=2 ## establece función de sobrero como C.I.: u(.5<=x<=1 && .5<=y<=1 ) is 2 v[.5/dy:1/dy+1,.5/dx:1/dx+1]=2 ##establece función de sobrero como C.I: u(.5<=x<=1 && .5<=y<=1 ) is 2 for n in range(nt+1): ## Bucle para los incrementos de tiempo un[:] = u[:] vn[:] = v[:] u[1:,1:]=un[1:,1:]-(un[1:,1:]*dt/dx*(un[1:,1:]-un[0:-1,1:]))-vn[1:,1:]*dt/dy*(un[1:,1:]-un[1:,0:-1]) v[1:,1:]=vn[1:,1:]-(un[1:,1:]*dt/dx*(vn[1:,1:]-vn[0:-1,1:]))-vn[1:,1:]*dt/dy*(vn[1:,1:]-vn[1:,0:-1]) u[0,:] = 1 u[-1,:] = 1 u[:,0] = 1 u[:,-1] = 1 v[0,:] = 1 v[-1,:] = 1 v[:,0] = 1 v[:,-1] = 1 from matplotlib import cm ##cm = "colormap" para cambiar la paleta de color de la figura 3d fig = plt.figure(figsize=(11,7), dpi=100) ax = fig.gca(projection='3d') X,Y = np.meshgrid(x,y) ax.plot_surface(X,Y,u, cmap=cm.coolwarm) from IPython.display import YouTubeVideo YouTubeVideo('tUg_dE3NXoY') from IPython.core.display import HTML def css_styling(): styles = open("../styles/custom.css", "r").read() return HTML(styles) css_styling()