Table des matières Mathematica

Particule chargée dans un champ magnétique dipolaire

1. Introduction

Les particules chargées émises par le Soleil (protons et électrons) se propagent en suivant les lignes du champ magnétique solaire. Ce flux de particules constitue le vent solaire. Lorsqu'elles rencontrent le champ magnétique terrestre, certaines peuvent être piégées et rester confinées dans la magnétosphère, en particulier dans les ceintures de Van Allen.

La simulation suivante permet de retrouver les caractéristiques du mouvement des particules dans les ceintures de Van Allen. On suppose que le champ magnétique terrestre est assimilable à celui d'un dipôle et que les particules chargées sont non relativistes.

2. Équations du mouvement

On se place en coordonnées sphériques, l'axe polaire z étant l'axe du dipôle magnétique, de moment M. Le champ magnétique est :

B=μ0M4π(2cosθer+sinθeθ)r3

Dans le cas non relativiste, l'équation du mouvement d'une particule de masse m et de charge q dans ce champ est :

mdvdt=qvB

On considère le cas d'une charge positive. Soit R une distance qui servira d'unité de longueur pour les calculs. On définit la pulsation cyclotronique :

Ω=qB0m=qμ0M4πmR3

En prenant l'inverse de cette pulsation comme unité de temps, l'équation du mouvement devient :

dvdt=v(2cosθer+sinθeθ)

Les équations différentielles correspondantes en coordonnées sphériques sont :

d2rdt2-r(dφdt)2sin2θ-r(dθdt)2=-sin2θr2dφdtrd2θdt2-r(dφdt)2sinθcosθ+2drdtdθdt=2r2cosθsinθdφdtrd2φdt2sinθ+2rdφdtdθdtcosθ+2drdtdφdtsinθ=1r3(drdtsinθ-2rdθdtcosθ)

3. Résolution numérique

On définit tout d'abord un système différentiel du premier ordre :

systeme={r'[t]==dr[t],
dr'[t]==-Sin[theta[t]]^2/r[t]^2*dphi[t]+r[t]*dphi[t]^2*Sin[theta[t]]^2+r[t]*dtheta[t]^2,
theta'[t]==dtheta[t],
dtheta'[t]==(2*Cos[theta[t]]*Sin[theta[t]]*dphi[t]/r[t]^2+r[t]*dphi[t]^2*Sin[theta[t]]
            *Cos[theta[t]]-2*dr[t]*dtheta[t])/r[t],
phi'[t]==dphi[t],
dphi'[t]==((dr[t]*Sin[theta[t]]-r[t]*dtheta[t]*2*Cos[theta[t]])/r[t]^3-2*r[t]*dphi[t]
            *dtheta[t]*Cos[theta[t]]-2*dr[t]*dphi[t]*Sin[theta[t]])/(r[t]*Sin[theta[t]])}
            

Comme premier exemple, considérons une particule située initialement dans le plan équatorial, avec une dérivée dφdt initialement non nulle :

initial={r[0]==1,dr[0]==0,theta[0]==Pi/2,dtheta[0]==0,phi[0]==0,dphi[0]==0.1}
tmax=200
solution=NDSolve[Join[systeme,initial],{r,dr,theta,dtheta,phi,dphi},{t,0,tmax},
                Method->{'ExplicitRungeKutta',DifferenceOrder->5},
                MaxSteps->Infinity,AccuracyGoal->6]
            

On trace r, theta et phi en fonction du temps :

Plot[r[t]/.solution,{t,0,tmax},PlotRange->{{0,tmax},{0,2}},AxesLabel->{'t','r'}]
plotA.pngplotA.pdf
Plot[theta[t]/.solution,{t,0,tmax},PlotRange->{{0,tmax},{0,Pi}},AxesLabel->{'t','theta'}]
plotB.pngplotB.pdf
Plot[phi[t]/.solution,{t,0,tmax},PlotRange->{{0,tmax},{0,2*Pi}},AxesLabel->{'t','phi'}]
plotC.pngplotC.pdf

On trace aussi la vitesse en fonction du temps pour vérifier qu'elle est constante :

Plot[Sqrt[dr[t]^2+(r[t]*dtheta[t])^2+(r[t]*Sin[theta[t]]*dphi[t])^2]/.solution,{t,0,tmax},
                PlotRange->{{0,tmax},{0,0.2}},AxesLabel->{'t','V'}]
plotD.pngplotD.pdf

Trajectoire dans l'espace :

ParametricPlot3D[{r[t]*Sin[theta[t]]*Cos[phi[t]],r[t]*Sin[theta[t]]*Sin[phi[t]],
                    r[t]*Cos[theta[t]]}/.solution,{t,0,tmax},PlotRange->{{-2,2},{-2,2},{-2,2}},
                    AxesLabel->{'x','y','z'},PlotPoints->1000]
plotE.pngplotE.pdf

On constate que la particule décrit un mouvement de rotation cyclotronique superposé à une dérive lente en longitude.

Pour obtenir un rayon cyclotronique 5 fois plus petit, on divise la vitesse initiale par 5. Ajoutons aussi une vitesse initiale perpendiculaire au plan équatorial :

initial={r[0]==1,dr[0]==0,theta[0]==Pi/2,dtheta[0]==0.02,phi[0]==0,dphi[0]==0.02}
tmax=1000
solution=NDSolve[Join[systeme,initial],{r,dr,theta,dtheta,phi,dphi},{t,0,tmax},
                Method->{'ExplicitRungeKutta',DifferenceOrder->5},
                MaxSteps->Infinity,AccuracyGoal->6]
            
Plot[r[t]/.solution,{t,0,tmax},PlotRange->{{0,tmax},{0,2}},AxesLabel->{'t','r'}]
plotA1.pngplotA1.pdf
Plot[theta[t]/.solution,{t,0,tmax},PlotRange->{{0,tmax},{0,Pi}},AxesLabel->{'t','theta'}]
plotB1.pngplotB1.pdf
Plot[phi[t]/.solution,{t,0,tmax},PlotRange->{{0,tmax},{0,Pi}},AxesLabel->{'t','phi'}]
plotC1.pngplotC1.pdf
Plot[Sqrt[dr[t]^2+(r[t]*dtheta[t])^2+(r[t]*Sin[theta[t]]*dphi[t])^2]/.solution,{t,0,tmax},
                    PlotRange->{{0,tmax},{0,0.1}},AxesLabel->{'t','V'}]
plotD1.pngplotD1.pdf
ParametricPlot3D[{r[t]*Sin[theta[t]]*Cos[phi[t]],r[t]*Sin[theta[t]]*Sin[phi[t]],
                    r[t]*Cos[theta[t]]}/.solution,{t,0,tmax},PlotRange->{{-2,2},{-2,2},{-2,2}},
                    AxesLabel->{'x','y','z'},PlotPoints->1000]
plotE1.pngplotE1.pdf

En superposition au mouvement cyclotronique (visible sur l'angle phi), la particule se dirige tout d'abord vers le pôle sud puis rebrousse chemin à phi=2, traverse à nouveau l'équateur et se dirige vers le pôle nord où elle rebrousse à phi=1,1. Le mouvement est donc constitué d'aller et retours entre les deux hémisphères, avec aussi une dérive lente en longitude (dérive de phi).

Augmentons la vitesse dphi[0] :

initial={r[0]==1,dr[0]==0,theta[0]==Pi/2,dtheta[0]==0.05,phi[0]==0,dphi[0]==0.02}
tmax=1000
solution=NDSolve[Join[systeme,initial],{r,dr,theta,dtheta,phi,dphi},{t,0,tmax},
                Method->{'ExplicitRungeKutta',DifferenceOrder->5},
                MaxSteps->Infinity,AccuracyGoal->6]
            
Plot[r[t]/.solution,{t,0,tmax},PlotRange->{{0,tmax},{0,2}},AxesLabel->{'t','r'}]
plotA2.pngplotA2.pdf
Plot[theta[t]/.solution,{t,0,tmax},PlotRange->{{0,tmax},{0,Pi}},AxesLabel->{'t','theta'}]
plotB2.pngplotB2.pdf
Plot[phi[t]/.solution,{t,0,tmax},PlotRange->{{0,tmax},{0,Pi}},AxesLabel->{'t','phi'}]
plotC2.pngplotC2.pdf
Plot[Sqrt[dr[t]^2+(r[t]*dtheta[t])^2+(r[t]*Sin[theta[t]]*dphi[t])^2]/.solution,{t,0,tmax},
                    PlotRange->{{0,tmax},{0,0.1}},AxesLabel->{'t','V'}]
plotD2.pngplotD2.pdf
ParametricPlot3D[{r[t]*Sin[theta[t]]*Cos[phi[t]],r[t]*Sin[theta[t]]*Sin[phi[t]],
                        r[t]*Cos[theta[t]]}/.solution,{t,0,tmax},PlotRange->{{-2,2},{-2,2},{-2,2}},
                        AxesLabel->{'x','y','z'},PlotPoints->1000]
plotE2.pngplotE2.pdf

Les points de retour sont à des latitudes plus élevées.

Creative Commons LicenseTextes et figures sont mis à disposition sous contrat Creative Commons.