Я планирую использовать multigrid для вычисления некоторых собственных значений и векторов, и я заметил, что PETSc имеет высокоуровневую поддержку multigrid. Документация PETSc гласит, что эту часть PETSc не следует использовать, поскольку она скоро будет заменена.
Какие другие библиотеки имеют высокоуровневую поддержку многосеток, и примерно как скоро PETSc выпустит новую многосеточную поддержку?
Ответы:
И у PETSc, и у Trilinos есть хорошие алгебраические многосеточные методы.
В deal.II реализованы геометрические многосеточные методы для дискретизации конечных элементов, см., например, учебную программу step-16 .
источник
PETG multigrid (в качестве предварительного условия) является достаточно зрелым и может использоваться с любым из решателей KSP (итеративный метод Крылова) в PETSc, набрав:
-pc_type mg
Однако для этого требуется, чтобы у вас был какой-то способ создания грубых уровней, например структурированные сетки, определенные объектами DA PETSc, которые будут автоматически огрублены.
Или, если вы хотите использовать алгебраическую многосетку из пакета HYPRE, вы можете использовать
-pc_type hypre
Или из пакета ML с
-pc_type ml
Они загружаются в процессе настройки путем добавления
--download-hypre=1 --download-ml=1
в вашу ./configure командную строку.
Часть, которая является амортизируемой (на данный момент), является структурой DMMG, которая заменяется решателем SNES (нелинейным) FAS и обеспечивает лучшую поддержку для обработки многоуровневых дискретизаций при использовании MG или FAS, как мы говорим. Другая замена (для линейных задач)
-pc_type gamg -pc_gamg_type sa
Это более новый код, встроенный в PETSc, хорошо масштабируемая алгебраическая многосетка сглаженного агрегирования.
источник