Гідродинаміка
Липень 2026 · 15 хв читання · SPH · Вільна поверхня · Поверхневий натяг · Останнє оновлення: 3 липня 2026 р.

SPH з вільною поверхнею — бризки, краплі та хвилі

Автор: Команда MySimulator · Редакційна перевірка: Редакція MySimulator

Хвиля, що розбивається об берег, крапля, яка відривається від крана, вода, що вихлюпується з відра — усе це події з участю вільної поверхні: межі між рідиною й порожнім простором (або повітрям), форма якої заздалегідь невідома й має виникати із самої симуляції. Сітчасті (Ейлерові) розв'язувачі мають з цим труднощі, бо їм потрібно відстежувати, де саме межа рідини проходить усередині фіксованої сітки. Метод згладжених частинок (Smoothed Particle Hydrodynamics, SPH) обходить цю проблему майже безкоштовно — поверхня це просто те місце, де закінчуються частинки.

1. Чому частинкові методи підходять для вільних поверхонь

У сітчастому (Ейлеровому) розв'язувачі кожна комірка домену зберігає значення стану рідини незалежно від того, чи справді рідина займає цю область. Відстеження межі між рідиною й повітрям вимагає допоміжного представлення — рівня набору (level set), поля частки об'єму (volume-of-fluid, VOF) або маркерних частинок, посіяних виключно для трасування межі. Коли бризки розпадаються на краплі або два потоки зливаються, це допоміжне поле має правильно обробляти зміни топології, що є справді складною чисельною проблемою (тонкі плівки зникають, краплі не відриваються чисто, маса витікає).

SPH є Лагранжевим: рідина і є частинками. Немає окремого поля межі, яке треба підтримувати — вільна поверхня неявно там, де густина частинок спадає до нуля. Крапля, що відділяється від струменя, — це просто група частинок, чия зв'язність із сусідами змінюється; жодного спеціального коду не потрібно. Саме тому SPH (і споріднені методи — MPM і PBF) домінують у VFX із великою кількістю бризок і в багатьох дослідницьких CFD-кодах для проривів дамб, ударів хвиль і берегової інженерії.

Компроміс: те, що трасування вільної поверхні дає безкоштовно, SPH компенсує в іншому — шумом тиску, слабшим забезпеченням нестисливості, ніж проєкція тиску в сітчастих методах, і вартістю пошуку сусідів O(N) до O(N log N), якої сітчасті методи не мають.

2. Проблема дефіциту густини

SPH оцінює густину в частинці i як суму зважених ядром внесків від кожного сусіда j у межах радіусу згладжування h:

ρᵢ = Σⱼ mⱼ · W(rᵢ − rⱼ, h)

Глибоко всередині рідини частинка оточена з усіх боків, тож ця сума збігається до правильної густини спокою. Однак поблизу вільної поверхні носій ядра поширюється в порожній простір, де немає частинок — сума недораховує, і обчислена густина виходить штучно заниженою, навіть попри те, що справжня фізична густина на поверхні точно така сама, як у товщі рідини.

Це і є проблема дефіциту густини. Без корекції рівняння стану (використовується для перетворення густини на тиск у слабостисливому SPH) сприймає цей дефіцит як від'ємний тиск, що хибно тягне поверхневі частинки всередину — симульована рідина набуває штучної "плівки", яка опирається природному утворенню тонких листів і дрібних бризок.

P = k(ρ − ρ₀) // рівняння стану Тейта / слабостисливе EOS ↑ поблизу поверхні ρ < ρ₀ навіть для фізично коректної рідини → P < 0 → хибне тяжіння всередину

Поширені способи усунення: обнулення від'ємного тиску для поверхневих частинок, використання скоригованого (перенормованого) ядра густини, що враховує втрачену масу ядра, або перехід до бездивергентного / нестисливого SPH (IISPH, DFSPH), де тиск розв'язується неявно, а не читається безпосередньо з потенційно заниженої оцінки густини.

3. Виявлення вільної поверхні

Багато частин симуляції — поверхневий натяг, рендеринг, адаптивна роздільність — потребують знати, які частинки саме лежать на межі. Класична техніка — метод колірного поля (Morris, 2000): трактувати кожну частинку як таку, що несе скалярний "колір" c = 1 для рідини, й інтерполювати його так само, як будь-яке інше поле SPH:

c(r) = Σⱼ (mⱼ/ρⱼ) · W(r − rⱼ, h) n = ∇c // нормаль поверхні напрямлена від рідини до повітря

У товщі рідини градієнт ∇c близький до нуля, бо колірне поле майже однорідне в усіх напрямках. Поблизу поверхні ∇c має помітну величину й спрямований назовні — це одночасно позначає поверхневі частинки (|∇c| вище порогу) і дає нормаль поверхні, потрібну для рендерингу й сил поверхневого натягу.

Дешевша альтернатива — прямий підрахунок дефіциту сусідів: частинка, чия кількість сусідів або зважена ядром густина падає нижче частки очікуваного значення в товщі рідини (зазвичай 80–95%), класифікується як поверхнева. Це взагалі уникає обчислення градієнта й досить швидке, щоб виконуватись на кожному підкроці.

Виявлення на основі дивергенції (порівняння Σⱼ (rⱼ − rᵢ)·∇W із порогом, за критерієм CSPM Marrone та ін.) надійніше в тонких листах і сильно викривлених бризках, ніж простий підрахунок сусідів, ціною помірних додаткових витрат.

4. Поверхневий натяг — модель CSF

Поверхневий натяг виникає через дисбаланс когезійних міжмолекулярних сил на межі: молекули в товщі притягуються рівномірно в усіх напрямках, але молекули на поверхні відчувають чисту тягу всередину, що макроскопічно проявляється як сила, пропорційна кривизні межі (співвідношення Юнга–Лапласа, ΔP = σκ). Модель Continuum Surface Force (CSF) Brackbill, Kothe та Zemach (1992) перетворює це на об'ємну силу для кожної частинки, використовуючи колірне поле з попереднього розділу:

κ = −∇²c / |∇c| // кривизна поверхні Fнатяг = −σ · κ · n · δₛ // n = ∇c / |∇c|, δₛ = |∇c| (поверхнева дельта)

Тут σ — коефіцієнт поверхневого натягу (≈ 0,072 Н/м для води за 20 °C), κ — локальна кривизна, обчислена з лапласіана колірного поля, а δₛ локалізує силу у вузькій смузі біля справжньої межі. На практиці ∇²c шумний за типового кроку частинок SPH, тому виробничі реалізації часто використовують простішу й надійнішу модель парної когезії Akinci та ін. (2013), яка застосовує короткодіючу притягальну сплайн-силу безпосередньо між сусідніми частинками замість двічі диференціювати поле:

Fᵢⱼ = −σ · mᵢmⱼ · C(|rᵢⱼ|) · r̂ᵢⱼ C(r) = (H−r)³r³ для 0 < r ≤ H/2 2(H−r)³r³ − H⁶/64 для H/2 < r ≤ H 0 інакше

Цей сплайн C(r) ретельно нормалізований так, що інтегрування по всій околиці дає нульову чисту силу в товщі рідини (когезія скасовується), тоді як точно на викривлених поверхнях виникає чисте тяжіння всередину — це відтворює округлення крапель, капілярний підйом у тонких трубках і скупчення води на негідрофільних поверхнях, і при цьому жодного разу не потрібно обчислювати другу похідну.

5. Розтягувальна нестійкість і злипання частинок

Стандартні сили тиску SPH використовують градієнт згладжувального ядра (зазвичай ядра Spiky), яке за від'ємного тиску стає притягальним замість відштовхувального — а це саме той режим, у який вільні поверхні й поверхневий натяг штовхають частинки. Результат — добре відома розтягувальна нестійкість (tensile instability): частинки злипаються в нефізичну ґратку або скупчення замість формування гладкого листа, найпомітніше в тонких бризках і краплях, де від'ємний тиск звичне явище.

Корекція штучного тиску Monaghan додає невеликий відштовхувальний доданок щоразу, коли значення ядра зростає відносно свого значення за початкової відстані між частинками, безпосередньо протидіючи притягальній гілці:

f(rᵢⱼ) = ( W(rᵢⱼ) / W(Δp) )ⁿ Fрозтяг = ε · f(rᵢⱼ)ⁿ · ∇W(rᵢⱼ) // ε ≈ 0,01–0,2, n ≈ 4

