Pracuję nad projektem, w którym mam dwie domeny sprzężone za pomocą adv-diff za pomocą odpowiednich terminów źródłowych (jedna domena dodaje masę, druga odejmuje masę). Dla zwięzłości modeluję je w stanie ustalonym. Równania to standardowe równanie transportowo-dyfuzyjne z terminem źródłowym wyglądającym tak:
Gdzie jest dyfuzyjnym i korzystnym strumieniem dla gatunków , i jest terminem źródłowym dotyczącym gatunku .
Udało mi się napisać solver dla mojego problemu za pomocą metody Newtona-Raphsona i całkowicie sparowałem dwie domeny za pomocą macierzy mas blokowych, tj .:
Termin służy do określania macierzy jakobiańskiej i aktualizacji obu i :
lub
Aby przyspieszyć, nie obliczam jakobianu przy każdej iteracji - w tej chwili bawię się co pięć iteracji, które wydają się działać wystarczająco dobrze i utrzymywać rozwiązanie na stałym poziomie.
Problem polega na tym: przeniosę się do większego systemu, w którym obie domeny są w 2D / 2.5D, a obliczenie macierzy jakobińskiej szybko wyczerpie moje dostępne zasoby komputerowe. Buduję ten model do późniejszego wykorzystania w ustawieniach optymalizacyjnych, więc nie mogę też być za kierownicą przy każdej iteracji, dostosowując współczynnik tłumienia itp.
Czy mam rację, szukając gdzie indziej bardziej niezawodnego i algorytmu dla mojego problemu, czy jest to tak dobre, jak to możliwe? Zajrzałem trochę do quasi-linearyzacji, ale nie jestem pewien, jak ma zastosowanie w moim systemie.
Czy są jakieś inne zręczne algorytmy, które mogłem przeoczyć, które mogą rozwiązać układ równań nieliniowych bez uciekania się do ponownego obliczania jakobianów jako przestępstwa?