2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4, 5 ... 7  След.
 
 Re: Трехмерная гравитация и двухмерный мир
Сообщение29.02.2016, 14:23 


03/02/12

530
Новочеркасск
Munin в сообщении #1103075 писал(а):

Можно поиграть с другими законами взаимодействия: например, ввести отталкивание (всех ото всех), притяжение и отталкивание (и поровну "+" и "−" зарядов), или какие-нибудь юкавские силы $e^{-r/r_0}/r^2$ (упрощённый вариант ядерных сил), леннард-джонсовские $1/r^{13}-1/r^7$ (упрощённый вариант межмолекулярных сил). Впрочем, ваш вариант тоже демонстрирует "короткодействие", поскольку отличается от "истинно двумерной гравитации" $1/r.$


Да, да - я уже тоже просил автора ввести как можно больше изменяемых параметров в интерфейс пользователя (желательно - все)..
И, действительно, сомнения насчет "двумерной" и "трехмерной" гравитации - не очень понимаю, что сейчас вышло?..
Попросил изучить OpenGL - для "чистой трехмерной гравитации"..

-- 29.02.2016, 15:26 --

Cos(x-pi/2) в сообщении #1103078 писал(а):
Прошу извинить меня за недогадливость, но вот какой вопрос возник. Задал я всего два тела, чтобы проверить, будут ли они вращаться вокруг общего центра масс. И не понял, как задать им начальные скорости и положения? Прога пока показывает, что они летят навстречу друг другу и слипаются. Как в этой проге задать произвольные начальные условия - векторы скорости и координаты тел?


Для двух тел пока нельзя - минимально, - 2 тела, вот для 3-го уже можно что-то делать (я тоже попросил автора сделать, чтобы это было возможно..)
Хотя, с другой стороны - слипшиеся тела можно представлять одним телом. Соответственно, - играть массой и размером..

 Профиль  
                  
 
 Re: Трехмерная гравитация и двухмерный мир
Сообщение29.02.2016, 14:27 
Заслуженный участник


28/12/12
7946
alexo2 в сообщении #1103054 писал(а):
Поэтому, при сближении тел до 0-го расстояния, вступает в действие "упругость", которая частично гасит энергию...

Прямо таки до нулевого? :-)

Munin в сообщении #1103079 писал(а):
И вот моделей диссипации - бывает как раз очень много. Так что тут желательно, чтобы вы привели формулы.

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

Munin в сообщении #1103079 писал(а):
Кроме того, могут быть интересны формулы вашего численного моделирования - вы решаете дифференциальные уравнения, видимо, 2 порядка (законы Ньютона). Каким образом? Явная схема, неявная схема?

Да, это самое интересное. Хотя, по-моему, для ОДУ не применяются неявные схемы (разве что причислить к оным предиктор-корректор). Обычно Верле в скоростной форме достаточно.

 Профиль  
                  
 
 Re: Трехмерная гравитация и двухмерный мир
Сообщение29.02.2016, 14:28 
Заслуженный участник


20/08/14
11867
Россия, Москва
Munin в сообщении #1103075 писал(а):
Вообще, можно на ваших картинках найти условные аналоги "кристаллов" и "газа", а может быть, даже и "жидкости".
alexo2, а подобрав аккуратно коэффициент упругости можно наверное и "чёрные дыры" получить. :-)

alexo2 в сообщении #1103081 писал(а):
И, действительно, сомнения насчет "двумерной" и "трехмерной" гравитации - не очень понимаю, что сейчас вышло?
Вышла система, полностью располагающаяся в одной плоскости и имеющая скорости всех тел в той же самой плоскости. Физике (в части гравитации) вроде как отвечает, но абсолютно нереальна - не бывает такого точного совпадения для более чем трёх тел.

 Профиль  
                  
 
 Re: Трехмерная гравитация и двухмерный мир
Сообщение29.02.2016, 14:32 


03/02/12

530
Новочеркасск
Munin в сообщении #1103079 писал(а):
alexo2 в сообщении #1103054 писал(а):
Но, если бы не использовался коэффициент "упругости", тела бы бесконечно отскакивали друг от друга. Поэтому, при сближении тел до 0-го расстояния, вступает в действие "упругость", которая частично гасит энергию...

Вы, видимо, не в курсе, но в физике слово "упругость" означает именно отскакивание. А у вас добавлена не упругость, а диссипация ("рассеивание" энергии). В механике диссипация проявляется в виде трения, неупругого удара, вязкого трения в среде, и т. п.

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

Кроме того, могут быть интересны формулы вашего численного моделирования - вы решаете дифференциальные уравнения, видимо, 2 порядка (законы Ньютона). Каким образом? Явная схема, неявная схема?


