Projects

Our projects involve algorithm and code development for high-fidelity modeling, simulation and optimization of charged particle beams and systems based on them. We emphasize state-of-the art algorithms for force computation, time propagation, structure preservation and capabilities for handling large-scale systems employing high-performance computing resources efficiently.

Most of our codes are based on COSY Infinity, the general purpose, nonlinear dynamics code with an underlying arbitrary order differential algebraic (DA) engine. Any application developed in COSY can be retrofitted with a Java-based, custom GUI from within the code with only a few additional commands.

PHAD is a COSYScript written for COSY Infinity. PHAD is an efficient method for solving equations of motion of a large number of charged particles in beams interacting through Coulomb forces. PHAD combines the adaptive, multilevel fast multipole method with our Simo integrator via Strang splitting. Therefore, its main features include implementation of algorithms of optimal complexity for force computations, provable best efficiency for time propagation, combined with an attractive method to reduce the number of FMM calls while preserving symplecticity.

Currently, we offer an example of beamlets simulation for detailed observation of space charge dynamics in cold beams. The electron cooling application is under development. Check back soon for an electron cooling example.

Downloads

phad.zip.

Examples

phad_examples.zip. (file includes beamlets example with documentation.)

Documentation

PHAD manual.

Applications

Updates

January 10, 2020
  • Within the Simo integrator: Improved accuracy by recomputing optimal time stepsize at some high orders for particles that reach those orders.
  • Incorporated a tracking window and modified particle tracking indices.
  • Implemented relaunch capability.
  • Updated documentation.Fixed bug in initial relg scaling of z-coordinate passed to FMM.
May 9, 2019
  • Fixed bug in initial relg scaling of z-coordinate passed to FMM.

February 22, 2019
  • Updated PHAD for FMM that takes cosy binary input.
  • Fixed output of particle betas.
November 14, 2018
  • Improved particle index storage.
  • Minor timer improvement.
October 10, 2018
  • Updated PHAD description.
  • Added beamlets example.
October 4, 2018
  • Updated PHAD to new FMM.
  • Added Simo integrator to PHAD.
October 28, 2017
  • Added PHAD documentation.
June 5, 2017
  • Uploaded PHAD code.
  • Updated publications using PHAD.
  • Added PHAD description.
Apr. 7, 2015
  • Uploaded publications using PHAD.

The Poisson integral solver with curved surfaces (PISCS) is a package written in COSYScript for MSU COSY Infinity v10.1. PISCS is a 3D Poisson boundary value problem-solver accelerated by the fast multipole method (FMM). In this case, the Poisson BVP represents the electrostatic interactions within a charged particle distribution within specified boundaries. High accuracy solutions are feasible for realistic enclosures and boundary conditions.

Downloads

Documentation

Examples

Applications

Updates

October 2, 2018
  • Formatting PISCS to be robust to different COSY versions.
  • Fixed a sign error in the calculation of the fields for near evaluation.
  • Implemented a refinement procedure to deal with near boundary instabilities.
  • Fixed a minor inconsistency in the boundary condition file for 1st order structures.
  • Updated documentation.
July 20, 2017
  • Added 'targets' keyword.
  • Added PISCS manual and example.

One of the oldest problems to remain analytically unsolvable, except in specific cases or by practically useless series solutions, is the calculation of gravitational or electrostatic interactions between N bodies. Many numerical methods have been developed over the last century to address this problem. This is our take on the computational N-body problem.

The simulation code uses COSY Infinity. There are two variants that differ with respect to the numerical integrator used internally. The earlier version is a Picard iteration-based integrator, and the newer version implements a more sophisticated integrator, which we termed the Simo integrator. The basic N-body simulation code has a fixed time step and order. The Simo N-body simulation code is adaptive and has a variable order with optimized time step size and order. The MPI Simo N-body simulation code is a parallelized version of the Simo N-body simulation code that can be run using the MPI COSY.

Downloads

Documentation

Examples

Applications

Simo N Body Simulation
Basic N Body Simulation

Updates

January 10, 2020
  • The mpi code: Improved accuracy by recomputing optimal time stepsize at some high orders for particles that reach those orders
September 19, 2019
  • The mph code:
    • Improved memory usage to be almost independent of the number of processors.
    • Added boundaries to eliminate particles outside specific limits in the xy-plane.
    • Bug fixes.
  • Added an example for the mpi code.
October 15, 2018
  • Added mpi version of Simo integrator.
  • Added manual for mpi version of Simo integrator.
  • Updated serial Simo integrator (Minor modifications).
February 19, 2018
  • Added application "Picard iteration-based variable-order integrator with dense output employing algorithmic differentiation."
June 5, 2017
  • Added application "An accurate and efficient numerical integrator for pair-wise interactions."
June 2, 2017
  • Added Simo integrator, documentation and example.
  • Corrected equations in Basic integrator documentation.
  • Corrected permittivity constant.
April 7, 2015
  • Uploaded documentation and examples.
March 6, 2015
  • Fixed bugs related to the treatment of relativistic cases.
November 25, 2014
  • Modified to account for the relativistic factor, γ.
Oct. 22, 2014
  • Reduced the number of variables used in the code.
  • The iterations are done in one loop instead of two.
  • Changed the memory of the DA vectors from being fixed to be dependent on the number of particles.
  • All these changes should improve the efficiency and the speed of the code.
  • Note that this version does not take into account the radius of convergence error as we are trying to find a better method for that.
Mar 20, 2014
  • Uploaded V1.0.

This is a reasonably well-optimized code for our differential algebraic multilevel fully adaptive 3D fast multipole method for the Laplace kernel of point particles in Cartesian basis. The data structures are coded in standard, portable C++ to allow dynamic memory management and bit-level operations, in addition to speed and easier parallelization. The expansions and translations are done in a compact COSYScript code to take advantage of the following:

  • DA data types that allow automatic high-order truncated Taylor expansions with machine precision.
  • Efficient function composition.
  • Fast polynomial evaluation.

More details and examples can be found in the documentation.

Downloads

Documentation

Examples

  • Example files.
    (Instructions for examples may be found in the 3D FMM manual.)

Applications

Updates

February 6, 2019
  • Added additional cosy binary input option.
  • Added initialization of .status and .output files.
  • Improved forward compatibility with COSY data types.
October 9, 2018
  • Minor bug fix in summary file.
June 5, 2017
  • New, more flexible options for input distribution specification and formatting.
  • Optimized multipole to local operator.
  • Shared memory parallelization with Cilk+.
  • Distributed memory parallelization with MPI.
  • Minimization of number and size of messages passed using MPI.
  • Platform independence (options in the make file).
  • GPU-ready.
November 12, 2015
  • Minor bug fix.
June 23, 2015
  • Changed the format of the fmm.input file.
  • Data files are in the subfolder named data.
  • Data files: charges_1k.dat, N_1k.ssv.
  • main.cpp: preprocessor directive, #include , is added.
May 13, 2015
  • Two new source files are included: getopt.h and getopt.cpp
  • In main.cpp
  • FindElement() is replaced with binary_search()
  • A bug fixed in topTomiddleandBottomTrees()
March 9, 2015
  • particles.cpp: Changed the dZero value.
  • main.cpp: Fixed a bug in findElement().
August 18, 2014

Efficiency improvements.

COMFY is a COSY Infinity plug-in written in COSYScript for v9.1 to extend its capabilities to include transverse space charge in beam dynamics. It allows for self-consistent space charge calculations, as well as space charge transfer map extractions using truncated Taylor expansions. The modes include transverse mean field estimation (fast, with low-medium accuracy) and discrete open N-body Poisson solver (slower, with high accuracy).

COMFY can calculate charged particle interactions through two different methods. The method of statistical moments (MoM) is used to calculate the space charge transfer map in the mean field sense. The transfer map is then used for particle advancement. The fast multipole method (2D single-layer-FMM) solves the N-body Poisson problem with open boundary conditions for particle tracking. A hybrid mode may also be used, where the moment method calculates the space charge map and the fast multipole method advances the particles.

You will need to install COSY first. You can run COMFY in parallel or serially. To run COMFY in parallel, you will need an MPI package such as OpenMPI or Intel MPI. To use COMFY, you will need the customized cosy.fox and comfy.fox files and the COMFYFILES folder included in the comfy.zip download. Please read the COMFY manual for more details on installation and use.

Downloads

COMFY

Documentation

COMFY manual

Examples

COMFY examples

Application

Updates

May 19, 2017
  • Merged serial and parallel versions.
  • Added stability fixes related to parallelization.
  • Added utilities related to parallelization.
  • Added utilities for vector and arrays.
  • Added utilities for strings.
  • Removed OS dependence.
  • FMM will run in serial in parallel environment.
  • FMM mixes particle ordering.
April 24, 2015
  • Fixes for efficient smoothing.
April 7, 2015
  • Uploaded new publication using COMFY.
  • Bug fixes related to space charge kicks.
  • Included procedures to change smoothing parameters, PPSOFT and MULTSOFT.
  • Updated manual to include smoothing.
October 15, 2014
  • Bug fixes
Sept. 10, 2014
  • Bug fixes
Aug. 29, 2014
  • Uploaded V1.03.
  • Modified FMM procedures to use DA vectors.
  • Minor bug fixes.
  • Slight efficiency improvement.
  • Added softening capability to FMM. Can set softening separately with COMFYSOFTD for near interactions and COMFYSOFTM for multipole expansion.

This first order system of ordinary differential equations (ODEs) integrator is based on Picard iterations implemented with differential algebraic methods. This results in an efficient, highly accurate variable order integrator with a dense output. There are two independent parameters to optimize, order and time step. This makes it possible to choose optimal values that make the integrator the fastest possible for a given level of accuracy.

The implementation also uses COSY Infinity. The documentation explains how to adapt the supplied example to different systems of ODEs.

Downloads

Picard Integrator files.

Documentation

Picard Integrator manual.

Examples

Picard Integrator example data.

Applications

Updates

February 19, 2018
  • Added application "Picard iteration-based variable-order integrator with dense output employing algorithmic differentiation."
March 20, 2014
  • Uploaded V1.0 with documentation/examples.

Contact

Bela Erdelyi
Professor
815-753-6484
erdelyi@nicadd.niu.edu