Jak należy traktować niestałe współczynniki za pomocą schematu podmuchu wiatru o skończonej objętości pierwszego rzędu?

11

Począwszy od równania doradczego w formie konserwatorskiej.

ut=(a(x)u)x

gdzie a(x) jest prędkością zależną od przestrzeni, u jest stężeniem gatunku, który jest zachowany.

Dyskretyzacja strumienia (gdzie strumień f=a(x)u jest zdefiniowany na krawędziach komórek między punktami siatki) daje,

ut=1h(fajot-12)-fajot+12))

Stosując podmuch wiatru pierwszego rzędu przybliżamy strumienie, ponieważ,

fajot-12)=za(xjot-12))ujot-1fajot+12)=za(xjot+12))ujot
Co daje,
ut=1h(za(xjot-12))ujot-1-za(xjot+12))ujot)

Jeśli za(x) było stałe, zredukuje się to do znanego schematu podmuchu wiatru, tj. ut=zah(ujot-1-ujot).

Moje pytanie brzmi: jak możemy traktować niestałe współczynniki równania doradczego? Prędkość jest zdefiniowana w centrach komórek, więc proste podejście byłoby następujące,

za(xjot-12))za(xjot-1)za(xjot+12))za(xjot)

To jest moje preferowane podejście, ponieważ jest bardzo proste do wdrożenia.

Możemy jednak również użyć (domyślam się) schematu uśredniania do zdefiniowania prędkości na krawędziach komórki,

za(xjot-12))12)za(xjot-1)+12)za(xjot)za(xjot+12))12)za(xjot)+12)za(xjot+1)

W książce LeVeque mówi:

Dotychczas zakładaliśmy, że zmienna prędkość ( x ) jest określona przez wartość stałą się j obrębie j-tej komórce siatki. W niektórych przypadkach bardziej naturalne jest założenie, że prędkość a j - 1za(x)zajot jest określony na każdym interfejsie komórki.zajot-12)

Ale potem tak naprawdę nie rozwija zbyt wiele. Jakie jest wspólne podejście?

Rozwiązuję problem konserwacyjny (używam równania doradczego jako równania ciągłości), więc chcę się upewnić, że po zastosowaniu dyskretyzacji właściwość konserwacyjna zostanie zachowana. Chciałbym uniknąć ukrytych niespodzianek dotyczących tych zmiennych współczynników! Czy ktoś ma jakieś ogólne uwagi i wskazówki?


Aktualizacja Istnieją dwie naprawdę dobre odpowiedzi poniżej i mogłem wybrać tylko jedną :(

boyfarrell
źródło

Odpowiedzi:

4

W zależności od rodzaju systemu patrzysz, może być bardziej wygodne do rozważenia prędkości jak odcinkowo-stałej w każdej komórce, lub że jest to zdefiniowane w interfejsach komórkowych. Na przykład w meteorologii siatki naprzemienne są dość powszechne, w których ciśnienie można określić wewnątrz komórek i prędkość na interfejsach komórek. Równie łatwo można pomyśleć o prędkości określonej w komórkach. Wszystko powiedziane: wybór reprezentacji nie powinien wpływać na zbieżność twojej metody *, pod warunkiem, że dyskretyzacja jest stabilna i konsekwentna.za

Najważniejsze (o czym już wspomniałeś w swoim pytaniu) jest to, że dyskretny system jest nadal konserwatywny. Pod warunkiem, że Twój schemat może być napisany w formularzu

ujott=fajot-12)(ujot-1,ujot)-fajot+12)(ujot,ujot+1)

to powinno być konserwatywne, ponieważ

.turex=jotujottδx=jot(fajot-12)-fajot+12))δx=(fa-12)-faN.+12))δx

Proste podejście powinno działać dobrze, podobnie jak uśrednianie prędkości między komórkami w celu zdefiniowania jej na interfejsach komórek, pod warunkiem, że prędkość jest zawsze dodatnia. Co więcej, nie sądzę, że uśrednianie przyniesie ci większą dokładność, więc masz rację, wybierając prosty sposób.

