Beam Physics Code Repository (BPCR) Home - NIU - Northern Illinois Center for Accelerator and Detector Development (NICADD)

NIU Beam Physics Code Repository

Beam Physics Code Repository

This website is dedicated to sharing our group's code development results with anyone interested in charged particle beam dynamics. Most of our codes are COSY Infinity-based, the general purpose nonlinear dynamics code with an underlying arbitrary order Differential Algebraic (DA) engine. It has its own minimalist scripting language that even novice users can master quickly. Moreover, any application developed in COSY can be retrofitted with a nice Java-based custom-GUI from within the code with only a few additional commands.

Check out our projects listed in the menu to the left!

Each menu item contains a project/code that can be downloaded with a dropdown menu for easy access to its subsections. The Updates section will contain the latest news for each project.  In addition to an overview page describing the code in broad lines, there are pages allowing easy downloading of the code(s), viewing its documentation/manual, and downloading examples/application running the code(s). Always, only the latest versions will be posted. You may contact us by clicking the Contact Us menu item.

Guiding Principles

There are a few principles that guide(d) the development of these codes:

  • Beam Physics: although beam physics is often used synonymously with accelerator physics, we are modeling beams, their dynamics, and develop new simulation techniques for beam physics, with main applications to accelerator science, but not only
  • Computational Science: in addition to "mere" manipulation of numbers, we use computers to handle functions, more precisely their truncated Taylor expansions, in pretty much the same way as we do with numbers (hence the DA methods), and much more
  • Accuracy and Efficiency: what is deemed accurate and efficient is problem dependent. Given the "right" circumstances, one can break any beam dynamics code. Using any code as a black box, without understanding the underlying approximations, limitations and domain of applicability is not wise, to say the least.
  • High Performance Computing: first, algorithmic improvements usually beat hardware improvements, but improvements in both multiply. Second, although there are pseudo-methods to this effect, strictly speaking time doesn't parallelize. Therefore, efficient time stepping at varying accuracies is paramount. Unfortunately, there is still no completely satisfactory solution to this problem; much remains to be done.
  • Modeling of particle interactions: the preceding principles natually lead to conclusions regarding our approach to particle interactions, namely that modeling them depends on the purpose of the applications (want to run on a laptop, only bulk transverse effects are interesting, and want a low accuracy approximate result fast, or as realistic as possible, with a gazzilion particles, very accurately for a very long time, and I want to get right every minute detail of phase space structure). Some of our modest attempts at these issues are our projects on the left. In our opinion, this topic looks much better than the time stepping mentioned above. However, just because we are reaching for the exascale in a few years, it does not mean that some of the existing codes have to scale all the way to exascale; instead, one should think about why codes were developed in the first place, perhaps in a different era, with very different computational power availability and application requirements.