import numpy as np import matplotlib.pyplot as plt Lx=5e-2 # taille du domaine de travail en mètre Ly=5e-2 Nx=100 # nombre de points de la grille Ny=100 dx=Lx/Nx # intervalle entre deux points dy=Ly/Ny precision = 1e-2 # règle la précision du calcul : si la methode converge à ce # nombre près, le programme arrête les itérations V=np.zeros((Ny,Nx)) # tableaux à 2 dimensions vide au départ V2=np.zeros((Ny,Nx)) # V : potentiel B=np.zeros((Ny,Nx)) # Ex et Ey composantes du champ électrique Ex=np.zeros((Ny,Nx)) # B : si B=1, le potentiel est imposé, B=0 vide Ey=np.zeros((Ny,Nx)) # conditions aux limites : condensateur dans une boîte V2=V.copy() #------------calcul du potentiel méthode de Jacobi ------------------- emax=1000 # on met une valeur arbitraire > précision k=0 # pour que le while ne stoppe pas tout de suite # les itérations, emax sera l'écart max de # potentiel entre deux itérations while emax>precision: # tant que la présicion n'est pas atteinte # on met à zéro au départ pour calculer le max emax=0 # d'écart sur l'ensemble de la grille for i in range(Ny): for j in range(Nx): k=k+1 # on compte le nombre d'itérations #--------------------------------------------------------------------------- print(str(k)+" itérations") # -------------calcul du champ électrique Ex et Ey-------------------------- for i in range(1,Ny-1): for j in range(1,Nx-1): #---------------------------------------------------------------------------- # tracé de la carte de champ : potentiel et champ électrique x=np.linspace(-Lx/2,Lx/2,Nx) y=np.linspace(-Ly/2,Ly/2,Ny) X,Y=np.meshgrid(x,y) plt.figure(figsize=(10,8)) cf=plt.contourf(X,Y,V,100,cmap='jet') graph=plt.contour(X,Y,V,12,colors='black') plt.clabel(graph,inline=1,fontsize=10,fmt='%3.2f') #affiche les valeurs de V plt.colorbar(cf) plt.xlabel("en m") plt.ylabel("en m") plt.title("Carte de champ et potentiel") plt.streamplot(X,Y,Ex,Ey,density=1.5,color='black') plt.show()