Какая модель является хорошей для расчета капель воды на поверхности?

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

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

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

Для простоты я не рассматриваю воздух и то, какие свойства воздух может изменить, или любую другую дополнительную переменную, не относящуюся к области этой капли жидкости, например, добавление наклонной плоскости, где капли, скажем так, пока Я рассматриваю вектор и количество жидкости X, это количество распыляется или просто капает на поверхность, и я должен быть в состоянии воспроизвести реалистичную дисперсию воды на поверхности, еще лучше я должен быть в состоянии вычислить различные жидкости с разными свойствами одновременно, например, вода и масло.

Я думаю, подойдет любой гидродинамический код.

Ответы (2)

Как я уже говорил, я думаю, что любой код трехмерной гидродинамики будет работать. Основы гидродинамики можно свести к следующим пяти уравнениям:

(1) р т + р в "=" 0 (2,3,4) р в т + [ р в в + п я ] "=" р г (5) Е т + [ ( Е + п ) в ] "=" р г в
где р ваша массовая плотность, в скорость, п "=" ( γ 1 ) ( Е 1 2 р в 2 ) - давление жидкости (предполагается, что это идеальный газ с показателем адиабаты γ ), я единичная матрица (тензор), Е - полная энергия (внутренняя и кинетическая), а г гравитационное ускорение. По порядку эти три описывают сохранение массы , сохранение импульса и сохранение энергии .

Поскольку компьютеры являются дискретными объектами, мы определяем объем г Икс г у г г (обычно г Икс "=" г у "=" г г так что объем г Икс 3 , но это не обязательно верно) с положением по центру ячейки ( Икс я , у Дж , г к , т н ) где я , Дж , к , н е Z . Затем каждая переменная определяется усредненным по объему значением:

р я , Дж , к н "=" р ( Икс я , у Дж , г к , т н )

Затем мы можем численно смоделировать три уравнения сохранения как (я собираюсь использовать для примера сохранение массы)

р я , Дж , к н + 1 р я , Дж , к н г т "=" π Икс ; я + 1 , Дж , к н π Икс ; я 1 , Дж , к н 2 г Икс + π у ; я , Дж + 1 , к н π у ; я , Дж 1 , к н 2 г у + π г ; я , Дж , к + 1 н π г ; я , Дж , к 1 н 2 г г
где π "=" р в . Вышеприведенное использует прямую разность для временной производной, в то время как пространственные производные используют центральную разность. В этом уравнении есть некоторые предостережения относительно стабильности (например, г т с с , м а Икс г Икс / н г я м производная по времени ограничена максимальной скоростью волны, деленной на число измерений, умноженное на длину ячейки), но ее довольно просто реализовать.

В трех измерениях вы можете решать уравнения направленно (т.е. Икс , у , г решаются независимо, но в чередующемся порядке на каждом временном шаге), или вы можете объединить их в то, что называется «угловым транспортом», где поток, скажем, π я 1 , Дж 1 , к учитывается при нахождении р я , Дж , к н + 1 . Последний вариант сложнее кодировать, но он обеспечивает более точное решение, в то время как первый довольно легко реализовать.

Для граничных условий вам понадобится отражающая граница на поверхности ( в н ^ в н ^ где н ^ является нормальным направлением к поверхности) и, вероятно, экстраполируется везде ( р я , Дж , к "=" р я 1 , Дж , к где я это максимальное количество ячеек в Икс направление). Эти две границы и приведенные выше 5 уравнений должны позволить вам полностью смоделировать столкновение капли воды с поверхностью.

Вы также можете добавить эффекты вязкости к уравнениям (2,3,4), добавив к RHS дивергенцию тензора вязкости, т :

т "=" р ν [ в + ( в ) Т 2 3 я в ]
с ν кинематическая вязкость . Это усложняет дело, потому что вы вводите производные второго порядка ( 2 в ) и условием устойчивости этих уравнений является г т κ г Икс 2 / н г я м где κ параболический коэффициент , в данном случае ν . Есть способы обойти это (например, с помощью неявного метода , который требует решателя матриц), но это определенно усложняет ситуацию.


Из всего этого я делаю вывод, что у вас есть два варианта:

  1. написать свой собственный 3D-код с нуля
  2. ищите на гитхабе чужой код, содержащий всю необходимую физику и приписывайте автора когда и где нужно

