hergestellte Lösungen für inkompressible Navier-Stokes - wie findet man divergenzfreie Geschwindigkeitsfelder?

10

Bei der Methode der hergestellten Lösungen (MMS) postuliert man eine exakte Lösung, setzt sie in die Gleichungen ein und berechnet den entsprechenden Quellterm. Die Lösung wird dann zur Codeüberprüfung verwendet.

Für inkompressible Navier-Stokes-Gleichungen führt MMS leicht zu einem Quellterm (ungleich Null) in der Kontinuitätsgleichung. Da jedoch nicht alle Codes Quellterme in den Kontinuitätsgleichungen zulassen, sind für diese Codes nur hergestellte Lösungen mit divergenzfreien Geschwindigkeitsfeldern geeignet. Ich habe dieses Beispiel für eine Domäne Ω=[0,1]2

u1=cos(πx)sin(πy)u2=sin(πx)cos(πy)
Wie erzeugt man in allgemeinen 3D-Fällen ein divergenzfreies Geschwindigkeitsfeld?
chris
quelle

Antworten:

7

Verwenden Sie eine Vektorstromfunktion oder nehmen Sie das Kreuzprodukt zweier Gradienten. Dh: wobei ein Vektorfeld Ihrer Wahl ist, oder wobei und sind zwei Skalarfelder Ihrer Wahl.A u = f × g f g

u=×A
A
u=f×g
fg

Es ist schwierig, dass beide die Geschwindigkeit divergenzfrei sind und die Randbedingungen vorschreiben. Solange Ihr Code es Ihnen ermöglicht, beliebige Funktionen für Ihre Randbedingungen festzulegen, sollten Sie in Ordnung sein.

ETA: Natürlich muss Ihre Impulsgleichung eine Forcierungsfunktion akzeptieren, aber ich habe mich immer besser gefühlt, wenn ich die Impulsgleichung erzwinge, als der Kontinuitätsgleichung eine rechte Seite hinzuzufügen.

Bill Barth
quelle
Vielen Dank! (Das Erzwingen der Kontinuitätsgleichung tritt
meines
5

Dies ist keine allgemeine Antwort, aber für die Navier-Stokes-Gleichungen gibt es hergestellte Lösungen, die den tatsächlichen Fluss beschreiben. Zum Beispiel ist das Kovasznay-Strömungsfeld eine beliebte Wahl:

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

Die ursprüngliche Referenz lautet: Kovasznay LIG, "Laminare Strömung hinter einem zweidimensionalen Gitter". Proc. Cambridge Philos. Soc., Seite 44, 1948.

Wolfgang Bangerth
quelle
1948 (!) Ich wusste nicht, dass dies "echter Fluss" ist. Damit meinen Sie, dass es tatsächlich in einem physikalischen Experiment gemessen werden kann (im Gegensatz zu einer Simulation in einem numerischen Experiment)?
Chris
Ich glaube ja.
Wolfgang Bangerth
Nein, es ist eine idealisierte Strömung in einer Entfernung hinter einem Gitter. Aber niemand weiß, wie das Gitter aussieht und höchstwahrscheinlich muss es aus "sehr weichem" Material bestehen
Guido Kanschat
2

Das mache ich normalerweise.

Streamline-Funktion definieren:

Ψ=[ψxψyψz]

die Geschwindigkeit ist gleich:

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

Jetzt können Sie einen vernünftigen, auf Null gemittelten Druck auswählen und einen Forcierterm erstellen.

Ich poste einen SymPy-Beispielcode für und homogene Randbedingungen. Viel Spaß:Ω=[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
quelle