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?

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.


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.


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])
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.