Jakie nowe struktury danych są stosowane w adaptacyjnej MES?

9

Wiele adaptacyjnych bibliotek MES wykorzystuje bardziej zaawansowane struktury danych siatki do obsługi dodawania / usuwania węzłów, krawędzi, trójkątów, czworościanów itp. Na przykład biblioteka p4est używa struktur danych oktree do adaptacyjnego udoskonalania siatki; często nie ma oktetów używanych do obliczeń na siatce statycznej.

Jakie zmiany po stronie algebry liniowej dla adaptacyjnego MES?

Najbardziej tępy sposób, jaki mogę sobie wyobrazić, to całkowite przebudowanie wszystkich macierzy systemowych za każdym razem, gdy siatka jest udoskonalana lub zgrubna. Jeśli adaptacja siatki jest operacją wystarczająco rzadką, wówczas koszt jej wykonania jest ostatecznie amortyzowany przez resztę obliczeń. Dzięki takiemu podejściu można łatwo wykorzystać istniejące rzadkie oprogramowanie algebry liniowej (PETSc, Trilinos itp.).

Czy ta tępa metoda jest najczęściej stosowana, czy też istnieją biblioteki, które potrafią ponownie wykorzystać lub zmodyfikować starą matrycę podczas udoskonalania? W końcu większość siatki i odpowiadających jej macierzy pozostaje niezmieniona podczas adaptacji siatki.

Daniel Shapero
źródło

Odpowiedzi:

6

Tak, najczęstszym podejściem jest odbudowa. Struktury danych, które można modyfikować w miejscu, są zwykle mniej wydajne po skonfigurowaniu, a realokacja jest w rzeczywistości dość tania w porównaniu do ponownego montażu (np. Z powodu nieliniowości), więc jest to naprawdę dobre rozwiązanie. Poza stosunkowo rzadkimi niszami o bardzo łatwych rozwiązaniach, próby użycia dynamicznych struktur danych w solverach tylko spowolnią twoją aplikację. Jest to jednak powszechna opinia wśród tych, którzy zapominają mierzyć lub modelować wydajność.

Jed Brown
źródło
3

Jak już powiedział Jed, ponowne użycie elementów algebry liniowej, takich jak macierze i wektory, nie jest powszechnie wykonywane. Nie jest to również konieczne: konfiguracja tych komponentów jest stosunkowo bardzo tania w stosunku do kosztów rozwiązania systemów liniowych.

Jeśli szukasz rzeczy, które zmieniają się przy przechodzeniu ze statycznych do adaptacyjnych siatek, największą przeszkodą są wiszące węzły. W deal.II jest to obsługiwane przez klasę ConstraintMatrix , która pobiera kilka 1000 wierszy kodu. Opis tego, co robi ta klasa, można znaleźć w pracy mojej i Olivera Kayser-Herolda (do której link znajduje się na mojej stronie z publikacjami ). Żaden inny element (oczywiście oprócz obsługi siatki) nie wymagał tak dużej adaptacji przy przechodzeniu od siatek stałych do adaptacyjnych.

Wolfgang Bangerth
źródło