Аннотация:
Статья посвящена вопросам построения параллельного алгоритма для расчёта динамики плазмы методом частиц в ячейках с использованием полунеявной схемы, сохраняющей энергию и заряд. Данная схема представляет собой двухстадийный предиктор-корректор, где на этапе предсказания используется полунеявный метод Лапенты, в котором сохраняющий энергию линейный ток не удовлетворяет локальному закону Гаусса, а на этапе коррекции токи, электромагнитные поля и скорости частиц подправляются так, чтобы разностные законы сохранения энергии и заряда выполнялись точно. Этот подход оказывается эффективным для моделирования разномасштабных явлений с достаточно большим временным шагом, однако является ресурсоёмким, поскольку требует не только решения двух систем линейных уравнений за шаг, но и перестроения всей матрицы системы. Авторами разработан матрично-операторный алгоритм для программной реализации этой схемы, позволяющий эффективно распараллелить вычисления, а также использовать различные библиотеки для работы с матрицами и решателями систем линейных уравнений. Для построения матрицы использован алгоритм построчного хранения с поиском элементов через хэш-таблицу, что уменьшает объём используемой памяти, число синхронизаций потоков и позволяет существенно ускорить вычисления. Рассматриваемый алгоритм успешно применён в коде Beren3D.
Ключевые слова:
параллельный алгоритм, метод частиц в ячейках, решение систем линейных алгебраических уравнений, высокопроизводительные вычисления.
УДК:519.688
Статья поступила: 15.02.2024 Переработанный вариант: 26.03.2024