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)) # # Visualización usando VisCoFlow # axis_par = [{ 'title': 'Numerica vs Exacta',
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}) # # Graficación de Temperatura vs posición # axis_par2 = [{ 'xlabel': '$x$ [m]', 'ylabel': '$T [^o C]$', 'ylim': (0, 1),
'ylim': (-0.1, 1.1) }] v = flx.Plotter(1, 1, axis_par) # # Solución analítica # x, _, _ = malla.coordinatesMeshFVM() xa = np.linspace(0, L, 100) exac = analyticSol(xa, u, Tmax, Gamma) # # Resolvemos para varios pasos de tiempo # v.plot(1, x, phi, {'color': 'gray', 'ls': '--', 'lw': 1.0}) for k in range(0, Nmax): print('k = ', k) adv_diff.solve(sym=False) if (k % 100 == 0): v.plot(1, x, phi, {'color': 'gray', 'ls': '--', 'lw': 1.5}) # # Visualización usando VisCoFlow # v.plot(1, x, phi, { 'color': 'C0', 'ls': '-', 'lw': 1.5, 'label': 'Numérica', 'zorder': 5 }) v.plot(1, xa, exac, {'color': 'red', 'ls': '-', 'lw': 2.0, 'label': 'Exacta'}) v.grid() v.legend()
#xg, yg = np.meshgrid(x, y) # # Se construye el arreglo donde se guardará la solución # T = np.zeros((nvy + 2, nvx + 2)) # El arreglo contiene ceros T[-1, :] = TT # Condición de frontera pared superior T[:, 0] = TL # Condición de frontera en la pared izquierda # # Definimos la fuente # Su = np.zeros(ivy * ivx) # # 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 # laplace.setNumericalScheme(dif_scheme) laplace.solve() # # Graficación # con = v.contourf(2, x, y, T, {'cmap': 'inferno', 'levels': 20}) v.colorbar(2, con) v.show()
# S = np.zeros(ivx) S[:] = q # # Definimos el esquema de disccretización # dif_scheme = sDiffusion1D(malla, S, Gamma=k) # # Definimos la ecuación a resolver # poisson = PDE(rod, T) # # Creamos el sistema lineal y lo resolvemos # poisson.setNumericalScheme(dif_scheme) poisson.solve() # # Solución analítica # xa = np.linspace(0, longitud, 100) Ta = analyticSol(xa) # # Visualización # x, _, _ = malla.coordinatesMeshFVM() axis_par = [{ 'title': 'Numerica vs Exacta', 'xlabel': 'x [cm]', 'ylabel': 'T [$^o$C]' }] v = flx.Plotter(2, 1, axis_par)
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}) heat_transfer.printMat(nice=True) ## ## Visualización usando VisCoFlow ## v.plot(1, T, z, { 'marker': '', 'color': 'k', 'ls': '-', 'lw': 2, 'label': 'Sol. Final' })
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()