Численное моделирование задач термоупругости на графических процессорах с использованием технологии CUDA

Язык труда и переводы:
УДК:
539.3:519
Дата публикации:
04 января 2022, 15:37
Категория:
Секция 11. Наукоемкие технологии в ракетно-космической технике
Авторы
Ефремов Алексей Владимирович
БГТУ «ВОЕНМЕХ» им. Д.Ф. Устинова
Смирнов Петр Геннадьевич
БГТУ «ВОЕНМЕХ» им. Д.Ф. Устинова
Аннотация:
Моделирование нестационарных задач термоупругости требует использование значительных вычислительных ресурсов, наиболее доступным и эффективным средством являются вычисления на графических ускорителях. Рассмотрена реализация неявного метода дискретизации по времени на графическом ускорителе. Показано, что особенностью неявного метода является устойчивость, но он требует решения систем алгебраических уравнений. В ходе работы решены уравнения для термоупругого состояния и получен метод решения линейных уравнений общего вида на графическом ускорителе.
Ключевые слова:
термоупругость, метод верхней релаксации, неявный метод, CUDA
Основной текст труда

Во многих технологических процесса, например, при воздействии кратковременного лазерного излучения на поверхность материала, значительной становится роль термоупругих напряжений и особенности распространения термоупругого состояния материала. Резкие нестационарные воздействия вызывают возбуждение термоупругой волны, распространяющейся в материале, что может приводить к трещинообразованию и разрушению материала. Моделирование нестационарных задач термоупругости требует значительных вычислительных ресурсов. Наиболее доступным и эффективным средством являются вычисления на графических ускорителях.  

При численном решении задач газовой динамики и теплообмена неявными методами разностная дискретизация дифференциальных уравнений приводит к необходимости решения систем линейных алгебраических уравнений (СЛАУ). Методы решения СЛАУ делятся на две группы — прямые или точные (метод Гаусса, полное LU разложение) и итерационные. В свою очередь итерационные методы — это очень обширная группа методов [1, 2].

Прямые методы решения СЛАУ требуют значительных вычислительных затрат и не имеют алгоритмов эффективного параллельного решения для систем общего вида. Итерационные методы сводятся к большому количеству операций типа матрично-векторного умножения, которые поддаются распараллеливанию. Рассматриваемый метод верхней релаксации относится к классическим итерационным методам решения СЛАУ и является модификацией метода Гаусса — Зайделя, скорость сходимости которого определяется параметром релаксации [3].

Для реализации алгоритма решения СЛАУ на GPU используется NVIDIA CUDA SDK [4]. Алгоритм решения реализован следующим образом. На центральном процессоре производится вычисление размера матрицы коэффициентов (n) и количество ненулевых элементов (nnz) в зависимости от типа решаемой системы уравнений. Затем выделяется память на CPU под вектор неизвестных, вектор правой части уравнения и под матрицу коэффициентов системы уравнений. На CPU матрица коэффициентов системы хранится в разреженном формате «COO» (координатный формат хранения). На GPU выделяется глобальная память под матрицу коэффициентов, матрицы расщепления, вектор неизвестных и вектор правых частей. Матрица коэффициентов и вектор правых частей копируются с CPU на GPU, инициализируется вектор неизвестных начальным приближением. Добавление элементов матрицы коэффициентов системы уравнений может производиться в произвольном порядке, поэтому перед дальнейшим использованием необходимо произвести ее сортировку сначала по столбцам, затем по строкам. Для сортировки используется библиотека из состава CUDA SDK — thrust.  После сортировки производится преобразование матрицы коэффициентов из формата «COO» в формат «CSR», с которым работает библиотека cuSRAPSE. Затем вычисляются матрицы расщепления матрицы коэффициентов системы. После формирования матриц запускается основной цикл решателя, после которого вектор неизвестных содержит следующее приближение решения системы уравнений. Критерием остановки и выхода из цикла является условие минимума невязки решения.

Рассмотрим связанную динамическую одномерную задачу термоупругости, которая включает в себя уравнение движения и уравнение теплопроводности, которые определяют деформации тела, возникающие от теплового воздействия, а также обратный эффект [5]:

v_{e}^{2}{\frac {\partial ^{2}\sigma _{x}}{\partial x^{2}}}-{\frac {\partial ^{2}\sigma _{x}}{\partial t^{2}}}=\beta {\frac {\partial ^{2}\theta }{\partial x^{2}}};

\lambda {\frac {\partial ^{2}\theta }{\partial x^{2}}}=\left(\rho c+{\frac {\beta ^{2}T_{0}}{\rho v_{e}^{2}}}\right){\frac {\partial \theta }{\partial x}}+\left({\frac {\beta T_{0}}{\rho v_{e}^{2}}}\right){\frac {\partial \sigma _{x}}{\partial t}}.

Здесь уравнения записаны в терминах тензора напряжений и разности температуры тела текущей и начального распределения. Особенность решения системы в том, что в отдельном цикле решаются уравнения приведенной системы, и новое решение для поля температуры используется для уточнения деформаций тела. Критерием останова цикла является условие минимизации невязки поля температуры. Поэтому решение системы реализовано на GPU с использованием решателя, описанного в данной работе.

Грант
Исследование поддержано грантом Российского научного фонда № 21-19-00657.
Литература
  1. Куксенко С.П., Газизов Т.Р. Итерационные методы решения системе линейных алгебраических уравнений с плотной матрицей. Томск: Томский гос. ун-т, 2007. 208 с.
  2. Голуб Дж., Ван Лоун Ч. Матричные вычисления. М.: Мир, 1999. 548 с.
  3. Смирнов П.Г., Третьяк П.С., Джгамадзе Г.Т. Параллельная реализация неявного метода и метода расщепления для численного решения уравнения теплопроводности на графическом ускорителе // Молодежь, техника космос. XII Общероссийская научно-техническая конференция. (Санкт-Петербург, 23–25 апреля 2020 г.).
  4. CUDA Toolkit documentation. NVIDIA. Available at: https://docs.nvidia.com/cuda/ (accessed November 15, 2021).
  5. Коваленко А.Д. Термоупругость. Киев: Вища школа, 1975. 216 с.
Ваш браузер устарел и не обеспечивает полноценную и безопасную работу с сайтом.
Установите актуальную версию вашего браузера или одну из современных альтернатив.