A blog of Python-related topics and code.

ExB drift for constant crossed electric and magnetic fields

A charged particle moving in an electromagnetic field exhibits a "drift" in addition to its gyromotion and any acceleration due to a component of the electric field parallel to the magnetic field. This drift motion has velocity $(\boldsymbol{E}\times\boldsymbol{B})/B^2$ and is therefore known as the $\boldsymbol{E}\times\boldsymbol{B}$ drift. In the simple case of constant, crossed magnetic and electric fields, the Lorentz equation of motion, $m\ddot{\boldsymbol{r}} = q(\boldsymbol{E} + \dot{\boldsymbol{r}} \times \boldsymbol{B})$ can be solved analytically to give the particle's trajectory: $$ \begin{align} x &= \frac{1}{\Omega}\left( v_\perp - \frac{E_y}{B_z}\right)\cos \Omega t + \frac{E_y}{B_z},\\ y &= \frac{1}{\Omega}\left( v_\perp - \frac{E_y}{B_z}\right)\left(1 - \cos \Omega t \right),\\ z &= 0, \end{align} $$ where the fields are $\boldsymbol{B} = (0,0,B_z)$ and $\boldsymbol{E} = (0,E_y,0)$; the initial velocity is $\boldsymbol{v} = (0,v_\perp,0)$; the gyrofrequency is $\Omega = qB_z/m$; and $m$ and $q$ are the particle's mass and charge respectively.

Depicting a torus as an SVG image

SVG may not be the most obvious choice for depicting a 3-D object, but with some care over the perspective and ordering of the plotted points, it can be done.

Generating an SVG clock face

This is a simple Python function to generate a clock face indicating a specified time. It can be used in the script below to generate 1, 2, 4 or 6 faces indicating random times to teach children how to tell the time. Run this script from the command line as

Truchet Tiles

Truchet Tiles are decorated squares which can tile a plane to create a pattern. For example, the four tiles:

Reaching Orbit

The following code illustrates the effect of the initial velocity on the dynamics of an object released in a gravitational field. A very simple numerical integration of the equation of motion gives the trajectory, which is plotted below for four different initial speeds for a rocket released at 200 km altitude parallel to the Earth's surface. At this altitude the speed needed for a circular orbit is about 7.8 km/s. You can read more about this kind of simulation at the Wikipedia page for Newton's cannonball.