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

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Гидродинамика сглаженных частиц (англ. Smoothed Particle Hydrodynamics, SPH) — вычислительный метод для симуляции жидкостей и газов. Используется во многих областях исследований, включая астрофизику, баллистику, вулканологию и океанографию. Метод гидродинамики сглаженных частиц является не-сеточным (англ. mesh-free) лагранжевым методом (то есть координаты движутся вместе с жидкостью), и разрешающая способность метода может быть легко отрегулирована относительно переменных, таких как плотность.

Метод[править | править вики-текст]

Метод SPH работает путем деления жидкости на дискретные элементы, называемые частицами. Эти частицы имеют пространственное расстояние (известное как «длина сглаживания», обычно представляемая в уравнениях как  h ), на котором их свойства «сглаживаются» функцией ядра. Это значит, что любая физическая величина любой частицы может быть получена путем суммирования соответствующих величин всех частиц которые находятся в пределах двух сглаженных длин. Например, температура в точке  \mathbf{r} зависит от температуры всех частиц на расстоянии 2 h от  \mathbf{r}.

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

Значение любой физической величины  A в точке \mathbf{r}, задаётся формулой:


A(\mathbf{r}) = \sum_j m_j \frac{A_j}{\rho_j} W(| \mathbf{r}-\mathbf{r}_{j} |,h),

где  m_j  — масса частицы j,  A_j  — значение величины A для частицы j,  \rho_j  — плотность связанная с частицей j, и W — функция ядра упомянутая выше. Например, плотность частицы  i ( \rho_i ) может быть выражена как:


\rho_i = \rho(\mathbf{r}_i) = \sum_j m_j \frac{\rho_j}{\rho_j} W(| \mathbf{r}_i-\mathbf{r}_j |,h) = \sum_j m_j W(|\mathbf{r}_i-\mathbf{r}_j|,h),

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

Аналогично, пространственная производная количества может быть получена используя интегрирование по частям для смещения оператора набла ( \nabla ) от физической величины к функции ядра:


\nabla A(\mathbf{r}) = \sum_j m_j \frac{A_j}{\rho_j} \nabla W(| \mathbf{r}-\mathbf{r}_j |,h).

Хотя размер длины сглаживания может быть фиксирован и в пространстве, и во времени, это не позволяет использовать всю мощь SPH. Назначая каждой частице её собственную длину сглаживания и разрешая ей меняться со временем, разрешающая способность симуляции может автоматически подстраивать себя к локальным условиям. Например, в очень плотной области, где много частиц расположены близко одна к другой, длина сглаживания может быть сделана относительно короткой, приводя к высокому пространственному разрешению. И наоборот, в областях с малой плотностью, где частицы размещены далеко одна от другой и разрешающая способность низкая, длина сглаживания может быть увеличена, оптимизируя вычисления для данной области. Объединённая с уравнением состояния и интегратором, гидродинамика сглаженных частиц может эффективно симулировать гидродинамические потоки. Однако традиционная искусственная формулировка вязкости, используемая в гидродинамике сглаженных частиц, имеет тенденцию «смазывать» (англ. smear out) ударные волны и контактные разрывы в гораздо большей степени, чем современные основанные на сетках методы.

Адаптивность гидродинамики сглаженных частиц, основанной на Лагранжевом подходе, аналогична адаптивности современных сеточных кодов с применением адаптивных сеток уточнения адаптивной сети (англ.) (англ. Adaptive mesh refinement), хотя в последнем случае можно измельчить сетку согласно любому критерию, выбранному пользователем. Поскольку гидродинамика сглаженных частиц лагранжева по своей природе, то она ограничена в параметрах измельчения, используя только плотность.

Часто в астрофизике необходимо смоделировать гравитацию в дополнение к гидродинамике. Основанная на частицах «природа» SPH делает её идеальным выбором для объединения с обработчиком гравитации, который основан на частицах.

Использование в биологии[править | править вики-текст]

Метод может быть использован для моделирования движения в однородных средах. В том числе, при моделировании движения жидкостей в организме или даже целых организмов, тело которых представлено относительно однородной неплотной средой. Один из интересных примеров - это моделирование тела червя в проекте OpenWorm.

Использование в астрофизике[править | править вики-текст]

