Ce document montre le calcul numérique du champ magnétique créé par des nappes de courant planes.
Le potentiel vecteur vérifie l'équation de Poisson :
On se place dans le cas d'un problème bidimensionnel, où la densité de courant est selon l'axe Oz et indépendante de z. L'équation de Poisson devient alors :
Le champ magnétique est obtenu par
Les lignes de champ magnétique sont définies par la relation différentielle :
qui devient :
Les lignes de champs sont donc les lignes d'égales valeurs de Az
On considère une nappe de courant, c'est-à-dire un courant localisé sur une plaque très mince.
L'équation de Laplace pour le potentiel est résolue numériquement par la méthode des différences finies et la méthode itérative de Gauss-Seidel.
Le module python utilisé est décrit dans Équation de Poisson : programme Python.
La nappe sera représentée par un segment sur le maillage. La conditions limite sur les bords du domaine est Az=0.
Le maillage carré comporte 256 par 256 mailles. Le segment représentant la nappe de courant est placé au milieu, parallèle à l'axe Ox. Il est défini sur un maillage réduit de 16 par 16 mailles.
from matplotlib.pyplot import * import math import numpy import poisson.main n=8 p=4 levels = n-p+1 laplace=poisson.main.Poisson(p,p,levels,1.0,1.0,-0.5,-0.5) laplace.laplacien() laplace.dirichlet_borders(0.0) laplace.source_polygon(6,8,[4],[0],1.0) result=laplace.opencl_iterations_norm(50,50,omega=1.9) figure(figsize=(8,4)) plot(result[0],result[1]) xlabel('niter') ylabel('norm')
La norme de la matrice des valeurs de Az permet de contrôler la convergence des itérations :
plotA.pdfAz=laplace.get_array() Bx=laplace.get_derivY() By=-laplace.get_derivX() figure(figsize=(8,8)) extent = laplace.get_extent() contour(Az,30,extent=extent) imshow(~laplace.get_mask(),extent=extent,alpha=0.5, cmap=cm.gray) xlabel('x') ylabel('y') grid()
Tracé des lignes de champ :
plotB.pdfTracé du champ sur l'axe Oy :
figure() y=laplace.get_y() plot(y,Bx[:,2**(n-1)]) xlabel('y') ylabel('Bx') grid()plotC.pdf
laplace.close()
Cette configuration permet de modéliser une bobine ou bien un aimant permanent aimanté dans la direction (Ox).
n=8 p=4 levels = n-p+1 laplace=poisson.main.Poisson(p,p,levels,1.0,1.0,-0.5,-0.5) laplace.laplacien() laplace.dirichlet_borders(0.0) laplace.source_polygon(6,9,[4],[0],1.0) laplace.source_polygon(6,7,[4],[0],-1.0) result=laplace.opencl_iterations_norm(50,50,omega=1.9) figure(figsize=(8,4)) plot(result[0],result[1]) xlabel('niter') ylabel('norm')plotD.pdf
Az=laplace.get_array() Bx=laplace.get_derivY() By=-laplace.get_derivX() figure(figsize=(8,8)) extent = laplace.get_extent() contour(Az,30,extent=extent) imshow(~laplace.get_mask(),extent=extent,alpha=0.5, cmap=cm.gray) xlabel('x') ylabel('y') grid()plotE.pdf
figure() y=laplace.get_y() plot(y,Bx[:,2**(n-1)]) xlabel('y') ylabel('Bx') grid()plotF.pdf
laplace.close()