# 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 = [{
# 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]$',
# 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', 'xlabel': 'x [cm]', 'ylabel': 'T [$^o$C]' }] v = flx.Plotter(2, 1, axis_par)
#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 frames=Tmax+1, # Número de iteraciones (Cuadros) repeat=False) # Permite poner la animación en un ciclo # # Graficación # v.show()
# 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, ), interval=500, # Intervalo entre cuadros en milisegundos frames=Tmax+1, # Número de iteraciones (Cuadros) repeat=False) # Permite poner la animación en un ciclo #heat_transfer.printMat(nice=True)
# # 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) # # Solución analítica # x, _, _ = malla.coordinatesMeshFVM()
Su = np.zeros(ivx) # # Definimos el esquema de disccretización # dif_scheme = sAdvDiff1D(malla, Su, Gamma, rho) vel = np.zeros(nvx+2) vel.fill(u) dif_scheme.setVelocity(vel) # # Definimos la ecuación a resolver # adv_diff = PDE(linea, phi) # # Creamos el sistema lineal y lo resolvemos # adv_diff.setNumericalScheme(dif_scheme) adv_diff.solve(sym=False) print(phi) # # Solución analítica # x, _, _ = malla.coordinatesMeshFVM() xa = np.linspace(0,L,50) phi_a = analyticSol(xa) # # Visualización usando VisCoFlow # title_graf = '$\dfrac{\partial (u \phi)}{\partial x}= \kappa \dfrac{\partial^2 \phi}{\partial x^2}$' axis_par = [{'title':title_graf, 'xlabel':'x [m]', 'ylabel':'$\phi$'}, {'title':'Malla', 'xlabel':'x [m]', 'ylabel':'$\phi$'},] v = flx.Plotter(2,1,axis_par)