Un piège à neutrons constitué de 6 fils rectilignes infinis, répartis aux sommets d’un hexagone régulier de rayon et parcourus par des courants de même intensité , est représenté ci-dessous. Les fils sont numérotés de à .
Les fils pairs sont parcourus par un courant selon tandis que les fils impairs sont parcourus par un courant dans le sens de .
1/ On considère le fil numéro , dont on note et les coordonnées.
Montrer que les composantes cartésiennes du champ magnétique créé par ce fil en un point sont
Le champ magnétique créé par un fil à l’origine du repère parcouru par un courant s’écrit
Le vecteur de base doit être exprimé dans la base , . On peut pour cela écrire que avec , soit . On obtient le champ magnétique créé par un fil à l’origine du repère parcouru par un courant :
Pour trouver le champ créé par le fil , situé en , il suffit de translater le repère pour placer le fil à l’origine, c’est-à-dire remplacer par et par dans les expressions précédentes, et de remplacer par le courant du fil :
2/ Justifier que les composantes du champ magnétique total en un point s’écrivent
Comment peut-on exprimer les coordonnées des six fils en fonction du rayon et de ?
D’après le théorème de superposition, le champ magnétique total en un point est la somme des champs créés par chacun des six fils.
Deux fils voisins sont séparés d’un angle . Le fil est donc repéré par les coordonnées polaires , soit en coordonnées cartésiennes .
3/ Compléter la fonction champ(x, y), qui renvoie les composantes du champ magnétique total en un point .
import numpy as np
import matplotlib.pyplot as plt
mu_0 = 4e-7 * np.pi # perméabilité du vide en H/m
a = 1e-2 # rayon de l'hexagone en m
I = 200 # intensité en A
def champ(x, y):
"""Composantes (Bx, By) du champ créé en (x, y) par les six fils."""
...
return Bx, ByBx et By à 0, puis leur ajouter la contribution de chaque fil dans une boucle for k in range(6).xk et yk du fil .def champ(x, y):
Bx, By = 0, 0
for k in range(6):
xk = a * np.cos(k * np.pi / 3)
yk = a * np.sin(k * np.pi / 3)
Bx += - (-1)**k * mu_0 * I / (2 * np.pi) * (y - yk) / ((x - xk)**2 + (y - yk)**2)
By += (-1)**k * mu_0 * I / (2 * np.pi) * (x - xk) / ((x - xk)**2 + (y - yk)**2)
return Bx, By4/ Calculer numériquement le champ au centre . Retrouver ce résultat par un argument de symétrie.
print(champ(0, 0))Le champ magnétique au centre est nul (aux erreurs d’arrondi près).
Le plan contenant les fils 0 et 3 est un plan de symétrie de la distribution de courant, lui est orthogonal.
On peut dire de même pour le plan contenant les fils 1 et 4 et le plan contenant les fils 2 et 5.
La seule façon pour d’être orthogonal à ces trois plans de symétrie est d’être nul.
La fonction plt.streamplot(X, Y, Bx, By) trace les lignes de champ d’un champ de vecteurs plan dont on connait les composantes Bx et By aux points d’une grille X, Y. Une telle grille s’obtient avec np.meshgrid.
5/ Compléter le programme ci-dessous pour tracer la carte des lignes de champ. Commenter leur allure au voisinage des fils.
x = np.linspace(-1.5 * a, 1.5 * a, 300)
X, Y = np.meshgrid(x, x) # grille de 300 × 300 points
Bx, By = ...
plt.streamplot(X, Y, Bx, By, density=2)
plt.axis('scaled')
plt.show()Bx, By = champ(X, Y)Près de chaque fil, on retrouve le champ créé par ce fil : les lignes de champ sont des cercles centrés sur le fil, parcourus dans le sens trigonométrique autour des fils pairs (courant ) et dans le sens horaire autour des fils impairs (courant ).
Les neutrons () portent un moment magnétique . Placé dans un champ magnétique, un neutron possède l’énergie potentielle magnétique .
La fonction plt.pcolormesh(X, Y, Z) représente par des couleurs (carte de chaleur) les valeurs d’un tableau Z calculé aux points de la grille X, Y. La fonction plt.colorbar() affiche l’échelle des couleurs.
6/ Compléter le programme ci-dessous pour tracer la carte de l’énergie potentielle magnétique des neutrons. Où les neutrons ont-ils tendance à se placer ?
m = 1.675e-27 # masse du neutron en kg
mu = 9.7e-27 # moment magnétique du neutron en J/T
B = ... # norme du champ aux points de la grille
E_mag = ... # énergie potentielle magnétique en J
# coordonnées en mm ; vmax sature les couleurs près des fils, où E_mag diverge
plt.pcolormesh(X * 1e3, Y * 1e3, E_mag, vmax=1.5e-28)
plt.colorbar(label="E_mag (J)")
plt.xlabel("x (mm)")
plt.ylabel("y (mm)")
plt.axis('scaled')
plt.show()np.sqrt(Bx**2 + By**2).B = np.sqrt(Bx**2 + By**2)
E_mag = mu * BL’énergie potentielle magnétique est nulle en et croît quand on s’en éloigne, jusqu’aux fils. Poussés vers les faibles énergies potentielles, les neutrons ont tendance à se placer au voisinage de .
On tient maintenant compte de la pesanteur. L’axe est vertical et orienté vers le haut.
7/ Exprimer l’énergie potentielle totale d’un neutron. Compléter le programme ci-dessous pour en tracer la carte, avec ses lignes de niveau (sur lesquelles est constante), puis la commenter.
g = 9.8 # accélération de la pesanteur en m/s²
E_p = ... # énergie potentielle totale en J
plt.pcolormesh(X * 1e3, Y * 1e3, E_p, vmin=-5e-29, vmax=5e-29)
plt.colorbar(label="E_p (J)")
plt.contour(X * 1e3, Y * 1e3, E_p, levels=np.linspace(-5e-29, 5e-29, 21), colors='k', linewidths=0.5)
plt.xlabel("x (mm)")
plt.ylabel("y (mm)")
plt.axis('scaled')
plt.show()L’énergie potentielle totale est la somme des énergies potentielles magnétique et de pesanteur : .
E_p = mu * B + m * g * YLa pesanteur fait croître vers le haut. Le creux d’énergie potentielle n’est plus en mais un peu en dessous, vers : les lignes de niveau s’y referment. Plus bas, entre les fils 4 et 5, diminue de nouveau : c’est par là que les neutrons pourraient s’échapper.
8/ Compléter le programme ci-dessous pour tracer le long de l’axe vertical , pour entre et . Les neutrons ont-ils une position d’équilibre stable ? Le piège confine-t-il les neutrons ?
y = np.linspace(-a, a, 1000)
Bx, By = champ(0, y) # points de l'axe x = 0
E_p = ...
plt.plot(..., ...)
plt.xlabel("y (mm)")
plt.ylabel("E_p (J)")
plt.grid()
plt.show()E_p = mu * np.sqrt(Bx**2 + By**2) + m * g * y
plt.plot(y * 1e3, E_p)Le long de l’axe, présente un minimum local en , suivi d’une barrière en . Sur la carte, les lignes de niveau se referment autour de ce point : c’est aussi un minimum selon . C’est donc une position d’équilibre stable : un neutron qui s’en écarte un peu dans le plan y est ramené, et le piège le confine selon et . Les fils étant infinis, rien ne le retient en revanche selon .
Ce n’est pas vrai pour toute intensité : pour , décroit continument quand on descend le long de l’axe. Il n’y a pas de minimum local, et les neutrons tombent entre les fils 4 et 5.