Guest User

Untitled

a guest
Jan 24th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1. # EXEMPLE DE DIFFUSION 2D PAR DIFFERENCES FINIES
  2.  
  3. from pylab import *
  4.  
  5. # PARAMETRES PHYSIQUES
  6. C = 1.0 #coefficient de diffusion
  7. LX = 2.0 #taille du domaine
  8. LY = 1.0 #taille du domaine
  9. T = 0.10 #temps d'integration
  10.  
  11. # PARAMETRES NUMERIQUES
  12. NX = 51 #nombre de points de grille
  13. NY = 51 #nombre de points de grille
  14. NT = 1000 #nombre de pas de temps
  15.  
  16. dx = LX/(NX-2) #pas de grille (espace)
  17. dy = LY/(NY-2) #pas de grille (espace)
  18. dt = T/NT #pas de grille (temps)
  19.  
  20. dd = sqrt(dx**2+dy**2)
  21.  
  22.  
  23. def Timestep(U,U_old):
  24. #Nouveau tableau
  25. U_new = zeros((NX,NY))
  26. U_old = zeros((NX,NY))
  27. #Boucle sur les points de grille, sauf C.L.
  28. for i in range (2, NX-2):
  29. for j in range (2, NY-2):
  30. ddU=(U[i-1,j]-2*U[i,j]+U[i+1,j])/(dx**2)+(U[i-1,j]-2*U[i,j]+U[i+1,j])/(dy**2)
  31. U_new[i,j]=2*U[i,j]-U_old[i,j]+((C**2)*(dt**2))*ddU
  32.  
  33. #Condition aux limites périodiques
  34. U_new[NX-1,:]=U_new[1,:]
  35. U_new[0,:]=U_new[NX,:]
  36. U_new[:,NX-1]=U_new[:,1]
  37. U_new[:,0]=U_new[:,NX]
  38.  
  39. return U_new
  40.  
  41.  
  42. ### PROGRAMME PRINCIPAL ###
  43.  
  44. # Maillage
  45. xx = zeros((NX,NY))
  46. yy = zeros((NX,NY))
  47. for i in range (0,NX):
  48. for j in range (0,NY):
  49. xx[i,j]=i*dx
  50. yy[i,j]=j*dy
  51.  
  52. # Initialisation
  53. U_data = zeros((NX,NY))
  54. U_old = zeros((NX,NY))
  55. x=linspace(0,LX,NX)
  56. y=linspace(0,LY,NY)
  57.  
  58. a=100.0
  59. U_data =exp(-a*(((x-0.3)**2)+((y-0.3)**2)))
  60. U_zero = U_data.copy()
  61. U_old = U_data.copy()
  62.  
  63.  
  64. # Boucle principale
  65. for n in range(0,NT):
  66.  
  67. #Plot tous les 100 pas de temps
  68. if (n%100==1):
  69. hold(False)
  70. plotlabel= "t = " + str(n*dt)
  71. pcolor(xx,yy,U_data)
  72. hold(True)
  73. contour(xx,yy,U_data,colors='k')
  74. title(plotlabel)
  75. draw()
  76. ginput()
  77. U_new = Timestep(U_data,U_old)
  78. U_old=U_data
  79. U_data=U_new
Add Comment
Please, Sign In to add comment