The following list contains the codes we use for our research. Note, that although we have access to the source text of half of the codes, we are currently developing only the UCLA version of Parmela and Genesis 1.3.
Code | Description | Platform | Parallel | Source | Available Documentation |
Parmela (UCLA) | Particle Tracking | Linux, Mac | no | yes | tutorial |
Homdyn | Particle Tracking | Linux, Mac | no | no | manual, tutorial |
Tredi | Particle Tracking | Linux | yes | yes | tutorial |
QUINDI | Particle Tracking and Lienard-Weichert | Linux | yes | yes | manual |
Genesis 1.3 | Particle Tracking | Linux, Mac | no | yes | manual, tutorial |
Elegant | Particle Tracking | Linux, Mac, Win | no | no | manual, tutorial |
Spur | Lienard-Weichert | Linux, Mac | yes | yes | none |
fieldEye | Lienard-Weichert | Linux | yes | yes | none |
Ampere | Maxwell Solver | Win | no | no | none |
Poisson/Superfish | Maxwell Solver | Linux | no | yes | manual, tutorial |
Gdfidl | Maxwell Solver | Linux | no | yes | manual, tutorial |
Radia | Maxwell Solver | Mac, Win | no | no | tutorial, online manual |
HFSS | Maxwell Solver | Win | no | no | none |
Magic | Plasma Dynamics | Win | no | no | online tutorial |
OopicPro | Plasma Dynamics | Linux | yes | yes | online manual, tutorial |
Parmela is a 3D particle tracker to simulate the dynamics in rf guns and injector beam lines. It includes space charge and image charge routines. It covers many analytic expressions of beam line components such as rf cavities, solenoid magnets, dipole and quadrupole magnets and allows for importing field maps from Poisson and Superfish.
Homdyn is based on analytical formulae of the beam dynamics in rf photo injector. Instead of macro particles the electron beam is described by longitudinal slices with various lengths and radii, following the envelope equations for the electron beam.
Tredi is a fully 3D particle Tracking code, based on the Lienard-Wiechard potential for the electro-magnetic interaction between the macro particles. The code supports parallel computer architecture and requires the HDF5 file format for input and output files. Because it does not rely on any approximation it is an all-purpose code for any part of a linear accelerator.
Luca Giannessi's (Author) Website
QUINDI is a first principles beam diagnostics simulator which calculates the radiative spectrum from a relativistic electron bunch passing through a magnetic array.
Genesis 1.3 is a 3D time-dependent Free-Electron Laser code, simulating the interaction of an electron beam with a radiation field, coupled by the field of an undulator or wiggler. Its algorithm is based on the paraxial equation of the radiation field and enforces the right statistic in the longitudinal position despite the lower number of macro particles than the electrons to be simulated.
Elegant is a multi-purpose 3D particle Tracking code through a linear accelerator. The beam line elements are described by transport elements up to 3rd order. Although it excludes space charge, Elegant has an analytical model for the coherent synchrotron radiation in a bending system and its interaction back on the beam. Elegant works in the SDDS environment, complemented with the SDDS tool set, to pre- and postprocess Elegant runs.
Spur (SPontaneous Undulator Radiation) calculates the radiation properties of the spontaneous radiation at a given 2D target behind the undulator for an arbitrary undulator lattice. The calculations are based on Lienard-Wichert potentials. The code is optimized for the motion of the electrons in an undulator, where the trajectory is analytically calculated for each half-period. The code is still under development.
fieldEye is a first-principal code, which extracts out of the supplied trajectories of electrons the position, velocity and acceleration. With this information the Lienard-Wiechert potentials are solved to calculate the emitted radiation at arbitrary positions. The code is still under development.
Ampere is a 3D magnetostatic field solver. The field is solved on a discretized environment, using the boundary element method. The code has its strength in designing electromagnets with and without permeable material. Ampere is a commercial program.
Although the codes serves different purposes, the underlying field solver of the discretized field equations is the same. Poisson solves magnetostatic problems, while Superfish calculates the eigenvalues and -solutions of rf cavities. Both codes are 2D, but can distinguish between radial (r, z) or cartesian (x,y) symmetry.
Gdfidl is a finite difference solver for the Maxwell and Helmholz equations. It is capable of finding the eigenvalues and vectors for arbitrary rf structures. It can also calculate the induced geometric wakefields by a passing charge. A novel memory management eliminates the calculation of dead spaces (e.g. grid points within metals) and thus gains a speed-up, compared to similar program. Gdfidl is a commercial program.
Radia is a set of library functions for Mathematica for magnetostatic problems. It supplies routines to define magnetic structure, solve the field equations and to plot the field profiles. As a plug-in for Mathematica it allows easy set-up of the script to define and solve the magnetic problem.
HFSS is a 3D electromagnetic simulation tool for RF, wireless, packaging, and optoelectronic design. Based on a finite element method with adaptive mesh refinement, the eigenmodes and frequencies of an rf system are solved, including dispersion, mode conversion, and losses due to materials and radiation. HFSS is a commercial program.
Magic is a package of three application to simulate plasma dynamics: a 2D solver, a 3D solver and a postprocessor. The solver are particle-in-cell codes, including the electromagnetic interaction between the particles and external fields. The problem is solved in the time-domain, based on a finite-difference algorithm. Magic is a commercial program.
OopicPro is a 2D particle-in-cell code for plasma simulation. It supports slab and cylindrical structures and solved the equations of motion and field equation with a finite-difference method in time-domain. The code support parallel computer architecture, using the MPI interface between the individual nodes.