Я так понял, что интерес какой-то имеется.. Поэтому, я свяжусь с зятем, - или пусть сам все объясняет, или, просто дает разрешение на выкладывание хотя бы кусков кода (лично я бы выложил, но, - сами понимаете..) Так получилось, что увидев прогу, я точно заинтересовался, попросил разрешения узнать, будет ли интерес на тематических форумах..
Что касается "упругости", - да, я понимаю, что термин в данном случае скорее некорректен, но ничего лучше мы не придумали..

-- 29.02.2016, 15:37 --

Dmitriy40 в сообщении #1103083 писал(а):
подобрав аккуратно коэффициент упругости можно наверное и "чёрные дыры" получить. :-)


И это в голову приходило.. 8-)

 Профиль  
                  
 
 Re: Трехмерная гравитация и двухмерный мир
Сообщение29.02.2016, 14:38 
Заслуженный участник


29/09/14
1248
Когда-то я тоже пробовал численно моделировать двумерное движение с тяготением тел, и сразу напоролся на то, что фиксированный шаг по времени не есть очень хорошо: за большое количество шагов могут возникать большие ошибки.

Вот поэтому и говорю теперь: для первоначальной (самой простой!) проверки проги надо её как следует погонять всего на двух телах с самыми разнообразными начальными условиями. Для двух тел есть несложное аналитическое решение и с ним можно будет сравнивать результат численного моделирования. А пока хотя бы такая простейшая проверка невозможна, то, ИМХО, и говорить особо не о чем.

 Профиль  
                  
 
 Re: Трехмерная гравитация и двухмерный мир
Сообщение29.02.2016, 14:41 
Заслуженный участник


09/05/12
25179
alexo2 в сообщении #1103002 писал(а):
Вопрос - соответствует ли такая модель принципиально основным физическим проявлениям гравитации?
По описанию - скорее нет, чем да. "Упругость" (которая на самом деле "неупругость", поскольку потеря механической энергии) - сугубо негравитационное явление, а у Вас именно она в большей степени определяет результаты. В реальной жизни, конечно, диссипация энергии бывает, но не настолько заметная.

 Профиль  
                  
 
 Re: Трехмерная гравитация и двухмерный мир
Сообщение29.02.2016, 14:45 
Заслуженный участник


20/08/14
11867
Россия, Москва
Да, тоже хотел предложить использовать адаптивный шаг по времени, чтобы за один шаг система не претерпевала существенных изменений (с заданной точностью) из текущего состояния.

Cos(x-pi/2)
Возьмите две кучки по 2 тела в каждой и считайте каждую кучку одним телом. При большом расстоянии между "кучками" будет похоже на поведение просто двух тел.

 Профиль  
                  
 
 Re: Трехмерная гравитация и двухмерный мир
Сообщение29.02.2016, 14:46 


03/02/12

530
Новочеркасск
Собственно, вот кусок кода с расчетами:
Код:
procedure TCalcThread.Execute;
var
    i,l,cnt:integer;
    nV:TVec;
    Fg,Fu,Lc,p1,p2:Real;
begin
    repeat
        case STEP of
          1:begin
                for i:= 1 to K do
                begin
                    F[i]:= V0;
                    V[i]:= V0;
                    P[i]:= 0;
                end;
                cnt:= 0;
                i:= nI;
                l:= nL - 1;
                repeat
                    inc(cnt);        //Блок счётчиков
                    inc(l);
                    if l > K then
                    begin
                        inc(i);
                        l:= i + 1;
                    end;
                    Lc:= Sqrt(Sqr(MT[i].X - MT[l].X) + Sqr(MT[i].Y - MT[l].Y));
                    if Lc > 1.3*R then Fg:= G*MT[i].M*MT[l].M/Sqr(Lc) //Ограничение силы притяжения
                                  else Fg:= G*MT[i].M*MT[l].M/Sqr(1.3*R);
                    nV.X:= (MT[l].X - MT[i].X)/Lc;
                    nV.Y:= (MT[l].Y - MT[i].Y)/Lc;
                    F[i].X:= F[i].X + Fg*nV.X;
                    F[i].Y:= F[i].Y + Fg*nV.Y;
                    F[l].X:= F[l].X - Fg*nV.X;
                    F[l].Y:= F[l].Y - Fg*nV.Y;
                    if Lc < 2*R then
                    begin
                        Fu:= Gu*Sqr(2*R - Lc);  //Сила взаимодействия
                        P[i]:= P[i] + Fu;
                        P[l]:= P[l] + Fu;
                        F[i].X:= F[i].X - Fu*nV.X;
                        F[i].Y:= F[i].Y - Fu*nV.Y;
                        F[l].X:= F[l].X + Fu*nV.X;
                        F[l].Y:= F[l].Y + Fu*nV.Y;
                        p1:= MT[i].V.X*nV.X + MT[i].V.Y*nV.Y; //Проекция скоростей шаров на норма-вектор
                        p2:= MT[l].V.X*nV.X + MT[l].V.Y*nV.Y;
                        if (p1 - p2) > 0.2 then
                        begin
                            V[i].X:= V[i].X - nV.X*(p1 - p2)*Gs*MT[l].M/(MT[i].M + MT[l].M);
                            V[i].Y:= V[i].Y - nV.Y*(p1 - p2)*Gs*MT[l].M/(MT[i].M + MT[l].M);;
                            V[l].X:= V[l].X + nV.X*(p1 - p2)*Gs*MT[i].M/(MT[i].M + MT[l].M);;
                            V[l].Y:= V[l].Y + nV.Y*(p1 - p2)*Gs*MT[i].M/(MT[i].M + MT[l].M);;
                        end;
                    end;
                until cnt >= KL;
                STEP:= 2;
            end;


