Optymalne zastosowanie podziału Strang (dla równania dyfuzji reakcji)

9

Podczas obliczania rozwiązania prostego równania dyfuzji reakcji 1D dokonałem dziwnej obserwacji:

ta=2x2aab

tb=ab

tc=a

Początkowa wartość jest stały ( ) i mi zainteresowanych tylko całka od do ( ). Celem i równania jest po prostu ocena tej całki.bb(0,x)=b0a0101a(t,x)dtctc=a

Użyłem schematu podziału Strang do sprzęgania między dyfuzją a reakcją (reakcja półetapowa, następnie dyfuzja pełnego etapu, a następnie reakcja półetapowa), schematu Crank Nicholsona dla dyfuzji i roztworu analitycznego dla reakcji ( w tym równanie ).tc=a

Ponieważ jeden krok roztworu analitycznego był ponad 3-krotnie wolniejszy niż jeden krok schematu Crank Nicholson, próbowałem wykonać więcej niż jeden krok Crank Nicholson dla każdego etapu reakcji. Miałem nadzieję, że uda mi się obejść z mniejszym krokiem schematu podziału Strang, dzięki czemu ogólnie będę szybszy.

Można jednak zaobserwować efekt odwrotny, a mianowicie, że wymagany jest znacznie więcej kroków w schemacie podziału Strang, jeśli stosuje się więcej niż jeden krok Crank Nicholsona. (Ja wyłącznie o dokładności całkę , który wydaje się jakby szybciej niż sam). Po zastanawiać, przez pewien czas, to zauważyć, że ten sam efekt, także zdarza się na i że nawet rozumiem, dlaczego w tym przypadku. Chodzi o to, że jeśli zrobię dokładnie jeden krok Crank Nicholsona, wówczas ogólny schemat zamieni się w regułę trapezoidalną (jeśli ).aab(t,x)=b0=0b(t)=0

Więc gdybym traktował jako część etapu dyfuzji, zwiększenie liczby kroków Crank Nicholsona (prawdopodobnie) nie doprowadziłoby do zmniejszenia ogólnej dokładności (jak zaobserwowano). Wydaje się jednak, że pokonuje to cel zastosowania rozwiązania analitycznego dla (nieliniowej i potencjalnie bardzo sztywnej) części reakcyjnej układu.tc=a

Oto moje pytanie: czy istnieje lepszy sposób leczenia w kontekście podziału Strang, niż traktowanie go jako części etapu reakcji lub leczenia jako część etapu dyfuzji. Chcę uniknąć „zmuszania” do użycia dokładnie jednego kroku Crank Nicholson do dyfuzji. (Na przykład w 3D wolałbym analitycznie rozwiązać dyfuzję za pomocą FFT zamiast używać Cranka Nicholsona. Oczywiście mogę również łączyć FFT z Crankiem Nicholsonem, więc nie jest to taka wielka sprawa.)tc=a

Thomas Klimpel
źródło
W people.maths.ox.ac.uk/dellar/OperatorLB.html podobny efekt wydaje się opisany. Wniosek jest taki, że kluczowe znaczenie ma użycie Crank Nicholson zamiast dokładnego rozwiązania. Być może odpowiedź na moje pytanie brzmi: nie.
Thomas Klimpel,
Coś wydaje się nie tak z twoimi równaniami. nie pojawia się w pierwszych dwóch, co czyni sprzężenie jednokierunkowym, co oznacza, że ​​można obliczyć w dowolnym jako etap przetwarzania końcowego. cct
Bill Barth,
@BillBarth Zmieniłem pytanie, aby wyjaśnić rolę . Więc jest tylko środkiem do obliczenia . Daj mi znać, jeśli masz jakieś sugestie, jak obliczyć tę całkę dokładniej (niż to, co otrzymałem z kombinacji podziału Strang i Crank Nicholson opisanych powyżej), potencjalnie przy użyciu etapu przetwarzania końcowego. cc01a(t,x)dt
Thomas Klimpel,
To teraz już dawno nie ma, ale nie można rozpoznać, że ten układ równań można zapisać jako parabolicznym PDE w z wykładniczym wyrażenia reakcji? Wydaje mi się, że zastanawiam się, czy naprawdę chcesz rozwiązać ten system 3-zmiennych zamiast uproszczonego. c
Bill Barth
@ BillBarth Byłbym zainteresowany, aby dowiedzieć się, jak ten system można zapisać jako paraboliczny PDE z wykładniczym terminem reakcji. Szybkość rozwiązania tego modelu jest czynnikiem ograniczającym podczas kalibracji modelu (co może zająć kilka godzin), mimo że zastosowana dokładność w odniesieniu do całkowania w czasie jest daleka od pełnej zbieżności.
Thomas Klimpel

Odpowiedzi:

6

Zamierzam napisać to jako odpowiedź, chociaż nie odpowiada bezpośrednio na pytanie.

Podłączając drugie równanie i trzecie równanie do pierwszego i podłączając trzecie równanie do drugiego, razem daj: Zmiana kolejności tych dwóch daje: Teraz możemy zintegrować oba z nich raz w , pozostawiając pierwsze równanie:

2ct2=2x2ct+btbt=(ct)b
t(ct2cx2b)=01b(bt)=ct
t
ct2cx2=b+A(x)
Za pomoca trzeciego równania możemy wyrazić „stałą” całkowania jako . Drugie równanie jest nieco trudniejsze. Trochę przepisując, mamy: To prowadzi do rozwiązania Lub Wykładnik daje: I wreszcie podłączenie tego do PDE dla daje A(x)=a02c0x2b0
0t1b(x,t)(b(x,t)t)dt=0tc(x,t)tdt
lnb(x,t)lnb0(x)=c(x)+c0(x)
lnbb0=c+c0
b=b0ec0c
c
ct2cx2=b0ec0c+A(x)

Zastępując przez lub równoważnie stosując warunki początkowe , to równanie upraszcza do Teraz powinieneś być w stanie znaleźć znaczną literaturę na temat najlepszego sposobu rozwiązania tego równania. Nie wiem, czy Crank-Nicholson jest dobrym wyborem dla wykładniczego terminu, ale wydaje się prawdopodobne. Prawdopodobnie należy starań, aby zagwarantować, że wszędzie lub rozwiązanie może szybko .ccc0c0(x)=0

ct=2cx2+a0(1ec)b0
c>c0

Przeszedłem przez to wyprowadzenie tylko dwa razy, więc może być w nim błąd lub dwa, ale ma to dla mnie właściwy charakter. Jeśli wszędzie, to jest to oczywiście właściwe rozwiązanie, a poza tym ma powiew prawdopodobieństwa.b0=0

Rozwiązanie tego do i oszacowanie powinno dać odpowiedź, której szukasz.t=1c(x,1)

Bill Barth
źródło
Dziękuję bardzo za tę odpowiedź. Uważam, że jest to dość pouczające, przynajmniej ułatwia mi zrozumienie / przewidywanie zachowania rozwiązania. Kolejną zaletą jest to, że ewolucja czasu jest wolniejsza niż ewolucja czasu , więc jestem dość optymistą, że konwergencja będzie lepsza niż wcześniej. ca
Thomas Klimpel
Nie ma problemu. Dokuczałem mi po naszej pierwszej wymianie komentarzy. Mam nadzieję, że to jest pomocne.
Bill Barth