PICKSC

Particle-in-Cell Kinetic Simulation Software Center

UCLA Logo
Particle-in-Cell and Kinetic Simulation Software Center
Funded by NSF and SciDac
  • News
    • PICKSC News
    • Collaborators’ News
    • PICKSC Results
    • Software Releases
  • People
  • Publications
    • Overview
    • PICKSC Members’ Publications
    • Reports and Notes
    • Presentations
  • Software
    • Overview
    • Production Codes
      • Overview
      • OSIRIS
        • OSIRIS WIKI
      • QuickPIC
      • UPIC-EMMA
      • OSHUN
    • Skeleton Codes
      • Overview
      • Serial
      • QuickStart
      • OpenMP
      • Vectorization
      • MPI
      • Coarray Fortran
      • OpenMP/MPI
      • OpenMP/Vectorization
      • GPU
    • UPIC Framework
    • Educational Software
      • Overview
      • JupyterPIC
      • Particle Orbit Visualization
      • Python-PIC-GUI
      • ZPIC
    • Fortran 2003 Techniques
  • Research
    • Overview
    • High-Performance Computing
    • Plasma Based Acceleration
    • Nonlinear Optics of Plasmas
  • Engagement
    • Workshops
    • Opportunities
You are here: Home / Software / UPIC

UPIC

Production Codes  |  Skeleton Codes  |  UPIC Framework  |  Educational Software  |  Fortran 2003 Techniques

UPIC Framework

UPIC 1.0

The UPIC (UCLA Parallel PIC) Framework was developed about 15 years ago to provide trusted components for the rapid construction of new parallel PIC codes. The Idea was to provide libraries as well as reference PIC applications which illustrate their use and users would then enhance and customize these components (You-Pick) to build new codes. The focus was on high accuracy spectral methods. Message-passing was the primary parallelization method, but multi-tasking with pthreads was also supported.

Both electrostatic and electromagnetic codes were supported in 1d, 2d, and 3d, as well as some Darwin codes, with a variety of numerical methods and boundary conditions. The codes QuickPIC, QPIC, UPIC-Emma and others were built from these components. The software design was layered with the lowest layer in Fortran77. Higher layers in Fortran95 could either be procedural, using using wrappers, or object-based for more complex projects.

UPIC 2.0

Since then, parallel programming has become increasingly complex, with 3 levels of parallelism required to obtain optimal performance on advanced architectures. Since most of the time is spent processing particles, it was important to solidify the data structures and algorithms needed for optimal particle processing before implementing a new framework. A variety of small skeleton PIC applications were developed to experiment with different levels of parallelism and programming models while maintaining portability as much as possible. In addition, Fortran2003 has many useful features for high performance scientific computing, including complete support for object-oriented programming and interoperability with C. We plan to expand beyond spectral methods and increasingly support mixed language programming.  As the new data structures and algorithms converge, a new UPIC Framework is evolving for the 21st century.

The 2D and 3D components of the UPIC 2.0 framework are open source.  They may be accessed on the public GitHub repository.

The latest version is UPIC 2.0.4. The major new features here are support for vectorization and Python.  These codes can now be run with 3 levels of parallelism (Vector/MPI/OpenMP) or some subset.  Python only supports Vector/OpenMP.  UPIC 2.0.4 may be directly downloaded here:  mpbeps2_204.tar.gz (2D) and mpbeps3_204.tar.gz (3D).

The 3rd version (UPIC 2.0.3) included the major new features of restart capabilities and particle diagnostics. Codes in this version and earlier can be compiled to run with 2 levels of parallelism (MPI/OpenMP) or OpenMP only. UPIC 2.0.3 may be directly downloaded here:  mpbeps2_203.tar.gz (2D) and mpbeps3_203.tar.gz (3D).

The 2nd version (UPIC 2.0.2) included the major new features of namelist inputs, a full set of field diagnostics, and initialization with non-uniform densities. UPIC 2.0.2 may be directly downloaded here:  mpbeps2_202.tar.gz (2D) and mpbeps3_202.tar.gz (3D).

The first version (UPIC 2.0.1) contained only the basic particle loop and field solvers, with a uniform plasma and no diagnostics except energy.  UPIC 2.0.1 may be directly downloaded here:  mpbeps2_201.tar.gz (2D) and mpbeps3_201.tar.gz (3D).

© 2014 UC REGENTS TERMS OF USE & PRIVACY POLICY

  1. HOME
  2. NEWS
  3. PEOPLE
  4. PUBLICATIONS
  5. RESEARCH
  6. SOFTWARE
  7. OPPORTUNITIES