UPIC: A framework for massively parallel particle-in-cell codes
The UCLA Parallel Particle-in-Cell (UPIC) Framework, is designed to provide trusted components for building a variety of parallel particle-in-cell (PIC) codes. It is based on the idea that most PIC codes share common algorithms, such as particle pushing and deposit subroutines, solvers for electromagnetic fields, as well as parallel data management, such as passing particles and fields between processors. The framework provides the optimized common algorithms, as well as various skeleton (template) main programs. The user provides specialized subroutines that are specific to his or her problem. It is based on Fortran95, but low level subroutines can easily be called from other languages. Codes based on the framework can run on as few as one processor to as many as 2000, and examples will be presented.
particle-in-cell codes parallel computing design patterns