Какие прекондиционеры (и решатели) в PETSc для неопределенных симметричных систем следует использовать?

12

Моя система представляет собой симметричную задачу КЭ с множителями Лагранжа (например, несжимаемый поток Стокса):

(AВTВС)

где - типичный случай (я даже удостоверился, что уравнения пронумерованы так, чтобы множители Лагранжа появились последними). Система довольно большая (+ 100 тыс. Строк).Сзнак равно0

Прочитав ответ на этот вопрос , у меня сложилось впечатление, что существуют подходящие предварительные кондиционеры, которые можно использовать для смешанных задач FE.

Используя PETSc, мне удалось решить систему с помощью MINRES (-ksp_type minres -pc_type none -mat_type sbaij ), хотя точность (вызывая несколько итераций Ньютона для линейной задачи). Никакая другая комбинация preconditioner и ksp-solver не работает.

Есть ли комбинация флагов для PETSc, которая решит эту систему быстрее, чем с помощью MINRES?

Микаэль Охман
источник
1
Добро пожаловать в SciComp SE! Ваш вопрос хорошо сформулирован с точки зрения ясности и общности. Только одно предложение несколько неясно или неполно: что вы имеете в виду, вызвано неточными вычислениями?
января
1
Я забыл закончить предложение! Надеюсь теперь понятно.
Микаэль Осман

Ответы:

13

Предупреждение

Решение проблем седловой точки включает в себя гораздо больше выбора, чем определенные проблемы, и есть гораздо больше вещей, которые могут пойти не так. Используйте мониторы для всех уровней для отладки сходимости, чтобы убедиться, что пустые пространства обрабатываются правильно, когда вспомогательные операторы единичны (обычно это просто постоянное нулевое пространство), и чтобы обеспечить стабильность предварительные условия. Эти методы обсуждаются в этом вопросе .

Решение проблем седловой точки

Вы можете начать с раздела о решении блочных матриц в Руководстве пользователя . Для задач, подобных задачам Стокса, вы можете создать предварительное условие комплемента Schur, используя PCFIELDSPLIT .

-pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_detect_saddle_point

Это может быть объединено с предобусловливателем коммутации наименьших квадратов для дополнения Schur ( -fieldsplit_1_pc_type lsc). Это обычное явление, -fieldsplit_1_ksp_type preonlyи пусть внешняя итерация выполняет большую часть работы. Блочно-треугольные варианты популярны при использовании таким образом, например,-pc_fieldsplit_schur_fact_type upper .

Вы можете найти более подробную информацию о составе решателя, используя опции параметров в нашей статье (препринт) , в которой также обсуждается коммутация многосетки с разложением блока (размещение поля поля внутри многосетки).

Для многих задач вы захотите настроить декомпозицию поля и предобусловливатели дополнения Шура, многие из которых включают вспомогательные операторы. Например, метод «конвекции-диффузии давления» (PCD) от Elman et al. Требует дискретизации вспомогательного оператора в пространстве давления. С этой целью см. Примеры PCSHELL и раздел руководства пользователя.

Джед браун
источник
3

Вам нужен предварительный кондиционер, и его конструкция обсуждается здесь: http://www.math.tamu.edu/~bangerth/videos.676.38.html

Вольфганг Бангерт
источник
Лекция была очень интересной, но я искал конкретные примеры того, как использовать PETSc для ее решения.
Микаэль Осман