Учитывая сложность кодирования кода многомерной гидродинамики (здесь личный опыт), вам может быть значительно проще выбрать вариант 2, но мое единственное предупреждение по этому поводу заключается в следующем: код, который вы найдете и используете, не является черным ящиком , а не должны рассматриваться как таковые ; вы должны понять , что делает код и почему , прежде чем вы сможете даже подумать о запуске кода.

Хороший ответ! Чтобы добавить к вашему варианту 2: OpenFOAM и Gerris — два хорошо известных и очень мощных решателя потоков с открытым исходным кодом, которые имеют довольно большую базу пользователей.
хорошо, спасибо, так как я вижу, что это в значительной степени исчисление бесконечно малых с производными и смесью коэффициентов (в численном выражении). Я должен задокументировать себя, потому что это выглядит хорошо, но фрагментировано и требует много времени, но я думаю, что формулы — действительно хорошее начало. еще раз спасибо
@user2485710 user2485710 Если вы заинтересованы в создании собственной модели, вы можете рассмотреть возможность использования методов конечного объема для гиперболических задач Рэнди Левека и римановых решателей и численных методов для гидродинамики Элеутерио Торо . Обе книги бесценны для гидродинамики (хотя и дорогие).

Сначала совет: не игнорируйте воздух! Исследования, проведенные за последние пару лет, показали, что воздух (в частности, атмосферное давление) имеет решающее значение для определения того, производит ли капля всплеск, и если да, то какова динамика. Одной из знаковых статей в этой области является публикация Weitz Group в PRL в 2012 году .

Затем к вашему вопросу о моделировании капли, падающей на брызги. Я думаю, что лагранжев подход для жидкости (т.е. жидких «частиц») действительно даст наиболее реалистичное моделирование, но он также будет чрезвычайно затратным в вычислительном отношении. Поэтому вы можете рассмотреть методы конечного объема, такие как Volume-of-Fluid , Level-Set и Front-Tracking. Трудно дать вам какой-либо совет, какой из них лучше, потому что это во многом зависит от опыта и деталей реализации, но вы можете найти хорошее обсуждение на этом веб-сайте Института Жана Ле Ронда д'Аламбера .

моя точка зрения немного отличается от теоретических исследований, я хотел бы знать, какие уравнения, матрицы и векторы стоят за такого рода поведением, поэтому после изучения «математики» я могу попытаться упростить вычисления. Между прочим, я не стремлюсь имитировать «реалистичную» физику, мои приложения являются художественными или чем-то, что имитирует это поведение, а не чем-то, что является хорошей копией сценариев реального мира; Я нашел несколько тем по гидродинамике, но ни одна из них не содержала хорошего объяснения в математических терминах.
@user2485710 user2485710 Я хотел бы отметить, что фраза «хорошее объяснение» полностью субъективна и не дает никаких предположений относительно того, какой текст лучше подходит для ваших нужд.
@KyleKanos, какие ключевые моменты я должен прояснить? В любом случае, я в основном должен в конечном итоге написать что-то, что могло бы суммировать это поведение или просто имитировать его, а также легко вычислялось и переводилось в код, что-то вроде матрицы, кватерниона или простого уравнения 1-го/ 2 степень; когда я думаю о чем-то вычислимом, я думаю о чем-то подобном. Теперь проблема является отправной точкой, и все, что я знаю на данный момент, это то, что моей отправной точкой должны быть математические законы, лежащие в основе этого, поэтому я просто спрашиваю, где найти уравнения и законы, которые имитируют это поведение.
@ user2485710 - просто проверяю: вы когда-нибудь слышали о вычислительной гидродинамике (CFD)? Если нет: обязательно прочитайте об этом. По сути, это общий термин для всех видов методов, которые дискретно решают уравнения Навье-Стокса.
@Michiel никогда не слышал об этом, но предположить, что вся область CFD выглядит излишним, нет никаких ключевых теорем или законов именно для того, о чем я спрашиваю?
@user2485710 user2485710 - конечно, не будет излишним проверить, что такое CFD. Я не знаю, какое задание у вас есть, но написание (набора) решателей, которые могут обрабатывать уравнения Навье-Стокса (надеюсь, вы знаете их ?!), не совсем прогулка в парке .
У меня такое ощущение, что вы пытаетесь срезать путь, в то время как вам следует сначала попытаться понять некоторые основы гидродинамики, прежде чем вы начнете писать об этом код.
Если вы считаете заботу только о числовой части кратчайшим путем, в этом случае да, я использую кратчайший путь, потому что меня интересует, как получить , если , это то, что f(x)я f(x) = 4 + 3xвсе равно должен вычислить .