Dobra skończona różnica dla równania ciągłości


22

Jaka byłaby dobra dyskretyzacja różnic skończonych dla następującego równania:

∂ρ∂t+∇⋅(ρu)=0 ?

Możemy wziąć przypadek 1D:

∂ρ∂t+rerex(ρu)=0

Z jakiegoś powodu wszystkie schematy, które mogę znaleźć, dotyczą sformułowania we współrzędnych Lagrangiana. Na razie wymyśliłem ten schemat (zignoruj indeks j ):

ρja,jotn+1-ρja,jotnτ+1hx(ρja+1,jotn+1+ρja,jotn+12)uxja+1/2),jotn-ρja,jotn+1+ρja-1,jotn+12)uxja-1/2)n)=0

Ale wydaje się być naprawdę niestabilny lub mieć okropny warunek stabilności. Czy tak jest

Prędkość jest faktycznie obliczana na podstawie prawa darcy . Dodatkowo mamy równanie stanu. Pełny układ składa się również z równania energii i równania stanu gazu doskonałego. Prędkości mogą stać się ujemne .u=-kμ∇p


W przypadku 1D problemem jest zasadniczo pde hiperboliczne pierwszego rzędu. Czy próbowałeś użyć schematu różnic skończonych różnic w wiatrach pierwszego rzędu?
— Paweł

Do tej pory biegnę z tym, co napisałem w pytaniu. Mój przypadek to tak naprawdę 2d. Ale ponieważ jest to takie klasyczne równanie, pomyślałem, że będzie też dostępna klasyczna dyskretyzacja.
— tiam

Czy mógłbyś pokazać, jak wyglądałby ten schemat podmuchu wiatru? Znam tę koncepcję z metody objętości skończonej, kiedy używasz jej w znaczeniu konwekcyjnym, ale tam nie masz już pochodnej przestrzennej produktu.
— tiam

Czy podano pole prędkości, czy też spełnia ono równanie ewolucji?
— David Ketcheson

Prędkość jest faktycznie obliczana na podstawie prawa darcy'ego . Pełny układ składa się również z równania energii i równania stanu gazu doskonałego. Prędkości mogą stać się ujemne. u=-kμ∇p
— tiam

Odpowiedzi:


21

Patrzysz na równanie zachowania masy:

remret=0

Rozważając ewolucję masy na jednostkę objętości, sprowadza się to do równania doradztwa gęstości w postaci strumienia:

∂ρ∂t=-∇⋅(ρu)

Dobrą rzeczą jest to, że jest to tylko równanie doradcze dowolnego pola skalarnego (w naszym przypadku jest to gęstość ) i jest (względnie) łatwe do rozwiązania, pod warunkiem odpowiednich schematów różnicowania czasu i przestrzeni oraz początkowego i warunki brzegowe.ρ

Projektując skończony schemat różnicowania, martwimy się o zbieżność, stabilność i dokładność. Schemat jest zbieżny, jeśli gdyΔt→0. Stabilność schematów zapewnia, że ​​ilośćApozostaje skończona, gdy. Formalna dokładność schematu wskazuje, gdzie leży błąd skracania w szeregu rozszerzalności Taylora pochodnej cząstkowej. Zajrzyj do podręcznika CFD, aby uzyskać więcej informacji na temat tych podstawowych właściwości schematu różnicowania.ΔZAΔt→∂ZA∂tΔt→0ZAt→∞

Teraz najprostszym podejściem jest przejście bezpośrednio do pierwszego rzędu różnicowania. Ten schemat jest pozytywnie określony, konserwatywny i wydajny obliczeniowo. Dwie pierwsze właściwości są szczególnie ważne, gdy modelujemy ewolucję wielkości, która jest zawsze dodatnia (tj. Masa lub gęstość).

Dla uproszczenia spójrzmy na przypadek 1-D:

∂ρ∂t=-∂(ρu)∂x

Teraz wygodnie jest zdefiniować strumień , aby:Φ=ρu

∂(ρu)∂x=∂Φ∂x≈ΔΦΔx≈Φja+1/2)-Φja-1/2)Δx

Oto schemat tego, co symulujemy:

            u           u
|          -->         -->          |
|    rho    |    rho    |    rho    |
x-----o-----x-----o-----x-----o-----x
     i-1  i-1/2   i   i+1/2  i+1

