solusi yang diproduksi untuk Navier-Stokes yang tidak dapat dikompres - bagaimana menemukan bidang kecepatan bebas divergensi?

10

Dalam metode solusi yang diproduksi (MMS) seseorang mendalilkan solusi yang tepat, menggantikannya dalam persamaan dan menghitung istilah sumber yang sesuai. Solusinya kemudian digunakan untuk verifikasi kode.

Untuk persamaan Navier-Stokes yang tidak dapat dimampatkan, MMS dengan mudah menyebabkan istilah sumber (bukan nol) dalam persamaan kontinuitas. Tetapi tidak semua kode memungkinkan istilah sumber dalam persamaan kontinuitas, jadi untuk kode ini hanya solusi yang dibuat dengan bidang kecepatan bebas divergensi yang akan dilakukan. Saya menemukan contoh ini untuk domain Dalam kasus 3D umum, bagaimana cara membuat bidang kecepatan bebas divergensi?u 1Ω=[0,1]2

u1=cos(πx)sin(πy)u2=sin(πx)cos(πy)
chris
sumber

Jawaban:

7

Gunakan fungsi stream vektor atau ambil produk silang dari dua gradien. Yaitu: mana \ boldsymbol {A} adalah bidang vektor yang Anda pilih, atau \ boldsymbol {u} = \ nabla f \ kali \ nabla g di mana f dan g adalah dua bidang skalar yang Anda pilih.

u=×A
A
u=f×g
fg

Sulit keduanya memiliki kecepatan bebas divergensi dan menentukan kondisi batas, tetapi selama kode Anda memungkinkan Anda untuk mengatur fungsi arbitrer untuk kondisi batas Anda, Anda harus OK.

ETA: Tentu saja, persamaan momentum Anda harus menerima fungsi pemaksaan, tapi saya selalu merasa lebih baik tentang pemaksaan persamaan momentum daripada saya telah menambahkan sisi kanan pada persamaan kontinuitas.

Bill Barth
sumber
Terima kasih! (pemaksaan persamaan kontinuitas hanya terjadi dalam pemodelan kavitasi sejauh yang saya tahu)
chris
5

Ini bukan jawaban umum, tetapi untuk persamaan Navier-Stokes, ada solusi buatan yang menggambarkan aliran nyata. Misalnya, bidang aliran Kovasznay adalah pilihan populer:

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

Referensi aslinya adalah: Kovasznay LIG, "Aliran Laminar di belakang kisi dua dimensi". Proc Cambridge Philos. Soc., Halaman 44, 1948.

Wolfgang Bangerth
sumber
1948 (!) Saya tidak menyadari ini "aliran nyata". Maksud Anda itu sebenarnya dapat diukur dalam percobaan fisik (tidak seperti disimulasikan dalam percobaan numerik)?
chris
Saya percaya ya.
Wolfgang Bangerth
Tidak. Ini aliran ideal dalam jarak di belakang kotak. Tapi tidak ada yang tahu seperti apa kisi itu dan kemungkinan besar itu terbuat dari bahan "sangat lunak"
Guido Kanschat
2

Itulah yang biasanya saya lakukan.

Tentukan fungsi streamline:

Ψ=[ψxψyψz]

kecepatannya sama dengan:

u=×Ψ=[ux=yψzzψyuy=zψxxψzuz=xψyyψx].

Sekarang Anda dapat memilih tekanan nol-rata-rata yang masuk akal dan membangun istilah pemaksaan.

Saya memposting kode contoh SymPy untuk dan kondisi batas homogen, nikmati:Ω=[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])
Nicola Cavallini
sumber