Publishing House SB RAS:

Publishing House SB RAS:

Address of the Publishing House SB RAS:
Morskoy pr. 2, 630090 Novosibirsk, Russia



Advanced Search

Numerical Analysis and Applications

2024 year, number 4

Parallel algorithm for semi-implicit particle-in-cell method with energy and charge conservation

E.A. Berendeev1,2, I.V. Timofeev1,2
1Novosibirsk State University
2Budker Institute of Nuclear Physics SB RAS
Keywords: parallel algorithm, particle-in-cell method, solving systems of linear algebraic equations, high-performance computing

Abstract

Parallel algorithm for semi-implicit particle-in-cell method with energy and charge conservation The article is devoted to the construction of a parallel algorithm for calculating plasma dynamics by the particle-in-cell method using a semi-implicit scheme that conserves energy and charge. This scheme is a two-stage predictor-corrector, where at the prediction stage the semi-implicit Lapenta method is used, in which the energy-conserving linear current does not satisfy the local Gaussian law, and at the correction stage the currents, electromagnetic fields and particle velocities are corrected so that the difference laws of conservation of energy and charges were carried out accurately. This approach turns out to be effective for modeling multi-scale phenomena with a sufficiently large time step, however, it is resource-intensive, since it requires not only solving two systems of linear equations per step, but also rebuilding the entire matrix of the system. The authors have developed a matrix-operator algorithm for the software implementation of this scheme, which makes it possible to effectively parallelize calculations, as well as use various libraries for working with matrices and solvers for systems of linear equations. To construct the matrix, a row-by-row storage algorithm is used with searching for elements through a hash table, which reduces the amount of memory used, the number of thread synchronizations and can significantly speed up calculations. The algorithm in question has been successfully applied in the Beren3D code.