soluzioni fabbricate per l'incomprimibile Navier-Stokes: come trovare campi di velocità privi di divergenze?


10

Nel metodo delle soluzioni fabbricate (MMS) si postula una soluzione esatta, la sostituisce nelle equazioni e calcola il termine sorgente corrispondente. La soluzione viene quindi utilizzata per la verifica del codice.

Per equazioni di Navier-Stokes incomprimibili, MMS porta facilmente a un termine (diverso da zero) nell'equazione di continuità. Ma non tutti i codici consentono termini di sorgente nelle equazioni di continuità, quindi per questi codici lo faranno solo soluzioni fabbricate con campi di velocità privi di divergenze. Ho trovato questo esempio per un dominio u 1Ω=[0,1]2 In casi 3D generali, come si produce un campo di velocità privo di divergenze?

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

Risposte:


7

Utilizzare una funzione di flusso vettoriale o prendere il prodotto incrociato di due gradienti. Vale a dire: dove è un campo vettoriale di tua scelta, oppure dove e sono due campi scalari di tua scelta.

u=×A
A
u=f×g
fg

È difficile sia che la velocità sia priva di divergenze e prescriva le condizioni al contorno, ma fintanto che il tuo codice ti consente di impostare funzioni arbitrarie per le tue condizioni al contorno, dovresti essere OK.

ETA: Certo, la tua equazione del momento dovrà accettare una funzione di forzatura, ma mi sono sempre sentito meglio nel forzare l'equazione del momento piuttosto che aggiungere un lato destro all'equazione di continuità.


Grazie! (forzare l'equazione di continuità si verifica solo nella modellazione della cavitazione per quanto ne so)
chris,

5

Questa non è una risposta generale, ma per le equazioni di Navier-Stokes, ci sono soluzioni fabbricate che descrivono il flusso reale. Ad esempio, il campo di flusso Kovasznay è una scelta popolare:

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

Il riferimento originale è: Kovasznay LIG, "Flusso laminare dietro una griglia bidimensionale". Proc. Cambridge Philos. Soc., Pagina 44, 1948.


1948 (!) Non mi rendevo conto che si trattava di "flusso reale". Con questo vuoi dire che può effettivamente essere misurato in un esperimento fisico (al contrario di simulato in un esperimento numerico)?
chris,

Credo di si.
Wolfgang Bangerth,

No. È un flusso idealizzato a una distanza dietro una griglia. Ma nessuno sa che aspetto ha la griglia e molto probabilmente deve essere fatta di materiale "molto morbido"
Guido Kanschat,

2

Questo è quello che faccio di solito.

Definire la funzione streamline:

Ψ=[ψxψyψz]

la velocità è uguale a:

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

Ora puoi scegliere qualsiasi ragionevole pressione media zero e costruire un termine forzante.

Pubblico un codice di esempio SymPy per e condizioni al contorno omogenee, goditi:Ω=[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])
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.