Cette page montre le calcul du champ magnétique créé par des bobines de Helmholtz, modélisées par deux spires. La méthode et le module python utilisés sont décrits dans Boucles circulaires coaxiales.
Les spires ont par convention un rayon égal à 1. L'unité du champ magnétique calculé est alors :
où a est le rayon des spires et I l'intensité du courant. Par exemple pour a=0,1 m et I=1 A, l'unité est de 10-6 T.
import os os.sys.path.append("../pyspire") from SpiresCoaxiales import * import numpy from matplotlib.pyplot import *
Les bobines de Helmholtz sont consituées de deux spires de rayon 1 espacées de 1
max=5.0 bobines = SystemeSpires(-max,max,-max,max) bobines.ajouter(Spire(1.0,0.5,1.0)) bobines.ajouter(Spire(1.0,-0.5,1.0))
Tracé des lignes de champ :
figure(figsize=(7,7)) bobines.plot_lignes([[0.0,0.0],[0.15,0.0],[0.3,0.0],[0.45,0.0],[0.6,0.0],[0.75,0.0],[0.9,0.0]],'b') axis([-max,max,-max,max]) xlabel('z') ylabel('r') grid()
Champ magnétique axial sur l'axe :
z = numpy.arange(-5.0,5.0,0.01) bz = bobines.Bz_z(0.0,z) figure() plot(z,bz) xlabel("z") ylabel("Bz") title("r=0") grid()
Champ magnétique axial sur le plan médian (plan z=0.0) :
x = numpy.arange(-3.0,3.0,0.01) bz = bobines.Bz_x(x,0.0) figure() plot(x,bz) xlabel("r") ylabel("Bz") title("z=0") axis([-3,3,-5,5]) grid()
On s'intéresse à la trajectoire d'une particule chargée dans le plan méridien tournant (coordonnées cylindriques z et r). La particule part d'un point très proche de l'axe, là où le champ est très faible. La vitesse initiale axiale est constante; on fait varier la vitesse innitiale radiale.
figure() r0 = 0.001 z0=-4.0 tmax=100.0 te=0.01 [r1,theta1,z1] = bobines.trajectoire(1.0,r0,z0,0.05,1.0,tmax,te) plot(z1,r1,'r') [r2,theta2,z2] = bobines.trajectoire(1.0,r0,z0,0.02,1.0,tmax,te) plot(z2,r2,'g') [r3,theta3,z3] = bobines.trajectoire(1.0,r0,z0,0.1,1.0,tmax,te) plot(z3,r3,'b') axis([-5.0,5.0,-1.0,1.0]) xlabel('z') ylabel('r') grid()
Rotation du plan méridien pour ces trajectoires :
figure() plot(z1,theta1,'r') plot(z2,theta2,'g') plot(z3,theta3,'b') xlabel('z') ylabel('theta') grid()