Адаптивная способность метода, объединённая с его возможностью моделировать явления охватывающие многие порядки величин, делают его идеальным для расчетов в теоретической астрофизике.

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

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

Использование в моделировании жидкости[править | править вики-текст]

Скриншот из компьютерной программы «Fluids v.1». Эта программа симулирует движения жидкости, используя гидродинамику сглаженных частиц. В симуляции, которая изображена на скриншоте, используется 4095 частиц.

Гидродинамика сглаженных частиц всё более часто используется для моделирования движения жидкостей. Это происходит из-за некоторых преимуществ метода SPH по сравнению с традиционными основанными на сетке методиками. Во-первых, SPH гарантирует сохранение массы без дополнительных вычислений, так как частицы сами по себе представляют массу. Во-вторых, SPH вычисляет давление от воздействия соседних частиц, также имеющих массу, а не решает систему линейных уравнений. Наконец, в отличие от основанных на сетке методик, которые должны прослеживать границы жидкости, SPH создаёт свободную поверхность для непосредственно двухфазных взаимодействующих жидкостей, так как частицы представляют более плотную жидкость (обычно воду), а свободное пространство представляет более лёгкую жидкость (обычно воздух). По этим причинам благодаря SPH возможно моделировать движение жидкости в режиме реального времени. Однако, и SPH, и основанные на сетке методики всё ещё нуждаются в визуализируемой свободной поверхностной геометрии и используют полигонизационные методики, такие как metaballs, marching cubes, point splatting или «ковровую» визуализацию («carpet» visualization). Для газа более уместно использовать непосредственно функцию ядра, чтобы произвести рендеринг плотности газа (например, как сделано в пакете визуализации «SPLASH»).

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

Для некритических приложений, таких как компьютерные игры и кинофильмы, производительность и визуальный реализм намного более значимы, чем вычислительная точность. Muller и другие использовали SPH для симуляции воды, которая течёт в стакан. При этом использовалось несколько тысяч частиц, а частота кадров составляла около 5 кадров/сек. Kipfer и Westermann (Technical University at Munich, Germany) использовали SPH для симуляции реки. Такахиро Харада (англ. Takahiro Harada) и другие использовали современные графические процессоры GeForce 8800 GTX для симуляции 49 153 частиц со скоростью 17 кадров/сек.[1]

Разработки в симуляциях частиц с использованием SPH[править | править вики-текст]

CPU (Muller), 2003: 3000 частиц, 5 fps
GPU (Harada), 2007: 49,000 частиц, 17 fps
GPU (Zhang), 2009: 60,000 частиц, 57 fps

Использование в механике твёрдых тел[править | править вики-текст]

Уильям Гувер (англ. William G. Hoover) использовал SPH, чтобы изучить воздействие разломов в сплошных телах. Гувер и другие использовали акроним SPAM (англ. smoothed-particle applied mechanics — рус. прикладная механика сглаженных частиц) по отношению к численному методу. Приложение методов сглаженных частиц к механике твёрдых тел остаётся относительно неисследованной областью знаний.[2]

Программное обеспечение по эмуляции SPH[править | править вики-текст]

  • RealFlow — оффлайновый физический движок, предназначенный для использования в индустрии компьютерной графики, анимации и спецэффектов и использующий SPH.
  • FLUIDS v.1 — простая, свободная (лицензия zlib) трёхмерная реализация SPH в режиме реального времени для жидкостей, написанная на C++ и использующая для расчетов CPU и GPU.
  • GADGET (англ.) — свободно доступный код для космологических симуляций N-body/SPH.
  • SPLASH — свободно доступный инструмент для визуализации SPH-симуляций.
  • SPHysics — реализация SPH с открытым исходным кодом, написанная на Фортране.
  • Physics Abstraction Layer (PAL) (англ.) — свободная система абстракции, которая поддерживает физические движки реального времени с поддержкой SPH.
  • Pasimodo — программный пакет для основанных на частицах методов симуляции, включая SPH.

Примечания[править | править вики-текст]

  1. Harada, Takahiro et al. Real-Time Particle-Based simulation on GPUs
  2. Hoover, W. G. (2006). Smooth Particle Applied Mechanics, World Scientific.

Ссылки[править | править вики-текст]