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Δt0. 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ΔtZAtΔt0ZAt

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Δx1

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

μ=doΔtΔx12)

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.