Саентач, где-то полгода назад я тут создавал тред о симуляции связанных пружинками пластинок, какие у них резонансные частоты и так далее. Сейчас опять закончилась сессия, и я решил повспоминать питон и попрогать что-нибудь интересное.Хочу сделать что-то отдаленное похожее на протопланетный диск. Чтобы множество частичек притягивались друг к другу за счет гравитации и формировали "тела" разных масс, вращающихся по своим орбитам. Пока ничего отдаленно похожего не это нет, может здесь мне и помогут.Я хочу, чтобы частички могли слипаться и удерживаться. Для этого решил ввести "межмолекулярные" взаимодействия. В итоге между частичками есть:1) Гравитационная сила, пропорциональная G/r (вроде так она должна выглядеть в плоском мире). Потенциал - Gln(r).2) Сила, сформированная потенциалом Морзе. Сам потенциал имеет вид (1-exp(-a(r-r0))^2. Сила выглядит немного посложнее.Какие сейчас есть проблемы:1) Не факт, что потенциал Морзе оптимален в моем случае. Надо подумать, чем его можно заменить.1) Надо как-то подобрать параметры G, a и r0, чтобы все это выглядело нормально и задуманный протопланетный диск мог при этих параметрах эволюционировать.2) Надо подумать о способе интегрирования. Сейчас у меня простой алгоритм Рунге-Кутты, который я попробовал сделать симплектным для сохранения энергии в системе.3) С интегратором связана и другая проблема. При не очень маленьких шагах dt одна частица может сильно налететь на другую, в результате чего на следующем шагу между ними появляется огромная сила оттакливания. Они отскакивают друг от друга в разные стороны с большой скоростью - никаким законом сохранения энергии здесь и не пахнет. По этой самой причине я отказался от потенциала Леннарда-Джонса - там он еще круче, поэтому это проблема выражена ярче.4) Скопления из трех и больше частичек нестабильны и периодически выкидывают кого-то из себя. По-моему, это не очень хорошо. Видимо, надо как-то убирать из них энергию, смоделировав испускание излучения с колебательных/электронных уровней молекул.5) Надо подумать об оптимизации. Сейчас вся оптимизация заканчивается на обрубании межмолекулярных сил при относительно большом расстоянии. В принципе я думаю поделать плоскость на квадраты, в каждом квадрате считать межмолекулярные силы между частицами в этом и соседних квадратах; а гравитацию считать только между квадратами. Может, еще по ходу дела в голову придут другие проблемы и задачи.На видео - частички на небольшом друг от друга расстоянии.Сам код находится здесь: https://github.com/grogno/Proto/blob/master/Proto.pyТребуется pygame и numba
>>364630 (OP)Граничные условия на ячейку моделирования какие наложены?
>>364631Сейчас никакие, просто бесконечная ячейка.Думаю в будущем убирать частицы, улетевшие за границу.Вот, кстати, как изменяется суммарна энергия системы типа как на видео в ОП-посте от времени. Скачки обусловлены ростом кинетической энергии. Видимо, это как раз то, что я в пункте 3) описывал.Функция для подсчета энергии лежит там же на гитхабе. Если бы кто-нибудь проверил, было бы неплохо.
Заснял эту херню.Как с этим бороться?Параметры:G = 1e-4 #Гравитационная постояннаяa = 10 #Жесткость потенциала Морзеr0 = 0.1 #Равновесное расстояние в потенциала Морзаworld_size = 1 #Размер мира симуляцииdt = 0.00001 #Размер шага по времени
>>364630 (OP)Честными симуляциями не доказать небулярную теорию. Не получатся стройные орбиты с планетами без специальных начальных условий.
>>364633>просто бесконечная ячейкаkek
>>364637Здесь вообще нет речи о честной симуляции. Просто игрушка.>>364642Что не так? Я только начал это все делать, сначала хочу определиться с общими принципами, на которых все будет строиться. Ну а потом уже граничные условия поставлю.
Гугли симуляции галактик, n-body problem. Это целая наука, там вроде даже целые журналы есть по этой теме. Я тоже начинал делать, но оче сложно нормально сделать.https://en.wikipedia.org/wiki/N-body_simulationhttps://en.wikipedia.org/wiki/Barnes%E2%80%93Hut_simulation
>>364630 (OP)>Гравитационная сила, пропорциональная G/r (вроде так она должна выглядеть в плоском мире)Че бля? Рекомендую 1/r² и не страдать хуйней.Еще можно (и нужно) делать несколько шагов симуляции между прорисовками. Для точности и вообще бывалые так советуют делать.
>>364647Спасибо, анон, за вторую ссылку. Я подозревал, что что-то подобное с сеткой должно уже было давным-давно быть придумано, но не видел этот алгоритм. Возьму на перспективу.Я знаю, что тематика очень сложная, но я не ставлю никаких научных задач.>>364649В моем случае 1/r даже на руку. Я хочу принципиально два разных типа взаимодействий: глобальное притяжение на больших расстояниях и "межмолекулярные" силы на коротких. Поскольку я нормальный потенциал Леннарда-Джонса уже заменил более плавным потенциалом Морзе, то надо сделать еще более плавной гравитацию.Несколько шагов между прорисовками сделал, спасибо.Я нашел у себя в коде одну большую ошибку в воплощении метода Рунге-Кутты. Сейчас все исправил, теперь система ведет себя стабильнее. Еще понял причину резких отскоков частиц друг от друга: замена гравитации с G/r на G/(r+0.005) помогла это вылечить.Еще добавил стенки у симуляции. Частицы отскакивают от стенок со случайными скоростями в соответствии с распределением Больцмана.Все залил на гитхаб.На видео - 200 частиц в мире 10х10 с r0=0,1. От стенок частички отскакивают с очень маленькими скоростями. По сути частицы начинают конденсироваться в капельки, в результате чего выделяется энергия. Эта энергия переходит в кинетическую энергию выстреливающих из капли частиц, которые долетают до стенки, там останавливаются и уже остывшие опять попадают в капли.Гравитацию здесь я не включал.
>>364748Ты вобще в курсе, что в реальном мире гравитация-именно 1/r^2?
>>364748А если заменить силу отталкивания расчётом упругого(или не совсем, с каким-нибуть коэфициентом неупругости) столкновения при расстоянии между частицами<размера, не будет так проще?
>>364756У меня 2d-мир, а не реальный.https://www.physicsforums.com/threads/gravity-in-2d-universe.271918/
>>364769То есть ты рассматриваешь выдуманный мир, и ни на что большее не претендуешь? Ну ок тогда.
>>364774Предлагаю вести расчеты сразу в 11 мерном пространстве с учетом всех существующих законов.
>>364775Как докажут-так сразу.Я почему спросил, в пространстве с 1/r гравитацией этот самый "протопланетный диск" может вести себя не так, как он ведёт себя в нормальном мире. Как минимум частицы не могут улететь из системы навсегда(потенциал неограниченно растёт при росте r), возможно будут и другие отличия
>>364776>Как минимум частицы не могут улететь из системы навсегда(потенциал неограниченно растёт при росте r), возможно будут и другие отличияНу, можно просто убирать те частицы, которые улетели достаточно далеко, например.ОП же все это делает по фану. Когда-нибудь и до боле сложных симуляций дойдут руки, я уверен.
>>364778Ну я просто не вижу никакой сложности в возведении r в квадрат в формуле для силы. Или в замене потенциала на 1/r.
>>364774>То есть ты рассматриваешь выдуманный мир, и ни на что большее не претендуешь? Именно. Хочу посмотреть, какие эффекты в такой симуляции возможны, как вообще себя будет вести система.> Как минимум частицы не могут улететь из системы навсегдаТоже думал над этим. На самом деле проблемы поставить 1/r2 нет никакой, и я обязательно это попробую. Но пока мне 1/r кажется оптимальнее.Сейчас решил посмотреть на, как вообще частички организуются в своих агломератах. Регулируя температуру стенки (она влияет на скорость отталкивающихся от нее частиц, которые получают масквелловское распределение), можно получить и псевдокристалл, и жидкость, и газ. Не уверен только, насколько эти процессы равновесны и соответствуют ли им определенные температуры.
>>364780r - это расстояние в местной системе координат. Его определение уже учитывает переход от 3D к 2D.Протопланетные диски вращаются в плоскости, но подчиняются трехмерным законам.Для быстроты счета все средства хороши, но сможешь ли ты интуитивно оценивать "правдоподобность" результатов и будет ли смысл в их интерпретации?Определись.
>>364802Ты говоришь о нефизичности силы 1/r, хотя у меня тут масштабы гравитации и межмолекулярных взаимодействий очень близки. То есть физичности в этой симуляции вообще нет никакой. Я не ради нее все это делаю. Хотя посмотреть на кристаллизацию, плавление и кипение этой капельки мне приятно.>>364760Да, попробую просто неупругое взаимодействие вместо потенциала Морзе ввести. А то при сближении частицы разгоняются, и все начинает разлетаться. Еще вариант ввести "излучение", чтобы при больших относительных скоростях энергия убиралась. Пока нет вообще идей, как это сделать.
>>364813Попробуй в качестве эксперимента ввести СТО с удобной тебе "скоростью света". Ради пересчета массы на больших скоростях. Тогда закачка энергии в частицы не приведет к их бесконечному ускорению.
>>364814Что-то это адово. Тем более скорости и так конечны, но быстрые частицы не формируют агрегаты, которые я так хочу получить.Еще я не совсем не физик, поэтому задам глупый вопрос. Почему галактики вращаются? Если я хочу сделать свою систему вращающейся, мне надо в начальных условиях ее закрутить с такой скоростью, чтобы центробежная сила на перефирии примерно равнялась гравитации?
>>364816Экстремально просто, да. Галактики так закрутило изначально.Они должны быть равны везде, а не только на периферии.
>>364816>Почему галактики вращаются?Потому что СМЧД в центре, и темная материя на краях.
>>364816Потому что начальное вращение+закон сохранения момента импульса. Тебе достаточно просто дать всем частицам начальную скорость. Слишком быстрые улетят на бесконечность, остальные будут вращатся по эллипсам, и после долгих лет столкновений эллипсы перейдут в окружности. Я потому и предлагал считать столкновения, в них импульс и момент импульса сохраняются по определению. А потерянную на неупругость энергию можно учесть как разогрев столкнувшихся кусочков, впрочем тебе это пока не нужно. Только учти, что неупруго сталкиваться могут разве что пылинки/камешки протодиска. Звёзды галактики практически не сталкиваются и взаимодействуют только гравитацией, без столкновений(размеры звёзд намного меньше расстояний), молекулы и атомы сталкиваются исключительно упруго, и никакой гравитацией там не пахнет, зато электромагнитные силы дают интересные потенциалы вида 1/r^m-1/r^n
>>364852Упругие столкновения звезд? Прохладная история, братишка.
>>364874Ну так я об этом и написал>Звёзды галактики практически не сталкиваются
>>364884Прости, не так понял. Но все же механика самопроизвольного сжатия изначально рандомного скопления звезд или частиц пыли во вращающийся диск нетривиальна. На коленке такое не смоделируешь.
>>364914Ну в диск они сами по себе не сожмутся, вращение в одной плоскости должно быть изначально. А может и нет, возможно вековые взаимодействия звёзд/пылинок выравнивают орбиты в одну плоскость. Действительно, вопрос "получится ли из облака хаотично движущихся частиц диск" нетривиальный, и решить его можно лишь хорошим моделированием с учётом продолжительного времени.
>>364918Ну вот мы же имеем наблюдение, что все галактики вращаются, причем с довольно большой скоростью. "Общее вращение", как бы мы его ни определили, у изначального облака пыли будет около нуля, если там все случайно распределено. Т.е. даже если у него и будет некая ось, вокруг которой, случайно, вращается больше частиц, чем вокруг других, разница эта будет крайне мала. Там имеет место какая-то самоорганизация этого движения, которая усиливает изначальное вращение. В интернете пишут, что это связано с приливными силами, но подробного вывода я не нашел.
>>364931А закон сохранения момента импульса говорит, что эта "крайне малая разница" такой и останется, хоть ты трижды приливные силы рассматривай.
>>364932Это для твердых тел только применимо. Под действием гравитации вращение начинается легко: представь две звезды, медленно летящие навстречу друг другу, и при встрече образующие двойную систему. Вращение появилось из ниоткуда, причем оно может быть очень быстрым.
>>364937Если они летели строго навстречу-они столкнутся. Если же их скорости направлены не строго по одной прямой-это и даёт момент импульса, и в дальнейшем он таким и останется
>>364931>все галактики вращаютсяНеправильные галактики не вращаются.У шарообразных галактик нет диска.
>>364938На пальцах это не объяснить, в общем. См. пикрел, статья http://link.springer.com/article/10.1007%2FBF01001625
Хотя, может еще вот такая аналогия подойдет: набрал ты ванну воды, дождался пока она стала почти полностью спокойной, только тепловое движение молекул осталось. Потом выдергиваешь пробку, и наблюдаешь как образуется воронка, которая завлекает в это круговое движение всю воду в ванне. Сжатие облака в галактику - это как вытекание воды через воронку, и механизм появления углового момента, видимо, аналогичен.
>>364944Что я тут должен увидеть? Момент импульса замкнутых систем сохраняется, это 100%, это следствие изотропности пространства, и даже гравитационный коллапс в чёрную дыру не нарушает этого.Приливные эффекты могут перераспределить этот момент между телами в галактике, но изменить его может только внешнее возмущениеПо ссылке мне предлагают купить эту статью/книгу за 40$>>364946Вытекающая вода-не замкнутая система, аналогия неуместна.
>>364949Галактика тоже незамкнута. При ее формировании вещество может быть выброшено за ее пределы.Прочитай текст на картинке, я тебе заскринил выводы статьи.Ты мне сейчас пытаешься пересказывать школьные истины, которые я прекрасно знаю. А я тебе пытаюсь объяснить, как вращение галактик появляется при этих условиях. Твои возражения это уровень "энтропия может только возрастать, поэтому появление жизни невозможно". Или "масса притягивает массу, поэтому вселенная должна сжаться в точку". Реальные процессы несколько сложнее этих примитивных обобщений.
>>364952>Галактика тоже незамкнута. При ее формировании вещество может быть выброшено за ее пределы.Не спорю. Но речь не об этом>Прочитай текст на картинке, я тебе заскринил выводы статьи.Перечитал, слабо понял, о чём суть. Что-то куда-то конденсируется, какие-то пертурбации.>Ты мне сейчас пытаешься пересказывать школьные истины, которые я прекрасно знаю. А я тебе пытаюсь объяснить, как вращение галактик появляется при этих условиях.Ты начал мне рассказывать про вращение, которое появляется из ниоткуда какой-то самоорганизацией, потом про то, что ЗСМИ работает лишь для твёрдых тел и звёзды, пролетающие мимо и обьединяющиеся в двойную систему(что само по себе практически невозможно, после пролёта мимо друг друга они разлетятся с теми же скоростями, изменив лишь направление, за вычетом незначительной энергии, потерянной на гравитационные волны), после этого тыкнул статью. Я не спорю, что самоорганизация может происходить, более того, я рассматривал этот вариант выше >>364914. Может быть момент импульса центрального тела приливными взаимодействиями передаётся удалённым телам, может происходит выбрасывание вещества, движущегося в другой плоскости, но это ни в коем случае не "вращение из ниоткуда"
>>364955Ошибся со ссылкой на свой пост >>364918
Вот что сейчас получилось. Примерно то, что хотел сделать, только пока в маленьких масштабах.Здесь потенциал Леннарда-Джонса между частицами. Быстро образовались агрегаты (на первом видео), а через некоторое время осталось только два больших кристалла, которые до сих пор вращаются и пока не сталкиваются.
>>364966А если чуть "разогреть" частицы, получится что-то типа жидкости?
>>364970Да. Тут и дефекты залечиваются, есть плавление/кристаллизация/испарение.
Рано радовался я. То, что получилось в >>364966- вызвано большим шагом по времени.Уменьшил шаг в 10 раз, и теперь частицы просто так друг с другом не слипаются, что, в общем-то, логично. Нужно отводить энергию от них.
>>365036Создай их с изначально меньшей энергией, посмотри что выйдет, ну или введи механизм остывания излучением. По идее, тогда частицы не смогут выйти из потенциальной ямы
>>365040Так я их создаю изначально диссоциированными, она разогреваются уже в результате агрегации.Я не знаю, какую идею заложить в основу излучения. Остывать должно только связанные атомы, и надо реализовать это максимально эффективно с точки зрения скорости расчета.Ввести вязкое трение для близких частиц?
>>365055>Я не знаю, какую идею заложить в основу излучения.Простейший вариант-ввести некую среднюю энергию, и каждый шаг времени для каждой частицы пересчитывай энергию, E'=(E-E0)x0.99999+E0. Это не соответствует реальности, но это просто.Вариант сложнее(ненамного)-рассчитывать полное излучение твоей системы как абсолютно чёрного тела(определяя температуру через энергию частиц) и отнимать энергию этого излучения.
>>365091Не, твои варианты приведут к тому, что будет меняться поступательная энергия в том числе и крупных агломератов.Нужно, чтобы агломератов остывали, но не тормозились.И в явном виде энергия нигде е фигурирует — только положние и скорость. Влиять можно введением только какой-то хитрой силы трения. Вообще думаю пока оптимизацией заняться, может попытаться на GPU считать
>>365242Вот тогда такой вариант.Рассматриваешь "столкновение" частиц(когда они на достаточно малом расстоянии, ниже равновесного, и сближаются)Далее ты, не нарушая закона сохранения импульса, забираешь часть энергии у этих частиц, типа на возбуждение атома, и затем на излучение. После чего разворачиваешь скорости(как если бы они "столкнулись" и теперь разлетаются)
>>364630 (OP)бампану, парни а можете написать тоже самое но на дельфях или си, а то этот ваш питон нипанимать.