Motion of a Charge in the Field of a Magnetic Monopole

Franz Michel,  Bernhard Schnizer

Institut fuer Theoretische Physik
		Technische Universitaet Graz
		A-8010  Graz, Austria
		Projekt Multimediale Lehre des
		Zentralen Informatikdienstes der TU Graz

		2002-12-13

\(\(\(
\)\(\(\(Begin["monopol`"]\) \)\(;\)\(\(Clear["momopol`*"]\) \)\(;\)\(\ \)\)\)\)

Introduction: Equations of Motion

The equations of motion for a point particle (masse m, charge e) in the field of a magnetic monopole (strength  g)
located at  r = 0  are:
		\(TraditionalForm\`\(\(	\)\(m \(\(\(\ \)\(r\&→\)\)\& .. \)\ \  = \ \ \(e\ \((\(\(\ \)\(r\&→\)\)\& . \ \ ×\ \ B\&→\ )\)\  = \ \ e\ g\ \(\(μ\_0\)(\(\(\ \)\(r\&→\)\)\& . \ \ ×\ \ \ r\&→\ )\)\ 1\/r\^3\)\)\)\)				(1)
Constants of the motion are kinetic energy = total energy 
			E  =  (m/2)((\(\(\(\(\ \)\(r\&→\)\)\& . \)\(\ \)\))^2)    = const.;
the square of angular momentum 
			(L^2)   =   (m^2)  (r^4)si\(TraditionalForm\`\(n\^2\) θ\ \ ϕ\& . \^2\ \ \  = \ \((\ m\ r\&→\_0\ \ ×\ \(\(\ \)\(r\&→\)\)\& . \_0\ )\)\^2\)   = const.;
and Poincaré's vector :
			(Overscript[(A ),  →])  =    (Overscript[L, →])  -    e g (Subscript[μ, 0])  (Overscript[r, →]) /r     = const.
The trajectory is confined to a cone, whose axis is given by the vector (Overscript[(A ),  →]),
whose apical angle is given by  
			θ 
=  arccos(-  e g (Subscript[μ, 0])/A).

Basic Formulae

For the present solution the Poincare vector is aligned with the vertical (=  z-axis).
The initial position  (Subscript[((Overscript[r,  →]) ), 0])  of the charge is at the point of reflection:

vr0  =  rm {Sin[θ], 0, Cos[θ]}

rm is the minimum radius,  θ is the apical angle.

br0  =  PowerExpand[Sqrt[ vr0 . vr0 // Simplify]]

At this point the velocity  \(TraditionalForm\`\(\(\(\ \)\(r\& → \)\)\& . \)\_0\)   is perpendicular to the vectors (Overscript[(A ),  →])and   (Subscript[((Overscript[r,  →]) ), 0]):

vv0  =  rm pp0 {0, Sin[θ], 0}

The angular momentum vector  and its length are:

vl  =  Cross[vr0, vv0]

bl  = PowerExpand[Sqrt[ vl . vl // Simplify]]

en  =  1/2 vv0 . vv0

va  =  vl  -  α vr0/br0

The initial data vr0 and vv0  assure that the Poincaré  vector    va   is aligned with the  z-axis.

sp  =  Solve[va[[1]]  ==  0,  pp0] // Flatten

va  /.  sp  // Simplify

Parameters

va  //. Join[sp,  sv]

Start Button for Animations

start = 
        ButtonBox[
          StyleBox["Run Animation", "Title", 
            FontFamily -> "Helvetica"], 
          ButtonFunction :> 
            FrontEndExecute[{SelectionMove[EvaluationNotebook[], Before, 
                    ButtonCell] SelectionMove[EvaluationNotebook[], 
                    Previous, CellGroup] SelectionAnimate[
                    SelectedNotebook[], AnimationDisplayTime -> zeit]}], 
          ButtonEvaluator -> Automatic, 
          Active -> True];

Solving the Equations of Motion

vr  =  {x[t], y[t], z[t]}; 
br  =  Sqrt[vr . vr];

vv  =  D[vr, t];

vb  =  D[vv, t];

eqm  =  
      Thread[vb  ==  α Cross[vv, vr]/br^3]

ad  =  
      Thread[(Join[vr, vv]  /.  t  ->  0)  ==  
          Join[vr0, vv0]]

eqn  =  Join[eqm, ad]  //. Join[sp,  sv]

sr  =  {x, y, z};

so  =  NDSolve[eqn, sr,  {t, -tm, tm}] // Flatten

Plotting the Field and the Trajectory

Field lines giving the cone to whose surface the trajectory is confined:

fl  =  
        Graphics3D[
          Prepend[Prepend[
              Table[Line[{{0, 0, 0}, 
                    rl {Sin[θ] Cos[fp], Sin[θ] Sin[fp], 
                          Cos[θ]}  /. sv}], {fp, 0, 2  π, 
                  2  π/nl}], Hue[ .3]], 
            Line[{{0, 0, 0}, {0, 0, rl}}]]];

\(\(pol\  = 
        Graphics3D[{\ 
            Text[\*""\!\(A\&→\)"", {0, 0, rl\  + \  .18}], 
            PointSize[ .02], Point[{0, 0, 0}]}];\)\)

SetOptions[ParametricPlot3D, 
        DisplayFunction  ->  Identity];

Rim of the cone:

pc  =  
        ParametricPlot3D[
          Evaluate[
            Join[rl {Sin[θ] Cos[fp], Sin[θ] Sin[fp], 
                    Cos[θ]}  /. sv, {Hue[ .3]}]], {fp, 0, 
            2  π}];

t1  =  -9;  t2  =   9;

trajectory before  (blue), after (red)  reflection respectively.

pn  =  
        ParametricPlot3D[
          Evaluate[Join[vr /. so, {Hue[0.7]}]],  {t, t1, 0}];

pp =  
        ParametricPlot3D[
          Evaluate[Join[vr /. so, {Hue[0]}]],  {t, 0, t2}];

tr  =  
        Show[pn, pp, pol, fl, pc, PlotRange  ->  All,  
          ImageSize  ->  500,  Boxed  ->  False,  
          Axes  ->  False, 
          DisplayFunction  ->  $DisplayFunction,  
          TextStyle  ->  {FontSize  ->  16}];

The Motion of a Charge

Positions

np  =  4;  tl  =  Range[t1, t2, 1/np];
tp  =  
        Table[Point[
            Evaluate[(vr /. so) ] /.  t  ->  tl[[k]]], {k, 
            Length[tl]}];

Show[tr, Graphics3D [tp]];

Animation

Table[
        Show[tr, Graphics3D [tp[[k]]]], {k, 
          Length[tp]}];
SelectionMove[EvaluationNotebook[], After, 
        EvaluationCell];
SelectionMove[EvaluationNotebook[], Next, CellGroup];
FrontEndTokenExecute["OpenCloseGroup"];
start /. zeit -> 0.1 // DisplayForm

End[];