-- 29.02.2016, 15:48 --

Cos(x-pi/2) в сообщении #1103090 писал(а):
Когда-то я тоже пробовал численно моделировать двумерное движение с тяготением тел, и сразу напоролся на то, что фиксированный шаг по времени не есть очень хорошо: за большое количество шагов могут возникать большие ошибки.

Вот поэтому и говорю теперь: для первоначальной (самой простой!) проверки проги надо её как следует погонять всего на двух телах с самыми разнообразными начальными условиями. Для двух тел есть несложное аналитическое решение и с ним можно будет сравнивать результат численного моделирования. А пока хотя бы такая простейшая проверка невозможна, то, ИМХО, и говорить особо не о чем.


Да, сделает и с 2-мя телами..
А также - чтобы можно было масштабировать изображение, затухающий след траектории движения добавленных вручну шаров и.. (что-то ещё говорил, уже и не вспомню...)

 Профиль  
                  
 
 Re: Трехмерная гравитация и двухмерный мир
Сообщение29.02.2016, 14:51 
Заслуженный участник


09/05/12
25179
Cos(x-pi/2) в сообщении #1103090 писал(а):
Когда-то я тоже пробовал численно моделировать двумерное движение с тяготением тел, и сразу напоролся на то, что фиксированный шаг по времени не есть очень хорошо: за большое количество шагов могут возникать большие ошибки.

Dmitriy40 в сообщении #1103096 писал(а):
Да, тоже хотел предложить использовать адаптивный шаг по времени, чтобы за один шаг система не претерпевала существенных изменений (с заданной точностью) из текущего состояния.
Если все сделано правильно, то источником ошибок при подобных расчетах будут тесные сближения тел. Обычно проблемы такого рода решают какой-то регуляризацией уравнений (использовать переменный шаг тоже можно, но это обходится намного "дороже"), но в обсуждаемом случае это не требуется - введенная "упругость" убивает проблему наповал.

 Профиль  
                  
 
 Re: Трехмерная гравитация и двухмерный мир
Сообщение29.02.2016, 15:02 
Заслуженный участник


28/12/12
7946
Pphantom в сообщении #1103102 писал(а):
Если все сделано правильно, то источником ошибок при подобных расчетах будут тесные сближения тел. Обычно проблемы такого рода решают какой-то регуляризацией уравнений (использовать переменный шаг тоже можно, но это обходится намного "дороже"), но в обсуждаемом случае это не требуется - введенная "упругость" убивает проблему наповал.

Из кода видно, что там не только "упругость" (на самом деле диссипативная сила, пропорциональная относительной скорости), но еще и ограничение силы гравитации.

 Профиль  
                  
 
 Re: Трехмерная гравитация и двухмерный мир
Сообщение29.02.2016, 15:04 
Заслуженный участник


20/08/14
11867
Россия, Москва
Pphantom в сообщении #1103102 писал(а):
но в обсуждаемом случае это не требуется - введенная "упругость" убивает проблему наповал.
Не согласен, при больших относительных скоростях тел можно получить вообще пропуск тесного сближения (и столкновения) тел, что может кардинально сказаться на решении.
А тут ещё и другие проблемы в коде похоже, начиная от ограничения гравитации по радиусу. Плюс давление считается не для текущего положения, а для будущего, которое потом "откатывается взад" при соприкосновении, тоже источник ошибок. Ну а изменение скоростей несоприкасающихся тел я надеюсь просто не показано, но где-то всё же есть. ;-)

