  We describe a numerical method to solve the magnetohydrodynamic (MHD)
equations. The fluid variables are updated along each direction using the flux
conservative, 2nd order, total variation diminishing (TVD), upwind scheme of
Jin and Xin. The magnetic field is updated separately in two-dimensional
advection-constraint steps. The electromotive force (EMF) is computed in the
advection step using the TVD scheme, and this same EMF is used immediately in
the constraint step in order to preserve \grad.B=0 without the need to store
intermediate fluxes. Operator splitting is used to extend the code to three
dimensions, and Runge-Kutta is used to get second order accuracy in time. The
advantages of this code are high resolution per grid cell, second order
accuracy in space and time, enforcement of the \grad.B=0 constraint to machine
precision, no memory overhead, speed, and simplicity. A 3-D Fortran
implementation less than 400 lines long is made freely available. We also
implemented a fully scalable message-passing parallel MPI version. We present
tests of the code on MHD waves and shocks.
