Volúmenes=nvx, Delta=delta) # # Definimos la fuente # Su = np.zeros(ivx) Su[:] = n2 * Tambiente # # Definimos el esquema de disccretización # dif_scheme = sDiffusion1D(malla, Su, Gamma=k) dif_scheme.Sp(-n2) # # Definimos la ecuación a resolver # convective_heat = PDE(rod, T) # # Creamos el sistema lineal y lo resolvemos # convective_heat.setNumericalScheme(dif_scheme) convective_heat.solve() # # Corregimos el valor en la condicion Neumman # #convective_heat.updateNeumman() # # Solución analítica # x, _, _ = malla.coordinatesMeshFVM() xa = np.linspace(0, longitud, 100) Ta = analyticSol(xa, np.sqrt(n2))
#v.contourf(2,x,y,T,{'cmap':'inferno'}) #v.scatter(2,xg,yg) #print(T) # # Definimos la fuente # Su = np.zeros((ivy, ivx)) #print('Su = ', Su) # # Definimos el esquema de disccretización # dif_scheme = sDiffusion2D(malla, Su, Gamma=k) # # Definimos la ecuación a resolver # laplace = PDE(placa, T) # # Creamos el sistema lineal y lo resolvemos # Su.shape = (ivy * ivx) laplace.setNumericalScheme(dif_scheme) sol = laplace.solve() #print(sol) # # Graficación de contornos # #v2 = flx.Plotter(1,1,axis_par) con = v1.contourf(2, x, y, T, {'levels': 20, 'cmap': 'hot'}) v1.contour(2, x, y, T, {'levels': 20, 'colors': 'k', 'linewidths': 0.5}) v1.colorbar(2, con, {'shrink': 0.75}) #
Nodos=nx, Volúmenes=nvx, Delta=delta, dt=dt) # # Definimos la fuente # Su = np.zeros(ivx) # # Definimos el esquema de disccretización # dif_scheme = tDiffusion1D(malla, Su, dt=dt, Gamma=k) # # Definimos la ecuación a resolver # laplace = PDE(rod, T) # # Preparamos el sistema lineal y creamos la matriz # laplace.setNumericalScheme(dif_scheme) # # Solución analítica # x, _, _ = malla.coordinatesMeshFVM() Ta = 800 * x + 100 # # Preparamos la visualización # axis_par = [{'title': 'Numérica', 'xlabel': 'x [cm]', 'ylabel': 'T [$^o$C]'}] v = flx.Plotter(2, 1, axis_par) line, = v.plot(1, x * 100, T, {
Volúmenes=nvx, Delta=delta) print(T) # # Definimos la fuente # Su = np.zeros(ivx) Su[:] = q # # Definimos el esquema de disccretización # dif_scheme = tDiffusion1D(malla, Su, dt=dt, Gamma=k) # # Definimos la ecuación a resolver # poisson = PDE(rod, T) # # Preparamos el sistema lineal y creamos la matriz # poisson.setNumericalScheme(dif_scheme) # # Solución analítica # x, _, _ = malla.coordinatesMeshFVM() xa = np.linspace(0, longitud, 100) Ta = analyticSol(xa) # # Preparamos la visualización con VisCoFlow # axis_par = [{ 'title': 'Numerica vs Exacta',
# # Definimos la fuente # Su = np.zeros(ivx) # # Definimos el esquema de disccretización # acoculco = tDiffusion1D(malla, Su, dt = dt) acoculco.calcConductivity() #acoculco.Gamma = 1.0e-7 #v.plot(1,acoculco.Gamma*5000,z, {'marker':'.','color':'b', 'ls':'-', 'lw':1}) print(acoculco.Gamma) # # Definimos la ecuación a resolver # heat_transfer = PDE(reservoir, T) #v.plot(1,T,z, {'marker':'.','color':'k', 'ls':'--', 'lw':1}) # # Preparamos el sistema lineal y creamos la matriz # heat_transfer.setNumericalScheme(acoculco) # # Resolvemos y graficamos para varios pasos de tiempo # print(Tmax) from matplotlib.animation import FuncAnimation anim = FuncAnimation(v.fig, # La figura donde se hace la animación solver, # la función que resuelve y cambia los datos fargs = (v.axes(1), dt, ),
v.colorbar(1,con_i, {'shrink':0.25, 'orientation':'horizontal', 'ticks':[0, 0.25, 0.5]}) v.quiver(1,xd,yd,uvel_v,vvel_v, {'scale':20}) # # Definimos la fuente # Su = np.zeros((ivy, ivx)) #print('Su = ', Su) # # Definimos el esquema de disccretización # advdif_scheme = tAdvDiff2D(malla, Su, dt = dt, Gamma = k) advdif_scheme.setVelocity(uvel,vvel) # # Definimos la ecuación a resolver # transport = PDE(placa, T) #print(T) # # Creamos el sistema lineal y lo resolvemos # Su.shape = ivy * ivx transport.setNumericalScheme(advdif_scheme) # # Resolvemos y graficamos para varios pasos de tiempo # from matplotlib.animation import FuncAnimation anim = FuncAnimation(v.fig, # La figura donde se hace la animación solver, # la función que resuelve y cambia los datos fargs=(v.axes(1), dt, ), # argumentos para la función solver() interval=500, # Intervalo entre cuadros en milisegundos
# # Definimos la fuente # Su = np.zeros(ivx) # # Definimos el esquema de disccretización # ad_scheme = tAdvDiff1D(malla, Su, dt=dt, Gamma=Gamma, rho=rho) vel = np.zeros(nvx + 2) vel.fill(u) print(vel) ad_scheme.setVelocity(vel) # # Definimos la ecuación a resolver # adv_diff = PDE(linea, phi) # # Creamos el sistema lineal y lo resolvemos # adv_diff.setNumericalScheme(ad_scheme) # # Preparamos la visualización con VisCoFlow # title_graf = '$\dfrac{\partial \phi}{\partial t} + \dfrac{\partial (u \phi)}{\partial x}= \kappa \dfrac{\partial^2 \phi}{\partial x^2}$' axis_par = [{ 'title': title_graf, 'xlabel': '$x$ [m]', 'ylabel': '$\phi$', 'ylim': (-0.1, 1.1) }] v = flx.Plotter(1, 1, axis_par)
Nodos=nx, Volúmenes=nvx, Delta=delta, dt=dt) # # Definimos la fuente # S = np.zeros(ivx) # Por ahora no hay fuente. # # Definimos el esquema de disccretización # dif_scheme = tDiffusion1D(malla, S, Gamma=k, dt=dt) # # Definimos la ecuación a resolver # laplace = PDE(barra, T) # # Preparamos el sistema lineal y creamos la matriz # laplace.setNumericalScheme(dif_scheme) # # Preparamos la visualización con VisCoFlow # axis_par = [{ 'title': 'Solución Numérica', 'xlabel': 'x [cm]', 'ylabel': 'T [$^o$C]' }] v = flx.Plotter(2, 1, axis_par) # # Solución analítica
# # Definimos la fuente # Su = np.zeros(ivx) # # Definimos el esquema de disccretización # ad_scheme = tAdvDiff1D(malla, Su, dt = dt, Gamma = Gamma, rho = rho) vel = np.zeros(nvx+2) vel.fill(u) print(vel) ad_scheme.setVelocity(vel) # # Definimos la ecuación a resolver # adv_diff = PDE(linea, phi) # # Creamos el sistema lineal y lo resolvemos # adv_diff.setNumericalScheme(ad_scheme) # # Solución analítica # x, _, _ = malla.coordinatesMeshFVM() xa = np.linspace(0,L,100) exac = analyticSol(xa, u, Tmax, Gamma) # # Preparamos la visualización con VisCoFlow # title_graf = '$\dfrac{\partial \phi}{\partial t} + \dfrac{\partial (u \phi)}{\partial x}= \kappa \dfrac{\partial^2 \phi}{\partial x^2}$' title_inicial = title_graf + ': Step = {:>3d} Time = {:>6.5f}'.format(0,0)
# Su = np.zeros(ivx) # # Definimos el esquema de disccretización # acoculco = tDiffusion1D(malla, Su, dt=dt) acoculco.calcConductivity() #acoculco.Gamma = 1.0e-7 #v.plot(1,acoculco.Gamma*5000,z, {'marker':'.','color':'b', 'ls':'-', 'lw':1}) print(len(acoculco.Gamma)) # Definimos la ecuación a resolver # T = np.copy(T_ini_int) print(len(T_ini_int)) heat_transfer = PDE(reservoir, T) #v.plot(1,T,z, {'marker':'.','color':'k', 'ls':'--', 'lw':1}) # # Preparamos el sistema lineal y creamos la matriz # heat_transfer.setNumericalScheme(acoculco) # # Resolvemos para varios pasos de tiempo # print(Tmax) #input('press enter') for k in range(0, Tmax): heat_transfer.solve() if (k % 10) == 0: v.plot(1, T, z, {'marker': '', 'ls': '-', 'lw': 0.5})
con_i = v.contourf(3, xd, yd, vel_norm, {'levels': 50, 'cmap': 'Blues'}) v.quiver(3, xd, yd, uvel_v, vvel_v, {'scale': 20}) # # Definimos la fuente # Su = np.zeros((ivy, ivx)) #print('Su = ', Su) # # Definimos el esquema de disccretización # advdif_scheme = tAdvDiff2D(malla, Su, dt=dt, Gamma=k) advdif_scheme.setVelocity(uvel, vvel) # # Definimos la ecuación a resolver # transport = PDE(placa, T) #print(T) # # Creamos el sistema lineal y lo resolvemos # Su.shape = ivy * ivx transport.setNumericalScheme(advdif_scheme) for k in range(0, Tmax): print('k = ', k, end=' ') sol = transport.solve(sym=False) # # Graficación # con_f = v.contourf(4, xv, yv, T, {'levels': 20, 'cmap': 'inferno'}) v.show()