Альтернатива, яка не потребує підбору констант, — перехід на іншу родину ядер: ядро Wendland C2 має градієнт, що лишається скінченним і добре поведеним за малих відстаней між частинками, і є фактичним стандартом у сучасних кодах SPH (SPlisHSPlasH, DualSPHysics) саме тому, що опирається злипанню без спеціального латкового доданка.

6. Розв'язувачі тиску біля поверхні — WCSPH проти PCISPH

Слабостисливий SPH (WCSPH) читає тиск безпосередньо з рівняння стану Тейта, наведеного вище. Він простий і повністю явний, але вимагає жорсткого рівняння стану (велике k), щоб утримати похибки густини малими, що своєю чергою змушує використовувати крихітний крок часу через умову Куранта–Фрідріхса–Леві — чисельна швидкість звуку має триматися помітно вище за найшвидшу швидкість рідини в сцені, а бризки регулярно породжують швидкі краплі, що робить це дорогим.

Прогнозно-корективний нестисливий SPH (PCISPH) та споріднені методи (IISPH, DFSPH) натомість розв'язують тиск неявно, ітеруючи цикл прогноз-корекція на кожному кроці, доки густина не відхилиться від густини спокою менш ніж на допуск (часто <1%):

повторювати: прогнозувати швидкості й позиції за поточним тиском перерахувати густину ρ* за прогнозованими позиціями Δpᵢ += δ · (ρ* − ρ₀) // оновлення тиску, δ з коефіцієнта масштабування доки max |ρ* − ρ₀| < допуску

Поблизу вільної поверхні цю ітеративну корекцію треба поєднувати з виправленням дефіциту густини з розділу 2 — інакше розв'язувач "виправляє" штучно занижену поверхневу густину, роздуваючи тиск, і поверхня стає надто жорсткою, схожою на батут. Більшість сучасних реалізацій спершу виявляють поверхневі частинки й або обмежують їхню цільову густину, або взагалі пропускають для них обмеження нестисливості, дозволяючи поверхневому натягу й гравітації керувати їхнім рухом.

💧 Інтерактивна симуляція рідини Спостерігайте, як частинкова рідина формує хвилі, бризки й краплі в реальному часі

7. Тверді межі та фантомні частинки

Вільна поверхня — лише половина проблеми меж; SPH-рідина також має правильно взаємодіяти з твердими стінками (склянка, пляж, корпус човна). Найпростіший підхід — викласти тверді поверхні статичними граничними частинками, які беруть участь у сумуванні густини й тиску так само, як частинки рідини, але ніколи не рухаються. Їхня присутність заповнює носій ядра біля стінки, запобігаючи хибному дефіциту густини там (та сама проблема, що й у розділі 2, але на жорсткій, а не вільній межі).

Наївно розміщені граничні частинки все ж дозволяють рідині проникати крізь кути або тонкі стінки на високій швидкості, тож поширені вдосконалення: фантомні частинки, віддзеркалені через межу під час симуляції, обробка меж екстраполяцією тиску (Akinci, 2012), яка обчислює фізично узгоджений тиск для граничних частинок замість фіксованого значення, та щільно упаковані багатошарові граничні оболонки (2–3 частинки завглибшки), що дають ядру повний носій навіть під ковзними кутами.

Поширена помилка: забути включити масу граничних частинок у суму густини частинки рідини. Тоді рідина показує занижену густину біля стінок точно так само, як і біля вільної поверхні, і розв'язувач тиску відштовхує рідину від твердих меж, ніби вони вакуум — простий діагностичний ознака, якщо частинки ніби "левітують" на кілька радіусів частинки над дном контейнера.

8. Рендеринг поверхні — Marching Cubes і метакулі

Самі частинки рендеряться як хмара сфер, що виглядає як піна, а не як цілісна поверхня рідини. Виробничі рендерери натомість будують гладку неявну поверхню з позицій частинок і витягують полігональну сітку з неї щокадру:

Для реального часу у веб-демо набагато дешевший варіант у просторі екрана: рендерити частинки як сфери лише з глибиною, розмити отриманий буфер глибини, щоб згладити зернистість частинок, реконструювати нормалі з розмитої глибини через градієнт у просторі екрана й затінити з заломленням і відбиттям Френеля — без 3D-вокселної сітки чи витягування сітки, і саме так більшість реального часу WebGL/Three.js SPH-демо отримують переконливий вигляд води за інтерактивної частоти кадрів.