В физике и астрономии моделирование N -тел представляет собой моделирование динамической системы частиц, обычно находящихся под воздействием физических сил, таких как гравитация (см. задачу n -тел для других приложений). Моделирование N -тел широко используется в астрофизике , от исследования динамики систем с малым числом тел, таких как система Земля - Луна - Солнце , до понимания эволюции крупномасштабной структуры Вселенной . [1] В физической космологии моделирование N -тел используется для изучения процессов формирования нелинейных структур , таких как галактические нити и гало галактик, под влиянием темной материи . Прямое моделирование N -тел используется для изучения динамической эволюции звездных скоплений .
«Частицы», рассматриваемые в симуляции, могут соответствовать или не соответствовать физическим объектам, которые являются по своей природе частицами. Например, симуляция звездного скопления N-тел может иметь частицу на звезду, поэтому каждая частица имеет некоторое физическое значение. С другой стороны, симуляция газового облака не может позволить себе иметь частицу для каждого атома или молекулы газа, поскольку это потребовало бы порядка1023 частиц на каждый моль материала (см. постоянную Авогадро ), поэтому одна «частица» будет представлять собой гораздо большее количество газа (часто реализуемое с помощью сглаженной гидродинамики частиц ). Эта величина не обязательно должна иметь какое-либо физическое значение, но должна быть выбрана как компромисс между точностью и управляемыми требованиями к компьютеру.
Темная материя играет важную роль в формировании галактик. Временная эволюция плотности f (в фазовом пространстве) частиц темной материи может быть описана бесстолкновительным уравнением Больцмана
В уравнении — скорость, а Φ — гравитационный потенциал, заданный уравнением Пуассона . Эти два связанных уравнения решаются в расширяющейся фоновой Вселенной, которая управляется уравнениями Фридмана , после определения начальных условий частиц темной материи. Обычный метод, используемый для инициализации положений и скоростей частиц темной материи, включает движущиеся частицы в однородной декартовой решетке или стеклоподобной конфигурации частиц. [2] Это делается с помощью приближения линейной теории или теории возмущений низкого порядка . [3]
В прямом гравитационном моделировании N -тел уравнения движения системы из N частиц под воздействием их взаимных гравитационных сил интегрируются численно без каких-либо упрощающих приближений. Эти вычисления используются в ситуациях, когда взаимодействия между отдельными объектами, такими как звезды или планеты, важны для эволюции системы.
Первые прямые гравитационные моделирования N -тел были выполнены Эриком Холмбергом в Лундской обсерватории в 1941 году, определяя силы между звездами при столкновении с галактиками через математическую эквивалентность между распространением света и гравитационным взаимодействием: помещая лампочки в положения звезд и измеряя направленные световые потоки в положениях звезд с помощью фотоэлемента, уравнения движения могут быть интегрированы с усилиями. [4] Первые чисто вычислительные моделирования были затем выполнены Себастьяном фон Хорнером в Астрономическом исследовательском институте в Гейдельберге , Германия. Сверре Аарсет из Кембриджского университета (Великобритания) посвятил всю свою научную жизнь разработке серии высокоэффективных кодов N -тел для астрофизических приложений, которые используют адаптивные (иерархические) временные шаги, схему соседей Ахмада-Коэна и регуляризацию близких сближений. Регуляризация — это математический трюк, позволяющий устранить сингулярность в законе тяготения Ньютона для двух частиц, которые приближаются друг к другу на произвольное расстояние. Коды Сверре Аарсета используются для изучения динамики звездных скоплений, планетарных систем и ядер галактик. [ необходима цитата ]
Многие симуляции достаточно велики, чтобы эффекты общей теории относительности в установлении космологии Фридмана-Леметра-Робертсона-Уокера были значительными. Это включено в симуляцию как эволюционирующая мера расстояния (или масштабный фактор ) в сопутствующей системе координат , что заставляет частицы замедляться в сопутствующих координатах (а также из-за красного смещения их физической энергии). Однако вклад общей теории относительности и конечной скорости гравитации в противном случае можно игнорировать, поскольку типичные динамические временные шкалы велики по сравнению со временем пересечения света для симуляции, а кривизна пространства-времени, вызванная частицами и скоростями частиц, мала. Граничные условия этих космологических симуляций обычно являются периодическими (или тороидальными), так что один край объема симуляции совпадает с противоположным краем.
N -тело моделирование в принципе простое, поскольку оно включает в себя простое интегрирование 6 N обыкновенных дифференциальных уравнений, определяющих движения частиц в ньютоновской гравитации . На практике число N вовлеченных частиц обычно очень велико (типичные моделирования включают много миллионов, моделирование Millennium включало десять миллиардов), а число взаимодействий частица-частица, которые необходимо вычислить, увеличивается на порядок N 2 , и поэтому прямое интегрирование дифференциальных уравнений может быть непозволительно дорогим в вычислительном отношении. Поэтому обычно используется ряд уточнений.
Численное интегрирование обычно выполняется на малых временных шагах с использованием такого метода, как интегрирование с перескоком . Однако любое численное интегрирование приводит к ошибкам. Меньшие шаги дают меньшие ошибки, но работают медленнее. Интегрирование с перескоком имеет примерно 2-й порядок на временном шаге, другие интеграторы, такие как методы Рунге–Кутты, могут иметь точность 4-го порядка или намного выше.
Одно из самых простых уточнений заключается в том, что каждая частица несет с собой собственную переменную временного шага, так что частицы с сильно различающимися динамическими временами не обязательно должны эволюционировать вперед со скоростью частицы с наименьшим временем.
Существуют две основные схемы аппроксимации для уменьшения времени вычислений для таких симуляций. Они могут уменьшить вычислительную сложность до O(N log N) или лучше, за счет потери точности.
В древовидных методах , таких как моделирование Барнса-Хата , октодерево обычно используется для разделения объема на кубические ячейки, и только взаимодействия между частицами из соседних ячеек должны обрабатываться индивидуально; частицы в удаленных ячейках могут рассматриваться коллективно как одна большая частица с центром в центре масс удаленной ячейки (или как мультипольное расширение низкого порядка). Это может значительно сократить количество взаимодействий пар частиц, которые необходимо вычислить. Чтобы предотвратить затопление моделирования вычислением взаимодействий частица-частица, ячейки должны быть уточнены до более мелких ячеек в более плотных частях моделирования, которые содержат много частиц на ячейку. Для моделирования, где частицы распределены неравномерно, методы разложения хорошо разделенных пар Каллахана и Косараджу дают оптимальное время O( n log n ) на итерацию с фиксированным размером.
Другая возможность — метод сетки частиц , в котором пространство дискретизируется на сетке, и для целей вычисления гравитационного потенциала предполагается, что частицы разделены между окружающими 2x2 вершинами сетки. Потенциальную энергию Φ можно найти с помощью уравнения Пуассона
где G — постоянная Ньютона , а — плотность (число частиц в узлах сетки). Быстрое преобразование Фурье может решить эту задачу эффективно, перейдя в частотную область , где уравнение Пуассона имеет простую форму
где — сопутствующее волновое число, а шляпы обозначают преобразования Фурье. Поскольку , гравитационное поле теперь можно найти, умножив на и вычислив обратное преобразование Фурье (или вычислив обратное преобразование и затем используя какой-либо другой метод). Поскольку этот метод ограничен размером сетки, на практике для вычисления мелкомасштабных сил используется меньшая сетка или какой-либо другой метод (например, объединение с деревом или простым алгоритмом частица-частица). Иногда используется адаптивная сетка, в которой ячейки сетки намного меньше в более плотных областях моделирования.
Для получения достаточно точных оценок траектории объектов в Солнечной системе используются несколько различных алгоритмов гравитационного возмущения .
Люди часто решают поместить спутник на замороженную орбиту . Траекторию спутника, вращающегося близко к Земле, можно точно смоделировать, исходя из эллиптической орбиты двух тел вокруг центра Земли и добавляя небольшие поправки из-за сжатия Земли , гравитационного притяжения Солнца и Луны, сопротивления атмосферы и т. д. Можно найти замороженную орбиту, не вычисляя фактическую траекторию спутника.
Траекторию небольшой планеты, кометы или космического корабля дальнего действия часто можно точно смоделировать, исходя из эллиптической орбиты двух тел вокруг Солнца и добавляя небольшие поправки за счет гравитационного притяжения более крупных планет на их известных орбитах.
Некоторые характеристики долгосрочных траекторий системы частиц могут быть вычислены напрямую. Фактический путь любой конкретной частицы не нужно вычислять как промежуточный шаг. К таким характеристикам относятся устойчивость по Ляпунову , время Ляпунова , различные измерения из эргодической теории и т. д.
Хотя в типичных симуляциях присутствуют миллионы или миллиарды частиц, они обычно соответствуют реальной частице с очень большой массой, обычно 10 9 солнечных масс . Это может привести к проблемам с ближними взаимодействиями между частицами, такими как образование двухчастичных двойных систем. Поскольку частицы должны представлять большое количество частиц темной материи или групп звезд, эти двойные системы нефизичны. Чтобы предотвратить это, используется смягченный закон силы Ньютона, который не расходится как обратный квадрат радиуса на коротких расстояниях. Большинство симуляций реализуют это довольно естественно, запуская симуляции на ячейках конечного размера. Важно реализовать процедуру дискретизации таким образом, чтобы частицы всегда оказывали исчезающую силу на себя.
Смягчение — это числовой трюк, используемый в методах N-тел для предотвращения числовых расхождений , когда частица подходит слишком близко к другой (и сила стремится к бесконечности). Это достигается путем изменения регуляризованного гравитационного потенциала каждой частицы как
(а не 1/r), где — параметр смягчения. Значение параметра смягчения должно быть установлено достаточно малым, чтобы моделирование оставалось реалистичным.
Моделирование N тел дает результаты по крупномасштабному распределению темной материи и структуре гало темной материи. Согласно моделированию холодной темной материи, общее распределение темной материи в крупном масштабе не является полностью однородным. Вместо этого оно демонстрирует структуру, напоминающую сеть, состоящую из пустот, стенок, нитей и гало. Кроме того, моделирование показывает, что связь между концентрацией гало и такими факторами, как масса, начальный спектр флуктуаций и космологические параметры, связана с фактическим временем формирования гало. [5] В частности, гало с меньшей массой, как правило, формируются раньше и, как следствие, имеют более высокую концентрацию из-за более высокой плотности Вселенной во время их формирования. Обнаружено, что формы гало отклоняются от идеально сферической. Обычно гало вытянуты и становятся все более вытянутыми к своим центрам. Однако взаимодействия между темной материей и барионами могут повлиять на внутреннюю структуру гало темной материи. Для изучения мелкомасштабных структур необходимы расчеты, моделирующие как темную материю, так и барионы.
Многие симуляции моделируют только холодную темную материю и, таким образом, включают только гравитационную силу. Включение барионов , лептонов и фотонов в симуляции резко увеличивает их сложность, и часто приходится делать радикальные упрощения базовой физики. Однако это чрезвычайно важная область, и многие современные симуляции сейчас пытаются понять процессы, происходящие во время формирования галактик , которые могли бы объяснить смещение галактик.
Рейф и Тейт [6] доказывают, что если задача достижимости n тел определена следующим образом: даны n тел, удовлетворяющих фиксированному закону электростатического потенциала, определение того, достигает ли тело шара назначения за заданное время, где нам требуется poly( n ) бит точности, а целевое время poly( n ), находится в PSPACE .
С другой стороны, если вопрос в том, достигнет ли тело в конечном итоге мяча назначения, то проблема PSPACE-hard. Эти границы основаны на аналогичных границах сложности, полученных для трассировки лучей .
Простейшая реализация моделирования N-тел, где является наивным распространением вращающихся тел; наивное подразумевает, что единственные силы, действующие на вращающиеся тела, — это гравитационная сила, которую они оказывают друг на друга. В объектно-ориентированных языках программирования, таких как C++ , некоторый шаблонный код полезен для установления фундаментальных математических структур, а также контейнеров данных, необходимых для распространения; а именно векторов состояния , и, следовательно, векторов , и некоторого фундаментального объекта, содержащего эти данные, а также массы вращающегося тела. Этот метод применим и к другим типам моделирования N-тел; моделирование точечных масс с зарядами будет использовать аналогичный метод, однако сила будет обусловлена притяжением или отталкиванием за счет взаимодействия электрических полей. Независимо от этого, ускорение частицы является результатом суммирования векторов силы, деленных на массу частицы:
Примером программно стабильного и масштабируемого метода хранения кинематических данных для частицы является использование массивов фиксированной длины, что в оптимизированном коде позволяет легко выделять память и прогнозировать потребляемые ресурсы, как показано в следующем коде C++:
структура Vector3 { двойной е [ 3 ] = { 0 }; Вектор3 () {} ~ Вектор3 () {} встроенный Vector3 ( double e0 , double e1 , double e2 ) { это -> е [ 0 ] = е0 ; это -> е [ 1 ] = е1 ; это -> е [ 2 ] = е2 ; }};структура OrbitalEntity { двойной е [ 7 ] = { 0 }; ОрбитальнаяЭнтити () {} ~ ОрбитальнаяЭнтити () {} встроенный OrbitalEntity ( double e0 , double e1 , double e2 , double e3 , double e4 , double e5 , double e6 ) { это -> е [ 0 ] = е0 ; это -> е [ 1 ] = е1 ; это -> е [ 2 ] = е2 ; это -> е [ 3 ] = е3 ; это -> е [ 4 ] = е4 ; это -> е [ 5 ] = е5 ; это -> е [ 6 ] = е6 ; }};
Обратите внимание, что OrbitalEntity
содержит достаточно места для вектора состояния, где:
Кроме того, OrbitalEntity
содержит достаточно места для значения массы.
Обычно симуляции N-тел будут системами, основанными на некотором типе уравнений движения ; из них большинство будет зависеть от некоторой начальной конфигурации для «затравки» симуляции. В таких системах, как те, которые зависят от некоторого гравитационного или электрического потенциала, сила, действующая на сущность симуляции, не зависит от ее скорости. Следовательно, для затравки сил симуляции нужны только начальные положения, но это не позволит распространяться — требуются начальные скорости. Рассмотрим планету, вращающуюся вокруг звезды — она не имеет движения, но подвержена гравитационному притяжению к своей звезде-хозяину. По мере того, как время идет и добавляются временные шаги , она будет набирать скорость в соответствии со своим ускорением. Для заданного момента времени, результирующее ускорение тела из-за его соседних масс не зависит от его скорости, однако для временного шага результирующее изменение положения существенно отличается из-за присущей распространению зависимости от скорости. В основных механизмах распространения, таких как симплектический метод Эйлера, который будет использоваться ниже, положение объекта в зависит только от его скорости в , поскольку смещение положения вычисляется с помощью
Без ускорения тело статично, однако с точки зрения наблюдателя, видящего только положение, потребуется два временных шага, чтобы увидеть изменение скорости.
Симуляция, подобная солнечной системе, может быть выполнена путем взятия средних расстояний планетарных эквивалентных точечных масс от центральной звезды. Для простоты кода будет использоваться нестрогий подход, основанный на больших полуосях и средних скоростях. Пространство памяти для этих тел должно быть зарезервировано до того, как тела будут сконфигурированы; для обеспечения масштабируемости можно использовать команду malloc :
OrbitalEntity * orbital_entities = malloc ( sizeof ( OrbitalEntity ) * ( 9 + N_ASTEROIDS )); orbital_entities [ 0 ] = { 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 1.989e30 }; // звезда, похожая на солнце orbital_entities [ 1 ] = { 57.909e9 , 0.0 , 0.0 , 0.0 , 47.36e3 , 0.0 , 0.33011e24 }; // планета, похожая на Меркурий orbital_entities [ 2 ] = { 108.209e9 , 0.0 , 0.0 , 0.0 , 35.02e3 , 0.0 , 4.8675e24 }; // планета, похожая на венеру orbital_entities [ 3 ] = { 149.596e9 , 0.0 , 0.0 , 0.0 , 29.78e3 , 0.0 , 5.9724e24 }; // планета, похожая на Землю orbital_entities [ 4 ] = { 227.923e9 , 0.0 , 0.0 , 0.0 , 24.07e3 , 0.0 , 0.64171e24 }; // планета, похожая на Марс orbital_entities [ 5 ] = { 778.570e9 , 0.0 , 0.0 , 0.0 , 13e3 , 0.0 , 1898.19e24 }; // планета, похожая на юпитер orbital_entities [ 6 ] = { 1433.529e9 , 0.0 , 0.0 , 0.0 , 9.68e3 , 0.0 , 568.34e24 }; // планета, похожая на сатурн orbital_entities [ 7 ] = { 2872.463e9 , 0.0 , 0.0 , 0.0 , 6.80e3 , 0.0 , 86.813e24 }; // планета, похожая на уран orbital_entities [ 8 ] = { 4495.060e9 , 0.0 , 0.0 , 0.0 , 5.43e3 , 0.0 , 102.413e24 }; // планета, похожая на Нептун
где N_ASTEROIDS
— переменная, которая временно останется на 0, но позволяет в будущем включать значительное количество астероидов по усмотрению пользователя. Критический шаг для конфигурации моделирования — установить временные диапазоны моделирования, до , а также шаг приращения времени , который будет продвигать моделирование вперед:
двойной t_0 = 0 ; двойной t = t_0 ; двойной dt = 86400 ; double t_end = 86400 * 365 * 10 ; // приблизительно декада в секундах double BIG_G = 6.67e-11 ; // гравитационная постоянная
Установленные выше положения и скорости интерпретируются как правильные для .
Логично, что масштаб моделирования будет охватывать период, когда .
Вся симуляция может состоять из сотен, тысяч, миллионов, миллиардов или иногда триллионов временных шагов. На элементарном уровне каждый временной шаг (для симуляций с частицами, движущимися из-за приложенных к ним сил) включает
Вышеуказанное можно реализовать довольно просто с помощью цикла while , который продолжается, пока существует указанный выше диапазон:
while ( t < t_end ) { for ( size_t m1_idx = 0 ; m1_idx < 9 + N_ASTEROIDS ; m1_idx ++ ) { Vector3 a_g = { 0 , 0 , 0 }; для ( size_t m2_idx = 0 ; m2_idx < 9 + N_ASTEROIDS ; m2_idx ++ ) { если ( m2_idx != m1_idx ) { Vector3 r_vector ; r_vector . e [ 0 ] = орбитальные_сущности [ m1_idx ]. e [ 0 ] - орбитальные_сущности [ m2_idx ] . e [ 0 ]; r_vector . e [ 1 ] = орбитальные_сущности [ m1_idx ]. e [ 1 ] - орбитальные_сущности [ m2_idx ] . e [ 1 ]; r_vector . e [ 2 ] = орбитальные_сущности [ m1_idx ]. e [ 2 ] - орбитальные_сущности [ m2_idx ]. e [ 2 ]; double r_mag = sqrt ( r_vector . e [ 0 ] * r_vector . e [ 0 ] + r_vector . e [ 1 ] * r_vector . e [ 1 ] + r_vector . e [ 2 ] * r_vector . e [ 2 ]); двойное ускорение = -1.0 * BIG_G * ( orbital_entities [ m2_idx ]. e [ 6 ]) / pow ( r_mag , 2.0 ); Вектор3 r_unit_vector = { r_vector . e [ 0 ] / r_mag , r_vector . e [ 1 ] / r_mag , r_vector . e [ 2 ] / r_mag }; a_g.e [ 0 ] + = ускорение * r_unit_vector.e [ 0 ] ; a_g.e [ 1 ] + = ускорение * r_unit_vector.e [ 1 ] ; a_g.e [ 2 ] + = ускорение * r_unit_vector.e [ 2 ] ; } } орбитальные_сущности [ m1_idx ] .e [ 3 ] + = a_g .e [ 0 ] * dt ; орбитальные_сущности [ m1_idx ] .e [ 4 ] + = a_g .e [ 1 ] * dt ; орбитальные_сущности [ m1_idx ] .e [ 5 ] + = a_g .e [ 2 ] * dt ; } для ( size_t entity_idx = 0 ; entity_idx < 9 + N_ASTEROIDS ; entity_idx ++ ) { orbital_entities [ entity_idx ]. e [ 0 ] += orbital_entities [ entity_idx ]. e [ 3 ] * dt ; orbital_entities [ entity_idx ]. e [ 1 ] + = orbital_entities [ entity_idx ]. e [ 4 ] * dt ; orbital_entities [ entity_idx ]. e [ 2 ] += orbital_entities [ entity_idx ]. e [ 5 ] * dt ; } t += dt ; }
Сосредоточившись на четырех внутренних каменистых планетах в моделировании, траектории, полученные в результате вышеуказанного распространения, показаны ниже: