виготовлені рішення для несжимаемого Нав'є-Стокса - як знайти поля, що не мають розбіжностей?


10

У методі виготовлених розчинів (MMS) один постулює точне рішення, підставляє його в рівняннях і обчислює відповідний вихідний термін. Потім рішення використовується для перевірки коду.

Для нестислимих рівнянь Нав'є-Стокса, MMS легко призводить до (ненульового) джерела в рівнянні безперервності. Але не всі коди дозволяють вихідні умови в рівняннях безперервності, тому для цих кодів робитимуться лише виготовлені рішення з полями швидкості, що не мають розбіжності. Я знайшов цей приклад для домену Ω=[0,1]2

у1=-cos(πх)гріх(πу)у2=гріх(πх)cos(πу)
У загальних 3D випадках, як можна виготовити поле, що не має дивергенції?

Відповіді:


7

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

у=×А
А
у=f×г
fг

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

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


Дякую! (примушення рівняння безперервності відбувається лише при моделюванні кавітації, наскільки я знаю)
chris

5

Це не є загальною відповіддю, але для рівнянь Нав'є-Стокса є виготовлені рішення, що описують реальний потік. Наприклад, популярний вибір потокового поля Ковасної:

http://link.springer.com/article/10.1007/BF00948290

Оригінальна посилання: Ковасна ЛІГ, "Ламінарний потік за двовимірною сіткою". Зб. Кембридж Філос. Соц., Стор. 44, 1948.


1948 (!) Я не розумів, що це "реальний потік". Це означає, що його можна вимірювати фізичним експериментом (на відміну від модельованого в числовому експерименті)?
chris

Я вважаю, так.
Вольфганг Бангерт

Ні. Це ідеалізований потік на відстані за сіткою. Але ніхто не знає, як виглядає сітка, і, швидше за все, вона повинна бути виготовлена ​​з "дуже м'якого" матеріалу
Guido Kanschat

2

Ось що я зазвичай роблю.

Визначте функцію оптимізації:

Ψ=[ψхψуψz]

швидкість дорівнює:

у=×Ψ=[ух=уψz-zψууу=zψх-хψzуz=хψу-уψх].

Тепер ви можете вибрати будь-який розумний нульовий середній тиск і побудувати термін примушування.

Ω=[0,1]3

 from sympy import *

 x,y,z = symbols('x y z')

 X = Matrix([[x],[y],[z]])

 psi = zeros(3,1)
 psi[0,0] = sin(2*pi*x)*y**2*(1-y)**2*z**2*(1-z)**2
 psi[2,0] = x**2*(1-x)**2*y**2*(1-y)**2*sin(2*pi*z)

 curl_psi = zeros(3,1)
 curl_psi[0] = diff(psi[2],X[1]) - diff(psi[1],X[2])
 curl_psi[1] = diff(psi[0],X[2]) - diff(psi[2],X[0])
 curl_psi[2] = diff(psi[1],X[0]) - diff(psi[0],X[1])
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.