Nie rozumiem różnych zachowań równania rada-dyfuzja, kiedy stosuję różne warunki brzegowe. Moją motywacją jest symulacja rzeczywistej wielkości fizycznej (gęstości cząstek) w warunkach dyfuzji i doradztwa. Gęstość cząstek należy zachować we wnętrzu, chyba że wypłynie ona z krawędzi. Zgodnie z tą logiką, jeśli wymuszę warunki brzegowe Neumanna, końce systemu, takie jak (po lewej i prawej stronie), to system powinien być „zamknięty”, tj. jeśli strumień na granicy wynosi zero, wówczas żadne cząstki nie mogą uciec.
Dla wszystkich poniższych symulacji zastosowałem dyskretyzację Cranka-Nicolsona do równania rada-dyfuzja i wszystkie symulacje mają warunków brzegowych. Jednak dla pierwszego i ostatniego wiersza macierzy (wiersze warunków brzegowych) zezwalam na zmianę niezależnie od wartości wewnętrznej. Pozwala to na pełne domniemanie punktów końcowych.
Poniżej omawiam 4 różne konfiguracje, tylko jedna z nich jest tym, czego się spodziewałem. Na koniec omawiam moje wdrożenie.
Limit tylko dyfuzji
Tutaj warunki porady są wyłączane przez ustawienie prędkości na zero.
Tylko dyfuzja, z = 0,5 (Crank-Niscolson) we wszystkich punktach
Ilość nie jest zachowana, co widać po zmniejszeniu obszaru impulsu.
Tylko dyfuzja, przy czym = 0,5 (Crank-Niscolson) w punktach wewnętrznych, a = 1 (pełne niejawne) na granicachβ
Stosując w pełni niejawne równanie na granicach, osiągam to, czego oczekuję: żadne cząstki nie uciekają . Widać to po zachowaniu obszaru jako rozproszenia cząstek. Dlaczego wybór w punktach granicznych powinien wpływać na fizykę sytuacji? Czy to błąd, czy oczekiwany?
Dyfuzja i porady
Po uwzględnieniu terminu porady wydaje się, że wartość na granicach nie wpływa na rozwiązanie. Jednak we wszystkich przypadkach, gdy granice wydają się być „otwarte”, tzn. Cząstki mogą uciec z granic. Dlaczego tak jest?
Porady i dyfuzja z = 0,5 (Crank-Niscolson) we wszystkich punktach
Porady i dyfuzja z = 0,5 (Crank-Niscolson) w punktach wewnętrznych, a = 1 (pełny dorozumiany) na granicachβ
Implementacja równania rada-dyfuzja
Zaczynając od równania rada-dyfuzja,
Pisanie przy użyciu Crank-Nicolson daje:
Zauważ, że = 0,5 dla Crank-Nicolson, = 1 dla pełnego niejawnego i = 0 dla pełnego jawnego.β β
Aby uprościć notację, dokonajmy podstawienia,
i przenieś znaną wartość pochodnej czasu na prawą stronę,
Faktoryzacja warunków daje,
który możemy zapisać w postaci macierzy jako gdzie,
Stosowanie warunków brzegowych Neumanna
NB znowu pracuje nad wyprowadzeniem. Myślę, że zauważyłem błąd. Przy zapisywaniu skończonej różnicy warunku brzegowego założyłem w pełni niejawny schemat ( = 1). Jeśli przyjmiesz tutaj schemat Crank-Niscolson, złożoność staje się zbyt duża i nie mogłem rozwiązać wynikowych równań, aby wyeliminować węzły znajdujące się poza domeną. Wydaje się jednak możliwe, istnieją dwa równania z dwiema niewiadomymi, ale nie mogłem sobie z tym poradzić. To prawdopodobnie tłumaczy różnicę między pierwszą a drugą fabułą powyżej. Myślę, że możemy stwierdzić, że prawidłowe są tylko wykresy z = 0,5 w punktach granicznych.
Zakładając, że strumień po lewej stronie jest znany (przy założeniu całkowicie niejawnej postaci),
Pisanie tego jako centralnej różnicy daje,
dlatego
Zauważ, że wprowadza to węzeł który jest poza domeną problemu. Ten węzeł można wyeliminować za pomocą drugiego równania. Możemy napisać węzeł jako,
Podstawienie wartości znalezionej w warunku brzegowym daje następujący wynik dla wiersza = 1,
Wykonanie tej samej procedury dla ostatniego wiersza (przy = ) daje,
Ostatecznie ukrywanie wierszy granic (ustawienie = 1) daje,
Dlatego w warunkach brzegowych Neumanna możemy zapisać równanie macierzowe, ,
gdzie,
Moje obecne zrozumienie
Myślę, że różnicę między pierwszym a drugim polem można wyjaśnić, zwracając uwagę na błąd opisany powyżej.
W odniesieniu do zachowania ilości fizycznej. Uważam, że przyczyną jest to, że, jak wskazano tutaj , równanie doradcze w postaci, którą napisałem, nie pozwala na propagację w przeciwnym kierunku, więc fala po prostu przechodzi, nawet w warunkach brzegowych o zerowym strumieniu . Moja początkowa intuicja dotycząca ochrony była stosowana tylko wtedy, gdy termin porady wynosi zero (jest to rozwiązanie na działce nr 2, gdzie obszar jest zachowany).Nawet przy warunkach brzegowych zerowego strumienia Neumanna masa nadal może opuścić układ, ponieważ prawidłowe warunki brzegowe w tym przypadku to warunki brzegowe Robina , w których całkowity strumień jest określony . Ponadto warunek Neunmanna określa, że masa nie może opuścić dziedziny przez dyfuzję , nie mówi nic o radach. Zasadniczo to, co słyszymy, to zamknięte warunki brzegowe dla dyfuzji i otwarte warunki brzegowe dla porady. Aby uzyskać więcej informacji, zobacz odpowiedź tutaj: Implementacja warunku granicznego zerowego gradientu w równaniu doradczym-dyfuzyjnym.
Zgodziłbyś się?
źródło
Odpowiedzi:
Myślę, że jednym z twoich problemów jest to, że (jak zauważyłeś w swoich komentarzach) warunki Neumanna nie są warunkami, których szukasz , w tym sensie, że nie oznaczają zachowania twojej ilości. Aby znaleźć odpowiedni warunek, przepisz swój PDE jako
Teraz termin, który pojawia się w nawiasach, jest całkowitym strumieniem i jest to ilość, którą należy wyzerować na granicach, aby zachować . (Dodałem ze względu na ogólność i dla twoich komentarzy.) Warunki brzegowe, które musisz nałożyć, to (zakładając, że twoja domena kosmiczna to )D∂ϕ∂x+vϕ=0 ϕ S(x,t) (−10,10)
dla lewej strony i
po prawej stronie. Są to tak zwane warunki brzegowe Robina (zauważ, że Wikipedia wyraźnie stwierdza, że są to warunki izolacyjne dla równań doradztwa i dyfuzji).
Jeśli skonfigurujesz te warunki brzegowe, otrzymasz właściwości ochrony, których szukałeś. Rzeczywiście, mamy integrację w przestrzeni kosmicznej
Używamy integracji z częściami po prawej stronie
Teraz dwa centralne warunki znikają dzięki warunkom brzegowym. Otrzymujemy integrując się w czasie
a jeśli wolno nam zamienić dwie pierwsze całki ,
To pokazuje, że domena jest izolowana od zewnątrz. W szczególności, jeśli , otrzymamy zachowanie .ϕS=0 ϕ
źródło