alexo2
Упс, какая у вас однако интересная "сила упругости", квадратичная по расстоянию сжатия ... Какой собственно физической силе это соответствует хоть примерно? Обычная упругость если не ошибаюсь линейна по расстоянию.

 Профиль  
                  
 
 Re: Трехмерная гравитация и двухмерный мир
Сообщение29.02.2016, 15:07 


03/02/12

530
Новочеркасск
Dmitriy40 в сообщении #1103106 писал(а):
alexo2
Упс, какая у вас однако интересная "сила упругости", квадратичная по расстоянию сжатия ... Какой собственно физической силе это соответствует хоть примерно? Обычная упругость если не ошибаюсь линейна по расстоянию.


К сожалению, в настоящее время связаться с автором не могу - недоступен (код я выложил на свой страх и риск - вчера говорили только за саму прогу..)
Я детально тоже не знаю, помню только, что говорил он что-то о законе Гука.. (точнее - вечером)

 Профиль  
                  
 
 Re: Трехмерная гравитация и двухмерный мир
Сообщение29.02.2016, 15:14 
Заслуженный участник


09/05/12
25179
DimaM в сообщении #1103104 писал(а):

Из кода видно, что там не только "упругость" (на самом деле диссипативная сила, пропорциональная относительной скорости), но еще и ограничение силы гравитации.
Да, действительно, и обрезка потенциала тоже есть.
Dmitriy40 в сообщении #1103106 писал(а):
Не согласен, при больших относительных скоростях тел можно получить вообще пропуск тесного сближения (и столкновения) тел, что может кардинально сказаться на решении.
При больших - да, но непохоже, что их можно задать (проверить не могу - Windows нет, а Wine ставить/настраивать для этой цели лень).
Dmitriy40 в сообщении #1103106 писал(а):
А тут ещё и другие проблемы в коде похоже, начиная от ограничения гравитации по радиусу.
Это как раз не проблема, а скорее способ борьбы с предыдущей упомянутой Вами неприятностью.

 Профиль  
                  
 
 Re: Трехмерная гравитация и двухмерный мир
Сообщение29.02.2016, 15:25 
Заслуженный участник


20/08/14
11867
Россия, Москва

(Оффтоп)

А забавно может получиться если вдруг одно из тел приобретёт скорость, достаточную для перемещения за один шаг снаружи в центр большого скопления тел ... Давление должно увеличиться скачком что может привести к разрушению всего огромного скопления тел. :mrgreen: Тоже адекватность очень сомнительна. :-)

alexo2
Ещё идея для возможной реализации: добавить "скорость звука", распространения изменений давления, не мгновенно для всех тел, а с какой-то скоростью. Возможно добавятся красивые эффекты в виде волн по поверхности или отрывание "капель" при ударе не только в месте удара.

Но вообще молодцы! Поиграться вполне хватит и интересно.

Pphantom в сообщении #1103114 писал(а):
скорее способ борьбы с предыдущей упомянутой Вами неприятностью.
Да нет, не с ней, а с проблемой "бесконечной гравитации" при слишком тесном сближении. Возможно квадратичную упругость тоже из-за этого ввели, чтобы побыстрее сила отталкивания росла при сближении и не допускала слишком тесных сближений.

 Профиль  
                  
 
 Re: Трехмерная гравитация и двухмерный мир
Сообщение29.02.2016, 15:30 


03/02/12

530
Новочеркасск
Dmitriy40 в сообщении #1103120 писал(а):

(Оффтоп)

А забавно может получиться если вдруг одно из тел приобретёт скорость, достаточную для перемещения за один шаг снаружи в центр большого скопления тел ... Давление должно увеличиться скачком что может привести к разрушению всего огромного скопления тел. :mrgreen: Тоже адекватность очень сомнительна. :-)
Ещё идея для возможной реализации: добавить "скорость звука", распространения изменений давления, не мгновенно для всех тел, а с какой-то скоростью. Возможно добавятся красивые эффекты в виде волн по поверхности или отрывание "капель" при ударе не только в месте удара.

alexo2
Но вообще молодцы! Поиграться вполне хватит и интересно.


Да я и сам не знал, что зять этим занимается, увидел уже готовый проект, сказал что мне, по-крайней мере, - очень интересно. В плане, что от делфи такой прыти в вычислениях не ожидал, а, во-вторых, - то что как-то все очень "похоже" на правду получилось...

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 96 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 7  След.

Модераторы: photon, whiterussian, profrotter, Jnrty, Aer, Парджеттер, Eule_A, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group