Параллельный алгоритм для полунеявного метода частиц в ячейках с сохранением энергии и заряда
Е.А. Берендеев1,2, И.В. Тимофеев1,2
1Новосибирский национальный исследовательский государственный университет (НГУ), Новосибирск, Россия beren@inp.nsk.su 2Институт ядерной физики им. Г.И. Будкера СО РАН, Новосибирск, Россия
Ключевые слова: параллельный алгоритм, метод частиц в ячейках, решение систем линейных алгебраических уравнений, высокопроизводительные вычисления
Страницы: 365-378
Аннотация
Статья посвящена вопросам построения параллельного алгоритма для расчёта динамики плазмы методом частиц в ячейках с использованием полунеявной схемы, сохраняющей энергию и заряд. Данная схема представляет собой двухстадийный предиктор-корректор, где на этапе предсказания используется полунеявный метод Лапенты, в котором сохраняющий энергию линейный ток не удовлетворяет локальному закону Гаусса, а на этапе коррекции токи, электромагнитные поля и скорости частиц подправляются так, чтобы разностные законы сохранения энергии и заряда выполнялись точно. Этот подход оказывается эффективным для моделирования разномасштабных явлений с достаточно большим временным шагом, однако является ресурсоёмким, поскольку требует не только решения двух систем линейных уравнений за шаг, но и перестроения всей матрицы системы. Авторами разработан матрично-операторный алгоритм для программной реализации этой схемы, позволяющий эффективно распараллелить вычисления, а также использовать различные библиотеки для работы с матрицами и решателями систем линейных уравнений. Для построения матрицы использован алгоритм построчного хранения с поиском элементов через хэш-таблицу, что уменьшает объём используемой памяти, число синхронизаций потоков и позволяет существенно ускорить вычисления. Рассматриваемый алгоритм успешно применён в коде Beren3D.
DOI: 10.15372/SJNM20240401 |