Planuję użyć multigrid do obliczenia wartości własnych i wektorów, i zauważyłem, że PETSc ma wsparcie wysokiego poziomu dla multigrid. Dokumentacja PETSc mówi, że ta część PETSc nie powinna być używana, ponieważ wkrótce zostanie wymieniona.
Które inne biblioteki mają obsługę wysokiego poziomu dla wielosiatek i z grubsza, kiedy PETSc wyda nową obsługę wielosiatek?
Odpowiedzi:
Zarówno PETSc, jak i Trilinos mają dobre algebraiczne metody wielosieciowe.
deal.II implementuje geometryczne metody wielosiatkowe do dyskretyzacji elementów skończonych, patrz na przykład program samouczka kroku 16 .
źródło
PETSc multigrid (jako warunek wstępny) jest dość dojrzały i może być używany z dowolnym solwerem KSP (iteracyjna metoda Kryłowa) w PETSc, wpisując:
-pc_type mg
Wymaga to jednak pewnej metody generowania zgrubnych poziomów, takiej jak siatki strukturalne zdefiniowane przez obiekty PETSc DA, które zostaną automatycznie zgrubione.
Lub, jeśli chcesz użyć algebraicznej multigrid z pakietu HYPRE, możesz użyć
-pc_type hypre
Lub z pakietu ML za pomocą
-pc_type ml
Są one pobierane podczas procesu konfiguracji przez dołączenie
--download-hypre=1 --download-ml=1
do linii poleceń ./configure.
Część, która jest amortyzowana (na razie) to framework DMMG, który jest zastępowany przez SNES (nieliniowy) solver FAS i lepsze wsparcie dla obsługi wielopoziomowych dyskretyzacji podczas korzystania z MG lub FAS, gdy mówimy. Innym zamiennikiem (dla problemów liniowych) jest
-pc_type gamg -pc_gamg_type sa
Jest to nowszy kod, natywny w PETSc, wysoce skalowalna algebraiczna multigrid z wygładzoną agregacją.
źródło