How Does A Halbach Array Work?