Oceniamy ewolucję w komórce i . Zysk lub strata netto wynika z różnicy co przychodzi, cp I - 1 / 2 i co wychodzi, Φ i + 1 / 2ρjaΦja-1/2)Φja+1/2). Tutaj zaczynamy odbiegać od odpowiedzi Pawła. W prawdziwym zachowawczym różnicowaniu w górę, ilość w centrum komórki jest przenoszona przez prędkość na krawędzi komórki, w kierunku jej ruchu. Innymi słowy, jeśli wyobrażasz sobie, że jesteś zalecaną ilością i siedzisz w centrum komórki, jesteś przenoszony do komórki przed sobą z prędkością na krawędzi komórki. Ocena strumienia na krawędzi komórki jako iloczynu gęstości i prędkości, zarówno na krawędzi komórki, jest nieprawidłowa i nie chroni zalecanej ilości.

Strumienie przychodzące i wychodzące są oceniane jako:

Φja+1/2)=uja+1/2)+|uja+1/2)|2)ρja+uja+1/2)-|uja+1/2)|2)ρja+1

Φja-1/2)=uja-1/2)+|uja-1/2)|2)ρja-1+uja-1/2)-|uja-1/2)|2)ρja

Powyższe podejście do różnicowania strumienia zapewnia ostateczność. Innymi słowy, dostosowuje kierunek różnicowania zgodnie ze znakiem prędkości.

Kryterium stabilności Couranta-Friedrichsa-Lewy'ego (CFL), gdy różnicowanie czasu odbywa się za pomocą prostego pierwszego rzędu, różnicowanie w przód Eulera jest podawane jako:

μ=uΔtΔx≤1

Zauważ, że w 2 wymiarach kryterium stabilności CFL jest bardziej rygorystyczne:

μ=doΔtΔx≤12)

gdzie jest wielkością prędkości, √do .u2)+v2)

Kilka rzeczy do rozważenia. Ten schemat może, ale nie musi być odpowiedni dla twojej aplikacji, w zależności od rodzaju symulowanego procesu. Ten schemat jest wysoce dyfuzyjny i jest odpowiedni dla bardzo płynnych przepływów bez ostrych gradientów. Jest również bardziej dyfuzyjny w przypadku krótszych przedziałów czasowych. W przypadku 1-D uzyskasz prawie dokładne rozwiązanie, jeśli gradienty są bardzo małe, a jeśli . W przypadku 2D nie jest to możliwe, a dyfuzja jest anizotropowa.μ=1

Jeśli twój system fizyczny rozważa fale uderzeniowe lub innego rodzaju wysokie gradienty, powinieneś rozważyć różnicowanie wyższego rzędu wyższego rzędu (np. 3 lub 5 rzędu). Warto również spojrzeć na rodzinę systemów z poprawkami Fluxed Transport (Zalesak, 1979, JCP); korekta antydyfuzyjna dla powyższego schematu autorstwa Smolarkiewicza (1984, JCP); Rodzina schematów MPDATA autorstwa Smolarkiewicza (1998, JCP).

W przypadku różnicowania czasu, różnicowanie Eulera pierwszego rzędu może być satysfakcjonujące dla twoich potrzeb. W przeciwnym razie spójrz na metody wyższego rzędu, takie jak Runge-Kutta (iteracyjny) lub Adams-Bashforth i Adams-Moulton (wielopoziomowy).

Warto byłoby zajrzeć do podręcznika dla absolwentów CFD, który zawiera podsumowanie wyżej wymienionych programów i wiele innych.


Dziękuję za Twoją odpowiedź. Teraz wyraźnie widzę przewrót :). Spróbuję to teraz wdrożyć! Zastanawiam się, czy fakt, że za każdym razem, wpływa na stabilność? u
— tiam

1
Nie, o ile spełniasz warunek CFL. Możesz wykonać adaptacyjne krokowanie w czasie, tj. Δt=Δxmzax(u)Δt

u=-do∇ρ

uρ

uρu=-do∇ρ∂ρ∂t=do[(∇ρ)2)+ρ∇2)ρ]

13

(rerex)

ρjak+1-ρjakΔt+ρjakUjak-ρja-1kUja-1kΔx=0

ΔxΔt


ρk+1Δt

Nie jestem do końca pewien ... Myślę, że musiałbyś sprawdzić błąd obcięcia, aby upewnić się, że poprawnie przybliża PDE. Możesz rozważyć inne ukryte programy na tej stronie: web.mit.edu/dongs/www/publications/projects/...
— Paul
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.