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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Гідродинаміка згладжених частинок (англ. 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).

Програмне забезпечення для моделювання ГЗЧ[ред.ред. код]

  • RealFlow — офлайновий фізичний рушій, призначений для використання в індустрії комп'ютерної графіки, анімації та спецефектів, який використовує ГЗЧ.
  • FLUIDS v.1 — проста, вільна (ліцензія zlib) тривимірна реалізація ГЗЧ у режимі реального часу для рідин, яка написана на C++ і використовує для розрахунків CPU та GPU.
  • [[{{{2}}}|{{{2}}}]] (англ.) — вільно доступний код для космологічних симуляцій N-body/SPH.
  • SPLASH — вільно доступний інструмент для візуалізації ГЗЧ-моделей.
  • SPHysics — реалізація ГЗЧ з відкритим сирцевим кодом, написана на Фортрані.
  • [[{{{2}}}|Physics Abstraction Layer (PAL)]] (англ.) — вільна система абстракції, яка підтримує фізичні рушії реального часу з підтримкою ГЗЧ.
  • Pasimodo — програмний пакет для методів моделювання, що базуються на частинках, включно з ГЗЧ.

Примітки[ред.ред. код]

Посилання[ред.ред. код]