Jeśli również rozwiązujesz problem prędkości i masz układ równań, być może będziesz musiał być bardziej ostrożny. Podobnie, jeśli rozwiązujesz nieliniowe hiperboliczne PDE i używasz ograniczników strumienia, musisz być jeszcze bardziej ostrożny.

* Jednak w przypadku systemu hiperbolicznych PDE stosowanie siatek naprzemiennych może znacznie poprawić sztuczną dyspersję / dyfuzję. Jeśli chcesz dowiedzieć się więcej, poszukaj siatki C Arakawa lub sprawdź rozdział 4 tej książki .

Daniel Shapero
źródło
Dziękuję za wyjaśnienie. Twoja intuicja jest prawidłowa; Rozwiązuję układ równań, w którym jednym z równań jest prędkość (PDE pozostałych zmiennych). Układ równań jest tylko 1D, planuję zastosować adaptacyjną metodę podmuchu wiatru pierwszego rzędu (z możliwością przełączania między wiatrem centralnym i pod wiatr drugiego rzędu), być może z dopasowaniem wykładniczym. Nie używam ograniczników strumienia, ale system jest nieliniowy. Czy w tej sytuacji muszę być „bardziej ostrożny”?
boyfarrell
Wszystko zależy od tego, czy spodziewasz się powstania fal uderzeniowych i tym podobnych, czy istnieje możliwość, że prędkość spadnie poniżej zera w niektórych regionach, lub jeśli prędkość może stać się na tyle wysoka, że ​​uciekniesz od warunku Courant-Friedrichs-Lewy w pewnym momencie. To powiedziawszy, najpierw spróbuję zastosować proste podejście, aby sprawdzić, czy to działa, co równie dobrze może zrobić. Jeśli to się nie powiedzie, zrobi to spektakularnie i jednoznacznie, więc nie sądzę, że musisz się martwić, że coś się poślizgnie pod twoim radarem.
Daniel Shapero
Tak, spodziewam się, że prędkość będzie tylko niezerowa tylko w środku mojej domeny, a następnie szybko zbliża się do zera, gdy ktoś odchodzi od centrum. Wybieram krok czasowy, aby spełnić warunek CFL (używając maksymalnej prędkości), siatka jest stała. Jakie są kryteria fali uderzeniowej? Nie oczekuję, że to zobaczę (ale nigdy nie wiadomo).
boyfarrell
5

za(x)

Rozumiem przez konsekwentne, że jedynym warunkiem, który musi spełnić interpolacja, jest

zaja+1/2)+=zaja+1/2)-

Innymi słowy, dopóki twoja metoda interpolacji jest ciągła przez granice komórek, Twoja dyskretyzacja z pewnością pozostanie konserwatywna.

To może nie wydawać się dużym problemem tutaj w 1D (i nie powinno), ale może powodować problemy z gruboziarnistymi interfejsami na wielopoziomowych siatkach AMR.

GradGuy
źródło
ujot+12)za(xjot+12))za(xjot+12))za(xjot+1)ujot+12)
@boyfarrell Byłoby ok, w tym sensie, że metoda pozostaje zachowawcza. Wpływa to jednak na dokładność rozwiązania. Często, np. W schematach ENO, przybliża się całą funkcję strumienia, a nie oddzielnie prędkość i rozwiązanie.
GradGuy,
4

za(xjot-12))

Aby zrozumieć, dlaczego tak jest, należy wziąć pod uwagę, że analityczna definicja konserwatywna jest taka

treu(x)rex=reza(x)u(x)reS.,

re

Jeśli nasza dyskrecja ma formę

ut(xjot)=1h(za(xjot-12))ujot-12)-za(xjot+12))ujot+12))

x1,,xnre=[do,re]do=x12)re=xn+12)

1hjot=1n(za(xjot-12))ujot-12)-za(xjot+12))ujot+12))=za(x12))u12)-za(xn+12))un+12),

ujot-12)=ujot-1ujot+12)=ujotza(x)u

za(x)za(xjot-r),,za(xjot+s)za(xjot-12))

Ben
źródło