Какое направление отталкивания мы используем для гидродинамики сглаженных частиц, когда радиус равен 0?
При выполнении SPH в работе Kelagar рекомендуется использовать конкретное ядро для сил, создаваемых давлением между частицами. Ядро, которое оно рекомендует, является следующим, когда радиус находится в пределах радиуса ядра:
(15/(pi*h^9)) * (h - r)^3
где h - радиус ядра, а r - радиус, который нас интересует при вычислении значения функции при.
Затем в документе утверждается, что градиент этой функции
(-45/(pi*h^9))*((r_vec)/r)*(h-r)^2
где r_vec теперь является вектором от центра ядра до интересующей нас точки. Поскольку длина r_vec идет в 0 от положительного направления, в статье утверждается, что этот градиент приближается:
(-45/(pi*h^6))
Но это скаляр, а не вектор. Для того, чтобы между двумя интересующими нас моментами было отталкивание, должно быть направление для отражения.
Какое направление мы должны использовать, когда две частицы находятся рядом друг с другом?
1 ответ
Я предполагаю, что первое выражение должно быть потенциальным. Отрицательный градиент (производный по r) - это сила. Этот градиент является вектором, всегда указывающим к центру или от него. Это кажется правильным для второго выражения.
r_vec - это, согласно вашим словам, вектор, указывающий от начала координат на точку на некотором расстоянии r. (r_vec/r) - это единичный вектор для указания направления. Это работает в любой точке, кроме самого источника, где его можно объявить неопределенным или объявить равным нулю. Ноль - это среднее значение (r_vec/r) по всем "соседним" точкам. Это означает нулевую силу.
Обычно при моделировании частиц с парными силами мы игнорируем силы частицы на себя и двух частиц в одном и том же точном положении. Как насчет двух частиц очень близко, и у вас есть закон силы, который имеет вид 1/r, 1/(r^2) или подобный? Никто не хочет делить на ноль вины. Обычно существует небольшой радиус, ниже которого потенциал является постоянной величиной, соответствующей заданной формуле потенциала на границе этого радиуса. Частицы, расположенные слишком близко друг к другу, имеют нулевую силу, просто чтобы симуляция не рухнула. Может показаться нефизичным, что сила внезапно прекратит свое существование как раз внутри этой границы, когда она становится очень сильной прямо за ее пределами. Но мы стараемся избегать таких ситуаций. Держите счет таких инцидентов, и если их слишком много, симуляция пошла плохо. Возможно, требуется меньший временной шаг.
К счастью, у вас нет силы типа 1 / r, но, тем не менее, у вас есть тот мерзкий r_vec/r, направление которого может сильно колебаться. Поможет та же техника создания силы ноль ниже определенного крошечного радиуса.
Но это третье выражение беспокоит меня. Если это сила при r=0, то, начиная с закона силы во втором выражении, я не уверен, как возникает третье выражение. Проблема того, что он выглядит скалярным, в то время как ожидаемый вектор может быть решен с помощью понимания того, что он является радиальным компонентом вектора силы. Просто умножьте выражение на (r_vec/r), знакомый вектор единичной величины. OTOH, у него нет определенного направления, поэтому это чепуха.
Лучшее общее решение: начните с новой потенциальной функции, которая плавно выравнивается и является плоской прямо при r=0, как exp(-r^2) или 1/(1+r^2). Данные потенциальные пики резко. Вы хотите что-то более похожее Вместо того, чтобы объявлять нулевую силу внутри какой-то маленькой зоны, сила будет, естественно, нулевой при r=0. Найдите плоский потенциал в начале координат, который аппроксимирует заданную скважину за пределами небольшого радиуса.