Содержание

§ 13. Моделирование движения поверхности жидкости

Производная Лагранжа

Эта производная является частным случаем (с точки зрения физики) полной производной, а полная производная — это производная от функции по какому-то параметру (обычно, это время), которая учитывает зависимость ее аргументов от этого параметра.

ddtf(t,x(t),y(t),z(t))=ft+fxxt+fyyt+fzzt=ft+xf=ft+υf=DDtf.\frac{d}{dt}f(t,x(t),y(t),z(t)) = f_t + f_x x_t + f_y y_t + f_z z_t = f_t + \nabla\vec{x}\cdot\nabla f = f_t + \vec\upsilon\cdot\nabla f = \frac{D}{Dt} f.

Законы сохранения для жидкости

Общий закон сохранения для свойств жидкости (массы, импульса и энергии) можно сформулировать так: свойство в замкнутом объеме изменяется только за счет обмена с внешней средой (соседними объемами) и за счет источников/стоков внутри этого объема. В общем случае этот закон можно записать так.

ddtVϕdV+δSϕ(υn)dS+VsdV=0.\frac{d}{dt}\int\limits_V \phi \,dV + \int\limits_{\delta S} \phi \left(\vec\upsilon\cdot\vec{n}\right) dS + \int\limits_V s \,dV = 0.

Здесь ϕ\phi — это свойство жидкости, υ\vec\upsilon — скорость жидкости, ss — источники/стоки (внешние и внутренние силы). Используя теорему Остроградского—Гаусса, заменяем интеграл по площади на интеграл по объему и получаем

ddtVϕdV+V(ϕυ)dV+VsdV=0.\frac{d}{dt}\int\limits_V \phi \,dV + \int\limits_V \nabla\cdot\left(\phi\vec\upsilon\right) dV + \int\limits_V s \,dV = 0.

Теперь мы можем внести производную по времени под знак интеграла, предположив, что объем не изменяется по времени.

V(tϕ+(ϕυ)+s)dV=0.\int\limits_V \left(\frac{\partial}{\partial t}\phi + \nabla\cdot\left(\phi\vec\upsilon\right) + s \right)dV = 0.

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

tϕ+(ϕυ)+s=0.\frac{\partial}{\partial t}\phi + \nabla\cdot\left(\phi\vec\upsilon\right) + s = 0.

Наконец, раскрыв градиент, мы можем переписать уравнение через производную Лагранжа.

DDtϕ+ϕυ+s=0.\frac{D}{Dt}\phi + \phi\nabla\cdot\vec\upsilon + s = 0.

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

Волны на границе раздела двух жидкостей

Для описания таких волн используют кинематическое и динамическое граничные условия.

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

Волны малых амплитуд

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

z=ζ(t,x,y).z = \zeta(t,x,y).

Тогда граничные условия перепишутся следующим образом.

υn=DDtζ,z=ζ(t,x,y),p=pатм,z=ζ(t,x,y).\vec\upsilon\cdot\vec{n} = \frac{D}{Dt}\zeta, \qquad z = \zeta(t,x,y), \\ p = p_\text{атм}, \qquad z = \zeta(t,x,y).

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

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

rotυ=×υ=0,ρ=const.\text{rot}\,\vec\upsilon = \nabla\times\vec\upsilon = 0, \qquad \rho = \text{const}.

Используя равенство ×(ϕ)=0\nabla\times(\nabla\phi) = 0, представим вектор скорости как градиента некоторой скалярной функции — потенциала скорости ϕ\phi.

υ=ϕ.\vec\upsilon = \nabla\phi.

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

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

ϕ=Rekexp(kz)exp(ikxx+ikyy)dk.\phi = \text{Re}\iint\limits_{\vec{k}}\exp\left(|\vec{k}| z\right) \exp\left(i k_x x + i k_y y \right) d\vec{k}.

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

ζ(t,x,y)=nAncos(unx+vnyωnt+ϵn),An2=unun+1vnvn+1S(u,v)dudv.\zeta(t,x,y) = \sum\limits_n A_n \cos\left(u_n x + v_n y - \omega_n t + \epsilon_n\right), \qquad A_n^2 = \int\limits_{u_n}^{u_{n+1}}\int\limits_{v_n}^{v_{n+1}}S(u,v)\,dudv.

Здесь un,vnu_n,v_n — волновые числа, ωn\omega_n — угловая частота, ϵn\epsilon_n — случайная фаза, SS — частотный спектр морских волн. Спектр можно получить с помощью аналитических аппроксимаций или в дискретном виде из метеонаблюдений. Модель получила название Лонге—Хиггинса.

Трохоидальные волны Герстнера

Эти волны являются более точным описанием взволнованной поверхности. Модель основана на описании движения отдельных частиц. Раньше мы рассматривали конечные объемы, через границы которых входили и выходили частицы. Такая система координат называется эйлеровой. Этой системе противопоставляются лагранжевы координаты, которые задают положение отдельных частиц, а не конечного объема. Волны Герстнера являются решением системы уравнений из предыдущего раздела, записанного в такой системе координат.

x=anAnekncsin(una+vnbωnt+ϵn),y=b+nAneknccos(una+vnbωnt+ϵn),z=cnAnekncsin(una+vnbωnt+ϵn),k=un2+vn2.x = a - \sum\limits_n A_n e^{|\vec{k}_n|c} \sin(u_n a + v_n b - \omega_n t + \epsilon_n), \\ y = b + \sum\limits_n A_n e^{|\vec{k}_n|c} \cos(u_n a + v_n b - \omega_n t + \epsilon_n), \\ z = c - \sum\limits_n A_n e^{|\vec{k}_n|c} \sin(u_n a + v_n b - \omega_n t + \epsilon_n), \qquad |\vec{k}| = \sqrt{u_n^2 + v_n^2}.

Здесь a,b,ca,b,c — координаты неподвижных узлов сетки, вокруг которых вращаются частицы, x,y,zx,y,z — координаты частиц.

Волны Герстнера отличаются наличием вихрей, а значит, нельзя использовать потенциал скорости для вычисления силы давления под взволнованной поверхностью. Этим ограничением часто пренебрегают, поскольку альтернативного аналитического метода просто не существует. Также эти волны используют для спецэффектов в компьютерных играх и фильмах, поскольку волны выглядят реалистично, а формулы легко переписать с помощью преобразований Фурье, которые эффективно вычисляются на процессоре и видеокарте.

Гидродинамика сглаженных частиц

Это один из так называемых бессеточных методов, то есть методов, которые используют частицы для моделирования жидкости, а не конечные объемы. Взаимодействие частиц происходит в заданном радиусе от конкретно взятой частицы. Параметры частицы (плотность, объем, давление, скорость и т.д) определяются как взвешенная сумма параметров окружающих частиц, а в качестве весовой функции используюется гауссиан или аналогичная сглаживающая функция. Раньше мы аппроксимировали производные линейной комбинацией значений функции в окружающих узлах или ячейках сетки, а теперь мы аппроксимируем их взвешенной суммой значений функции в окружающих частицах.

Q(x)=VQ(x)W(xx,h)dV=limVj0jQjW(xxj,h)Vj.Q(\vec{x}) = \int\limits_V Q(\vec{x}') W(\vec{x} - \vec{x}', h)\,dV = \lim\limits_{V_j \rightarrow 0} \sum\limits_j Q_j W(\vec{x} - \vec{x}_j,h) V_j.

Это основное уравнение для гидродинамики сглаженных частиц, которое определяет некоторое свойства в виде интеграла со сглаживающим ядром (взвешенной суммы). Здесь QQ — физическая величина (плотность, скорость, давление и т.п.), x\vec{x} — координата частицы, hh — радиус взаимодействия, WW — сглаживающее ядро (весовая функция).

Вычисление производных так же делается по этим формулам.

Q(x)jQjW(xxj,h)Vj.\nabla Q(\vec{x}) \approx \sum\limits_j Q_j \nabla W(\vec{x} - \vec{x}_j,h) V_j.

Для этого нам надо знать только производную весовой функции.

Для плотности уравнение принимает следующий дискретный вид.

ρi=jρjVjWij,Wij=W(xixj,h).\rho_i = \sum\limits_j \rho_j V_j W_{ij}, \qquad W_{ij} = W(\vec{x}_i - \vec{x}_j,h).

Здесь индексы i,ji,j обозначают конкретные частицы.

Теперь перепишем известные нам уравнения с помощью этой формулы.

В качестве сглаживающего ядра выбирают следующие функции.

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

p=k(ρρ0),pV=νRT.p = k (\rho - \rho_0), \qquad p V = \nu R T.
Моделирование движения жидкости с помощью SPH.

Задания

Волны Герстнера1 балл

Сгенерируйте трехмерную взволнованную морскую поверхность, сформированную тремя волнами с произвольно выбранными параметрами (амплитудой, направлением, частотой, длиной). Для этого создайте равномерную сетку на поверхности, и в каждом узле сетки поставьте начальную координату частицы. Затем считайте новые координаты частиц по формулам.

Волны малых амплитуд2 балла

Используйте модель Лонге—Хиггинса для моделирования трехмерной взволнованной морской поверхности. Для этого аппроксимируйте спектр с помощью модели Пирсона—Московица.

S(ω)=αg2ω5exp(β(ω0ω)4),Q(θ)=2πcos2θ,S(ω,θ)=S(ω)Q(θ).S(\omega) = \alpha \frac{g^2}{\omega^5} \exp\left(-\beta \left(\frac{\omega_0}{\omega}\right)^4 \right), \qquad Q(\theta) = \frac{2}{\pi} \cos^2\theta, \qquad S(\omega,\theta) = S(\omega)Q(\theta).

Здесь SS — частотный спектр морского волнения, QQ — угловое распределение энергии, ω=2πf\omega=2\pi f — угловая частота, ff — частота волн, θ\theta — направление волн, gg — ускорение свободного падения, α=8.1×103,β=0.74\alpha=8.1\times 10^{-3}, \beta=0.74 — коэффициенты, ω0=g/U\omega_0=g/U — характерная угловая частота, UU — средняя скорость ветра.

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

k=ω2g,u=kcosθ,v=ksinθ.|\vec{k}| = \frac{\omega^2}{g}, \qquad u = |\vec{k}| \cos\theta, \qquad v = |\vec{k}| \sin\theta.

Случайные фазы распределены равномерно на промежутке [0,2π][0,2\pi].

Сглаженные частицы3 балла

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

git clone https://courses.igankevich.com/numerical-methods/sph.git
cd sph
make
cd build
./sph

Видео

2022

  • 00:00:00 Введение.
  • 00:00:50 Производная Лагранжа.
  • 00:06:48 Общий закон сохранения.
  • 00:21:13 Закон сохранения массы, импульса и энергии.
  • 00:36:12 Граничные условия для свободной поверхности жидкости.
  • 00:51:06 Волны малых амплитуд.
  • 01:23:51 Трохоидальные волны Герстнера.
  • 01:42:10 Гидродинамика сглаженных частиц.
  • 02:03:20 Задания, вопросы и визуализация волн.
Запись лекции 12.05.2022.

Доска

2022

wavy-surface-simulation thumbnail.
Запись доски 12.05.2022.