Advertisement
Rnery

matplotlib animation

Jul 14th, 2021 (edited)
251
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.45 KB | Source Code | 1 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. #importa bibliotecas
  5. import numpy as np
  6. import matplotlib.pyplot as plt
  7. from matplotlib.animation import FuncAnimation as anim
  8.  
  9. #dados do problema
  10. L = 1 #comprimento da barra [m]
  11. a = 9.7e-5 #difusão térmica [m²/s]
  12. T0 = 800 #temp inicial [°C]
  13. Tr = 0 #temp de resfriamento [°C]
  14.  
  15. tmax = 3600 #instante final [s]
  16.  
  17. N = 200 #tamanho da malha X
  18. dx = L / N #Delta x
  19. dt = dx**2 / (2 * a) #calculando o máximo Delta t apra a estabilidade
  20.  
  21. x = np.linspace(0, L, N+1) #criando a malha na barra
  22. T = np.zeros(N+1) #array com as temperaturas num dados instante
  23.  
  24. print(f'Malha: {N} pontos')
  25.  
  26. T[:] = T0 #impondo a condição inicial
  27. T[[0, -1]] = Tr #condição de contorno
  28.  
  29. #variáveis aux
  30. f = a * dt/dx**2 #alpha Delta / delta x² ( = 0,5 se uso o máximo de Delta t)
  31. fm = 1 - 2 * f
  32.  
  33. #parte gráfica e animação
  34. fig = plt.figure() #gera figura
  35. plt.ylim(0, 850) #limites para o eixo y
  36. plt.xlabel('x [m]') #nome do eixo x
  37. plt.ylabel('T [Cº]') #nome do eixo y
  38.  
  39. plt.plot(x, [T0]*(N+1),'--') #plota linha
  40. perfil, = plt.plot(x, T)
  41. tempo = plt.text(L/2, 820, f't=0 s') #plota  o tempo
  42.  
  43.  
  44. def update(i):
  45.     T[1:-1] = f * (T[:-2] + T[2:]) + fm * T[1:-1] #função da troca de calor
  46.     perfil.set_ydata(T) #atualiza o gráfico
  47.     tempo.set_text(f't = {i*dt:.2f} s') #atualiza o tempo
  48.     return perfil, tempo
  49.  
  50. an = anim(fig, update, interval = 1, blit = True) #função de animação
  51. plt.show() #fim
  52.  
Tags: python
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement