Abstract:Based on the highly nonlinear and kinetic processes that occur during high-intensity particle and laser beam-plasma interactions, we use particle-in-cell (PIC) codes [1,2], which are a subset of the particle-mesh techniques, for the modeling of these physical problems. In these codes the full set of Maxwell’s equations are solved on a grid using currents and charge densities calculated by weighting discrete particles onto the grid. Each particle is pushed to a new position and momentum via self-consistently calculated fields. Therefore, to the extent that quantum mechanical effects can be neglected, these codes make no physics approximations and are ideally suited for studying complex systems with many degrees of freedom. Achieving the goal of one to one, two and three dimensional modeling of laboratory experiments and astrophysical scenarios, requires state-of-the-art computing systems. The rapid increase in computing power and memory of these systems that has resulted from parallel computing has been at the expense of having to use more complicated computer architectures. In order to take full advantage of these developments it has become necessary to use more complex simulation codes. The added complexity arises for two reasons. One reason is that the realistic simulation of a problem requires a larger number of more complex algorithms interacting with each other than in a simulation of a rather simple model system. For example, initializing an arbitrary number of lasers or particle beams in 3D on a parallel computer is a much more difficult problem than initializing one beam in 1D or 2D on a single processor. The other reason is that the computer systems, e.g., memory management, threads, operating systems, are more complex and as a result the performance obtained from them can dramatically differ depending on the code strategy. Parallelized codes that handle the problems of parallel communications and parallel IO are examples of this. The best way to deal with this increased complexity is through an object-oriented programming style that divides the code and data structures into independent classes of objects. This programming style maximizes code reusability, reliability, and portability. The goal of this code development project was to create a code that breaks up the large problem of a simulation into a set of essentially independent smaller problems that can be solved separately from each other. This allows individuals in a code development team to work independently. Object oriented programming achieves this by handling different aspects of the problem in different modules (classes) that communicate through well-defined interfaces. This effort resulted in a new framework called OSIRIS, which is a fully parallelized, fully implicit, fully relativistic, and fully object-oriented PIC code, for modeling intense beam plasma interactions. Further details on the OSIRIS code can be found in [3]:
References
[1] Dawson, J.M.: Particle simulation of plasmas. Rev. Mod. Phys., vol.55, no. 2, April 1983, p. 403-47.
[2] Birdsall, C.K., Langdon, A.B.: Plasma physics via computer simulation. Bristol, UK: Adam Hilger, 1991, xxvi+479 pp.
[3] R.A.Fonseca, L.O.Silva, R.G.Hemker, F.S.Tsung, V.K.Decyk, W.Lu, C.Ren, W.B.Mori, S.Deng, S.Lee, T.Katsouleas, and J.C.Adam: OSIRIS: A Three-Dimensional, Fully Relativistic Particle in Cell Code for Modeling Plasma Based Accelerators. In P.M.A. Sloot et al., editors, ICCS 2002, LNCS 2331, pp. 342-351, 2002.