The UCLA Parallel PIC Framework (UPIC) is a unified environment for the rapid construction of new parallel PIC codes [decyk:07]. It provides trusted components from UCLA’s long history of PIC development, in an easily accessible form, as well as a number of sample main codes to illustrate how to build various kinds of codes. UPIC contains support for electrostatic, Darwin, and fully electromagnetic field solvers, as well as relativistic particles. The field solvers are spectral (FFT) based. Open (Vacuum) boundary conditions for the electrostatic solver (using Hockney’s scheme) and dynamic load balancing for both particles and fields have been implemented. It also contains conducting (Dirichlet) and Neumann boundary conditions as well as mixed periodic/conducting boundary conditions. The UPIC FFT based field solvers and deposition schemes are in general more accurate and less noisy than those in OSIRIS (and other finite difference based PIC codes) at the expense of greater difficulty implementing open boundary conditions, and more overhead for the field solver on parallel machines. Because of their differences, these codes are complimentary.
UPIC supports both distributed memory parallelism using MPI and shared memory parallelism using pthreads, or both. Recently, some pieces were ported to GPUs. We will discuss this in the Readiness Section. QuickPIC was constructed using the UPIC Framework.