LINUX.ORG.RU

Моделирование броуновского движения в гравитационном поле

 , , , ,


0

1

Я тут написал примитивную программу для моделирования броуновского движения, только на целочисленной арифметике, и частица там может ходить по 8 направлениям, как король в шахматах. Т.е. каждый квант времени частица меняет свою координату одним из способов:

[?][?][?]
[?][*][?]
[?][?][?]
и вероятность каждого шага равна 1/8. Если при попытке пойти куда-то частица упирается в стенку, она остается неподвижной на этом шаге симуляции. Гравитация симулируется так: каждый N-тый шаг частица идет на клетку вниз.
[ ][ ][ ]
[ ][*][ ]
[ ][.][ ]
Если внизу есть пол - остается неподвижной,

Загрузил я в этот симулятор шахматного короля такую вот «карту» https://i.imgur.com/u9nnDCS.png c начальными координатами x=3, y=250 (это получается левый нижний угол):

0
 +-----> (x)
 |
 |
 |
 V

(y)
и потом попробовал посмотреть на то, где обычно оказывается координата частицы после длительной симуляции. И вот получается такая картина https://i.imgur.com/NUXtBCo.png

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

[#][ ][#][?][#][ ][#]...
[#][ ][#][*][#][ ][#]...
[#][ ][#][?][#][ ][#]...
то идти она может только вверх и вниз, с вероятностью 1/8 вверх, и 1/8 вниз, 6/8 вероятность что она стоит на месте, но при этом гравитация ее толкает вниз, и получается так, что в этих решетках частица опускается быстрее, чем это происходит в пустом пространстве. А насколько это применимо к динамике движения реальных молекул газа или частиц в каких-нибудь коллоидах? Если сделать решетку из каких-нибудь нанотрубок достаточно большого диаметра, и в них залетают молекулы газа, они там тоже будут быстрее падать, чем без них?

Исходники программы могу выложить, если она кому-то интересна.

★★★★★

Последнее исправление: SZT (всего исправлений: 1)
Ответ на: комментарий от SZT

Распределение Максвелла никак не учитывает гравитацию т.к. оно про идеальный газ.

Нет, распределение Максвелла не только про идеальный газ, а гравитация на идеальный газ тоже действует.

Ещё раз - если Вы хотите сделать клеточный автомат с правильной физикой, берите метод Монте-Карло. Все уже придумано до Вас.

Я так понял Вам надо посмотреть насколько пучок нанотрубок будет эффективнее обычной мембраны?

AntonI ★★★★★
()
Ответ на: комментарий от AntonI

Ещё раз - если Вы хотите сделать клеточный автомат с правильной физикой, берите метод Монте-Карло. Все уже придумано до Вас.

А у меня разве уже не метод Монте-Карло? Я пошагово моделирую этот клеточный автомат, который каждый шаг случайно меняет координату частицы, беря случайные байты из /dev/urandom.

Я так понял Вам надо посмотреть насколько пучок нанотрубок будет эффективнее обычной мембраны?

Надо посмотреть, что если частица в сильном гравитационном поле упала в пучок вертикально ориентированных нанотрубок:

[ ][ ][ ][ ][ ][ ][ ][#]
[ ][ ][ ][ ][ ][ ][ ][#]
[ ][#][ ][ ][ ][ ][ ][#]
[ ][#][ ][#][ ][#][ ][#]
[ ][#][ ][#][@][#][ ][#]
[ ][#][ ][#][ ][#][ ][#]
[ ][#][ ][#][ ][#][ ][#]
[ ][#][ ][#][ ][#][ ][#]
[ ][#][ ][#][ ][#][ ][#]
[ ][#][ ][#][ ][#][ ][#]
[ ][#][ ][#][ ][#][ ][#]
[ ][#][ ][#][ ][#][ ][#]
[ ][#][ ][#][ ][#][ ][#]
[ ][#][ ][#][ ][#][ ][#]
[ ][#][ ][ ][ ][ ][ ][#]
[ ][#][ ][ ][ ][ ][ ][ ]

То какова вероятность, что частица вылетит в итоге сверху, какова вероятность, что частица вылетит в итоге снизу:

[ ][ ][ ][ ][ ][ ][ ][#]
[ ][ ][ ][ ][ ][ ][ ][#]
[ ][#][?][?][?][?][?][#]
[ ][#][ ][#][ ][#][ ][#]
[ ][#][ ][#][@][#][ ][#]
[ ][#][ ][#][ ][#][ ][#]
[ ][#][ ][#][ ][#][ ][#]
[ ][#][ ][#][ ][#][ ][#]
[ ][#][ ][#][ ][#][ ][#]
[ ][#][ ][#][ ][#][ ][#]
[ ][#][ ][#][ ][#][ ][#]
[ ][#][ ][#][ ][#][ ][#]
[ ][#][ ][#][ ][#][ ][#]
[ ][#][ ][#][ ][#][ ][#]
[ ][#][?][?][?][?][?][#]
[ ][#][ ][ ][ ][ ][ ][ ]

и как эти вероятности будут отличаться, если б никаких нанотрубок там в том месте не было:

[ ][ ][ ][ ][ ][ ][ ][#]
[ ][ ][ ][ ][ ][ ][ ][#]
[ ][#][?][?][?][?][?][#]
[ ][#][ ][ ][ ][ ][ ][#]
[ ][#][ ][ ][@][ ][ ][#]
[ ][#][ ][ ][ ][ ][ ][#]
[ ][#][ ][ ][ ][ ][ ][#]
[ ][#][ ][ ][ ][ ][ ][#]
[ ][#][ ][ ][ ][ ][ ][#]
[ ][#][ ][ ][ ][ ][ ][#]
[ ][#][ ][ ][ ][ ][ ][#]
[ ][#][ ][ ][ ][ ][ ][#]
[ ][#][ ][ ][ ][ ][ ][#]
[ ][#][ ][ ][ ][ ][ ][#]
[ ][#][?][?][?][?][?][#]
[ ][#][ ][ ][ ][ ][ ][ ]

и как на всё это влияет наличие или отсутствие гравитации и ее сила.

SZT ★★★★★
() автор топика
Последнее исправление: SZT (всего исправлений: 4)
Ответ на: комментарий от SZT

А у меня разве уже не метод Монте-Карло?

Метод Монте-Карло это не просто че то как то куда то случайно двигать. Метод Монте-Карло это метод позволяющий на основании заданной физическо-математической модели (потенциалов взаимодействия и пр) построить алгоритм, который будет выдавать правильные средние величины. А у того алгоритма который Вы построили физ-мат модель фиг знает какая.

Надо посмотреть, что если частица в сильном гравитационном поле упала в пучок вертикально ориентированных нанотрубок

Для начала сравните mgl и kT. Если они одного порядка то можно о чем то дальше говорить. Если mgl<<kT то и без всякого моделирования понятно что гравитация тут даст такой же вклад как сила Кориолиса и пятна на Солнце.

AntonI ★★★★★
()
Ответ на: комментарий от AntonI

Для начала сравните mgl и kT. Если они одного порядка то можно о чем то дальше говорить. Если mgl<<kT то и без всякого моделирования понятно что гравитация тут даст такой же вклад как сила Кориолиса и пятна на Солнце.

Ну хорошо, допустим. В качестве газа возьмем ксенон. Атомная масса (m) у него 131.293 а.е.м., что равно примерно 2.18e-19 г. Ускорение свободного падения (g) возьмем за 10000 см/с^2 (т.е. мы раскручиваем в центрифуге или где-то на другой планете это проводим). Высоту (h) возьмем 10000 см. Тогда потенциальная энергия E = mgh = 10000*10000*2.18E-19 = 2.18E-11 г*см^2/c^2. Это в Эргах, переведем в джоули. Один Эрг равен 1E-7 Дж - получается 2.18E-18 Дж.

Температура кипения ксенона в кельвинах равна 165 К, для температуры модели пусть будет чуть больше, например 175 К. Умножим постоянную Больцмана (k) 1.380649E-23 на это дело - получается что kT равно 2.4161358E-21 Дж.

Выходит так, что kT < mgh. Я нигде не ошибся?

В общем я не вижу проблемы подобрать такие параметры, чтобы kT < mgh. Только в чем это можно адекватно моделировать?

SZT ★★★★★
() автор топика
Последнее исправление: SZT (всего исправлений: 2)
Ответ на: комментарий от SZT

В общем я не вижу проблемы подобрать такие параметры, чтобы kT < mgh.

Но может быть проблемой реализовать такие параметры в реальности - если Вы изучает вопрос создания реальной установки. А так то да.

Только в чем это можно адекватно моделировать?

Это позволит понять нужно ли моделировать вообще. И ещё поможет выбрать параметры при которых моделирование будет интересным. Ваш алгоритм должен зависеть от температуры и g, теперь Вы знаете как они должны соотносится что бы искомый эффект имел место.

В первом приближении наличие нанотрубки не должно никак влиять, т.е. искомого эффекта нет. Но я могу ошибаться

AntonI ★★★★★
()
Ответ на: комментарий от AntonI

Но может быть проблемой реализовать такие параметры в реальности - если Вы изучает вопрос создания реальной установки. А так то да.

Если пытаться делать реальную установку, чтобы она работала по мотивам того клеточного автомата, лучше наверное взять банку с некоторой жидкостью при условиях вблизи точки кипения, в нее поместить другую банку на высокой подставке, сверху той банки разместить некий адсорбент, на который пары той жидкости легко бы конденсировались, отдавая потенциальную энергию адсорбенту, и все это дело термостатировать. https://i.imgur.com/LrMhoJy.png . И надеяться на то, что жидкость при постоянной температуре со временем переконденсируется во внутреннюю банку.

Тут уже процессы испарения-конденсации будут, и моделировать это надо будет сильно по-другому. Но вряд ли это заработает.

SZT ★★★★★
() автор топика
Последнее исправление: SZT (всего исправлений: 1)
Ответ на: комментарий от SZT

Пишем уравнение Фоккера-Планка для такой системы:

f_t + v f_r - g f_v = gamma (T f_v + v f)_v

f = f(r, v, t) - функция распределния, r, v - координата и скорость тяжелой частицы, _t производная по времени, _r, _v означают соответствующую nabla, gamma - коэффициент диссипации, T - безразмерная температура.

Смотрим на него и понимаем, что поскольку есть расщепление по координатам то предложенные Вами вариант с нанотрубками ничего не даст.

А вот для конических нанотрубок не все так очевидно. Но делать их не умеют. Можно еще градиент температур по ветикали создать и на этом попытаться поиграть…

AntonI ★★★★★
()
Последнее исправление: AntonI (всего исправлений: 1)
Ответ на: комментарий от AntonI

Если использовать воронки, можно тогда в качестве газа взять линейные алканы, чтобы они хорошо вниз соскальзывали, и плохо - вверх. И воронки со сдвигом установить друг над другом https://i.imgur.com/JEriAe8.png

Должно получиться так, что при попытке броуновского движении снизу вверх, алкан будет утыкаться в какие-то тупики и быстро падать назад.

SZT ★★★★★
() автор топика
Последнее исправление: SZT (всего исправлений: 1)
Ответ на: комментарий от SZT

Если использовать воронки, можно тогда в качестве газа взять линейные алканы, чтобы они хорошо вниз соскальзывали, и плохо - вверх.

Глянь решение без воронок и трубок в моделирующем комплексе “Виртуальная центрифуга” (PDF) фиг.1,2.

И воронки со сдвигом установить друг над другом https://i.imgur.com/JEriAe8.png

Если в качестве газа взять электроны, а вместо гравитации ЭМ-поле, то получится ФЭУ :).

quickquest ★★★★★
()
Ответ на: комментарий от AntonI

Нет, распределение Максвелла не только про идеальный газ, а гравитация на идеальный газ тоже действует.

Распределение Максвелла не описывает тот факт, что частица в гравитационном поле будет чаще лететь вниз, чем вверх.

Координату частицы запишем в декартовой системе координат x, y, z. Скорость это sqrt( (dx/dt)^2 + (dy/dt)^2 + (dz/dt)^2 ), распределение Максвелла описывает распределение вероятности скоростей для частиц разных масс при разных температурах, но оно не описывает, что изменение координаты по вертикальной оси z чаще будет отрицательным, чем положительным (если внизу нет пола, в которую частица уперлась, и кстати распределение Максвелла это тоже не описывает).

Скорость можно представить и в полярной форме, например так {\begin{cases}\frac{\Delta x}{\Delta t}=\bar {v}\sin \theta \cos \varphi ,\\\frac{\Delta y}{\Delta t}=\bar {v}\sin \theta \sin \varphi ,\\\frac{\Delta z}{\Delta t}=\bar {v}\cos \theta .\end{cases}} (https://i.imgur.com/rAotSFQ.png)

Если частица влетит в трубку, то скорости по осям x y (т.е. dx/dt и dy/dt) явно будут ограничены радиусом этой трубки, распределение Максвелла это тоже никак не учитывает.

Ну хорошо, допустим такая идея. Координату частицы храним как x y z, каждый шаг из ГПСЧ берем два случайных угла θ и φ (равномерное распределенные между 0 и 2pi) и скорость v (распределена по распределению Максвелла), и переводим это в декартову систему, немного уменьшаем координату z (частица падает) и сначала проверяем, врежется ли частица в стенку (пол, потолок и проч.) на таком шаге. И если врезается, что лучше делать? Сделать как бы отражение и частичную потерю энергии? Или может сначала стать в точке пересечения траектории частицы и стенки, а потом под таким-то случайным углом с каким-то сложным распределением делать рикошет? А может распределение Максвелла вообще не стоит использовать, если есть рядом какие-то стенки? Ведь если моделируется тяжелый атом ксенона и другие атомы газа это гелий, то и у атомов гелия будет другое распределение скоростей в окрестности стенок, и там надо иначе все считать?

SZT ★★★★★
() автор топика
Последнее исправление: SZT (всего исправлений: 4)
Ответ на: комментарий от SZT

Распределение Максвелла не описывает тот факт, что частица в гравитационном поле будет чаще лететь вниз, чем вверх.

Не описывает. Потому что распределение Максвелла это РАВНОВЕСНОЕ (стационарное) распределение, и если оно установилось то частицы летают вверх и вниз одинаково часто.

что лучше делать?

Лучше взять метод Монте-Карло, схему Метрополиса. У Вас есть две возможности - изобретать что то свое (и оно будет с вероятностью 99.99% отражать неверную физику) или взять готовое. Для этого надо погуглить и почитать.

AntonI ★★★★★
()
Ответ на: комментарий от AntonI

Лучше взять метод Монте-Карло, схему Метрополиса.

Какую литературу по этой теме вы можете порекомендовать, чтобы я эту схему Метрополиса мог запрограммировать и сделать такое моделирование? А есть уже готовые свободно-доступные программы, где можно провести такое моделирование? Если есть, где мне их скачать?

SZT ★★★★★
() автор топика
Последнее исправление: SZT (всего исправлений: 1)
Ответ на: комментарий от AntonI

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

Вот цитата с хабра

Марковская цепь будет обходить дискретное пространство состояний, образуемое тремя состояниями погоды:

state_space = ("sunny", "cloudy", "rainy")

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

transition_matrix = np.array(((0.6, 0.3, 0.1),
                              (0.3, 0.4, 0.3),
                              (0.2, 0.3, 0.5)))

И как мне понять, какие для моей задачи будут относительно разумные значения переходов (в моей задаче - изменение положения частицы в пространстве в зависимости от окружения в ее окресности и текущей скорости)?

Допустим, есть некая частица, для простоты моделируемая клеточным автоматом

   ???
  ?????
 ???????
 ???@???
 ???????
  ?????
   ???
Знаком ? отмечены позиции, которые частица может занять после 1 шага симуляции. Допустим, мы добавили стену
  #
  #???
  #????
  #?????
  #?@???
  #?????
  #????
  #???
  #
И теперь количество возможных позиций ограничено, и вероятности нахождения в доступных позициях отличаются от тех, которые были раньше при свободном плавании. Если раньше частица полетела бы налево и заняла б крайне левую позицию, то теперь она уткнется в стенку, отскочит, потеряет часть энергии и займет позицию справа. Как (по какому принципу) мне это подбирать?

SZT ★★★★★
() автор топика
Последнее исправление: SZT (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.