Привет всем! Написал пару статей на тему психологии, а теперь решил написать статью по математике, а то сложится неправильное впечатление обо мне, что я психолог, хотя это на самом деле не так.
Сейчас я аспирант в ИВМиМГ в Новосибирске. Основной профиль моей работы связан вычислительной астрофизикой - решением задач, связанных с эволюцией газа, но только в космических масштабах.
Введение
Есть два основных подхода к решению астрофизических задач: классический и релятивистский. В первом случае это обычная ньютоновская физика, в которой скорости не превышают скорости света. Во втором случае это, условно, теория относительности, где скорости сопоставимы со скоростью света.
В данной статье рассматриваются только классическая физика, представленная геофизикой, гидродинамикой, магнитной газовой физикой и магнитной гидродинамикой.
Из курса школьной физики нам известно, что газы расширяются в пространстве (либо сжиматься), стремясь занять все доступное пространство равномерно распределившись на нем. Формально это является основной идеей и принципов работы всех современных методов связанных с эволюцией газов и потоков жидкости.
Допустим у нас есть шар газа, с плотностью равное 2 единицам. Вокруг этого шара пространство заполнено таким же газом, но с плотностью равной 1 единице. Что произойдет? Газ шара, будет разлетаться во все стороны.
Пример одного из моих моделирований, для формирования протопланетных дисков, очень похожее на описание высказанного случая.
Как смоделировать подобного рода задачи.
Сначала нужно понять, какие величины участвуют в данных процессах. Рассмотрим процесс газовой динамики, без учета влияния и воздействия магнитных полей.
Основными величинами являются: плотность, давление и скорость. С помощью этих величин можно полностью описать основные законы сохранения, участвующие в данных процессах - закон сохранения энергии, закон сохранения массы, закон сохранения импульса.
Если рассмотреть данную задачу с материальной точки зрения, что все встает на свои места. У нас есть газ, который расширяется или сжимается. Это приводит его к тому, что изменяется его плотность (он становиться менее плотным или наоборот более сжатым). Изменение плотности влечет за собой изменение давления. А так как процесс происходит во времени, то логично предположить, что на различных стадиях будет разная скорость распространения вещества.
Допустим, у нас есть основные величины и есть основные законы. Если объединить их вместе, то мы сможем выписать основную систему газовой динамики.
Система уравнений газовой динамики, дополненная уравнением Пуассона для гравитационного потенциала, будет выглядеть следующим образом:
где p – плотность газа, v – вектор скорости, p – давление, Ф – гравитационный потенциал, полученный из уравнения Пуассона, гамма – показатель адиабаты.
Данная система уравнений представляет собой дифференциальную форму законов сохранения массы, импульса и энергии, где
(1.1) – уравнение неразрывности,
(1.2) – уравнение движения,
(1.3) – уравнение для внутренней энергии,
(1.4) – уравнение состояния,
(1.5) – уравнение Пуассона.
Мы получили немного громоздкую систему с градиентами и дивергенциями, но не стоит ее пугаться. Математика обобщает задачи, на практике мы часто решаем лишь конкретный класс задач, который сводиться к минимальному набору уравнений.
(Если интересно вывод данной системы уравнений, то можете посмотреть в книге С. К. Годунова - Численное решение многомерных задач газовой 1976 года. Для ее освоение нужны знания дифференцирования и интегрирования).
Хорошо, у нас есть какая-то система. Как это считать?
Моделирование задачи
Обычно, у большинства людей есть заблуждение, что каждая задача может быть решена аналитически - т.е. берется система уравнений и решается. Для нее находиться все решения. Но на практике, это зачастую не работает, т.к. либо не хватает данных, либо невозможно описать систему математически так, чтобы она охватывала все нюансы.
С другой стороны, есть еще проблемы с входными данными и ошибками с ними. Например, для прямых методов (методы для которых важна точность данных) будут давать неправильные результаты при малейших изменениях входных данных, где под входными данными я подразумеваю первоначальное состояние системы - значения плотности, скорости, давления.
Иногда построение аналитического решения является слишком энерго и ресурс затратным, что делает его экономически невыгодным.
Поэтому на смену прямым методам были разработаны итерационные методы, в которых даже при периодических ошибках в исходных данных, все-таки позволять получить решение определенной точности.
Формально для решения подобных задач есть отдельная глава в математики и физике - Уравнения математической физики, которые описывают все методы и подходы к решению данных задач, доступные на данный момент.
За последние три десятилетия из множества газодинамических численных методов для решения астрофизических задач в основном используется два подхода. Это лагранжев подход, в основном представленный SPH-методом (Smoothed Particle Hydrodynamics) и эйлеров подход с использование адаптивных сеток или AMR (Adaptive Mesh Refinement).
Лагранджев подход представлен пакетами: Hydra, Gasoline, GrapeSPH, GADGET. Эйлеров подход представлен пакетами: NIRVANA, FLASH, ZEUS-MP, ENZO, RAMSES, ART, Athena, Pencil Code, Heracles, Orion, Pluto, CASTRO.
Эйлеров подход с использованием AMR был впервые использован на гибридных суперкомпьютерах, оснащенных графическими ускорителями, в пакете GAMER. Пакет BETHE-Hydro, AREPO, CHIMERA и пакет PEGAS основаны на комбинации лагранжева и эйлерова подходов.
Мы рассмотрим из самых простых способов, и на мой взгляд самый понятный - HLL метод. Для того, чтобы использовать метод HLL, сначала введем базу того, как моделируются и решаются все задачи.
Для описания эволюции газа, мы рассматриваем определенную замкнутую область. В одномерном случае - это отрезок, в двухмерном случае - это прямоугольник, в трехмерном случае - это параллелепипед. Стоит отметить, что зачастую размерность не сильно влияет на задачу, и очень часто трехмерные задачи сводятся к двухмерным или вообще к одномерным.
Если вы посмотрите на любую галактику, то в ее основе лежит плоский диск. И вся эволюция будет происходить в рамках этого плоского диска. Вам не нужно моделировать то, что происходит над диском, т.к. там ничего не происходит. И поэтому очень часто рассматривают двухмерную задачу.
Вот, допустим у нас есть прямоугольная область. Мы ее разбиваем на равные участки, получая равномерную сетку. Каждая ячейка сетки по факту будет кусочком пространства, которое мы будет моделировать. Каждая ячейка будет обладать своими наборами характеристик - плотностью, давлением и скоростью. Т.е. задав сетку, и каждой ячейке задав основные параметры, мы получим начальное состояние системы. Это будет точкой отсчета в нашей системе.
Основная идея HLL метода.
Осталось только приделать механизм эволюции, где как я уже говорил мы будем использовать HLL метод.
Берем первую величину - плотность. Берем ячейку, и соседние с ней слева и права (для одномерного случая, соответственно для двухмерного соседние 8, для трехмерного - 26 ячеек).
Для того чтобы узнать новое значение ячейки, мы смотрим если знание справа меньше чем значение слева то, плотность из текущей ячейки будет распространяться в право. Если же наоборот, значение справа больше чем значение в текущей ячейке, то поток плотности справа будет течь в текущую ячейку. Вот и все.
На границах сетки, мы берем значение равное значению ячейки, т.е. для самой левой ячейки сетки, значение слева будет равно самому себе. Это делается для того, чтобы сохранялись краевые условия. В результате мы перебираем каждую ячейку и считаем новое значение. Как только мы перебрали все ячейки в нашей сетке, мы заменяем предыдущие значения новыми. И начинаем сначала. В итоге после нескольких таких процедур, мы будем видеть, как с каждой такой операцией меняется наша система.
И данный алгоритм работает для решения почти всех астрофизических задач, начиная от формирования протопланетных дисков, заканчивая столкновениями галактик.
Однако, нельзя не сказать о упрощениях, которые мы вводим в задачах. На протяжении всей этой статьи я ни слова не сказал о химии, протекающих в этих процессах. Все химические процессы могут учитываться явно или неявно. В описанном мной алгоритме, я подразумевал, что у меня есть аналитическое решение для химических реакций, и я лишь при расчете каждой ячейки добавлял соответствующее значение. Хотя есть методы и подходы, которые могут моделировать химические процессы с очень высокой точностью. Помимо химии, так же есть огромный спектр всевозможных допущений, которые связаны со спецификой каждой отдельной задачи.
Программная реализация данного метода укладывается в 120 строчек кода, что показывает на сколько просто может быть решена задача.
Несколько смоделированных задач
В итоге.
Если обобщить вышесказанное, то можно прийти к следующим выводам.
- В основу решения всех задач ложатся реальные физические процессы
- Для решения задач в астрофизике используются два физических подхода, где преимущественно доминирует классическая (ньютоновская) физика, в которой скорости не превышают скорости света.
- Формально каждая астрофизическая задача описывает эволюцию газа во времени.
- Для минимизации ошибок и затрат, используют итерационные методы, которые не чувствительны к ошибкам в начальных данных
- Для решения существует огромное множество методов, но самыми популярными в последние десятилетия являются Эйлеров и Лагранжев подходы или их комбинация.
- HLL метод, описывать эволюцию, методом нахождения нового значения величины сравнивания соседние значения в ячейках.
- Программная реализация HLL может состоять из 120 строчек кода
Всем спасибо, что дочитали до конца. Может быть настанет то время, когда астрофизика шагнет в массы.
P.S. Картинка в шапке это система для Эйлерова этапа для магнитной газовой динамики
@fafnur Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награду за количество голосов
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Голосуя за это уведомление, вы помогаете всем пользователям Голоса. Узнайте, как здесь.
@fafnur Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за общую выплату получил
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Голосуя за это уведомление, вы помогаете всем пользователям Голоса. Узнайте, как здесь.
@fafnur Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество полученных голосов
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Голосуя за это уведомление, вы помогаете всем пользователям Голоса. Узнайте, как здесь.
@fafnur отличный пост, и главное просто и понятно и с картинками XD.
Прочитала начало и конец. Вроде понятно..
:)
Столь специальных текстов я на Голосе еще не встречала, даже не знаю, найдутся ли здесь достойные собеседники по теме.
:)
Вы молодец!
@fafnur Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество полученных голосов
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Голосуя за это уведомление, вы помогаете всем пользователям Голоса. Узнайте, как здесь.