Які попередні кондиціонери (і розв'язувачі) в PETSc для невизначених симетричних систем я повинен використовувати?


12

У моїй системі є симетрична проблема ПЕ з мультиплікаторами лагранжу (наприклад, нестислимий потік Стокса):

(ABTBC)

де - типовий випадок (я навіть переконався, що рівняння пронумеровані так, що множники Лагранжа з’являються останніми). Система досить велика (+ 100k рядків).C=0

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

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

Чи є комбінація прапорів для PETSc, яка вирішить цю систему швидше, ніж лише за MINRES?


1
Ласкаво просимо в SciComp SE! Ваше питання добре поставлене з точки зору чіткості та загальності. Лише одне речення є дещо незрозумілим чи неповним: що ви, на увазі, викликані неточними обчисленнями?
січня

1
Я забув закінчити речення! Я сподіваюся, що це зараз зрозуміло.
Мікаель Охман

Відповіді:


13

Увага

Вирішення проблем з точкою сідла передбачає набагато більше варіантів, ніж певні проблеми, і є набагато більше речей, які можуть піти не так. Використовуйте монітори на всіх рівнях для налагодження конвергенції, щоб переконатися, що нульові простори обробляються правильно, коли допоміжні оператори є сингулярними (зазвичай це просто постійний нульовий простір) та щоб забезпечити стабільність попередніх кондиціонерів. Ці методи обговорюються в цьому питанні .

Розв’язання задач щодо точки сідла

Почати можна з розділу з розв’язування блокових матриць у Посібнику користувача . Для проблем, схожих на Стокса, ви можете створити допоміжний кондиціонер Schur за допомогою PCFIELDSPLIT .

-pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_detect_saddle_point

Це може поєднуватися з попередньою умовою коммутатора з найменшими квадратами для комплексу Шура ( -fieldsplit_1_pc_type lsc). Звичайна -fieldsplit_1_ksp_type preonlyі нехай зовнішня ітерація робить більшу частину роботи. Блок-трикутні варіанти популярні при використанні в цьому випадку, наприклад, -pc_fieldsplit_schur_fact_type upper.

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

У зв'язку з багатьма проблемами, ви хочете налаштувати декомпозицію поля та допоміжні кондиціонери Schur, багато з яких залучають допоміжних операторів. Наприклад, метод "конвекція-дифузія тиску" (PCD) від Elman et al вимагає дискретизації допоміжного оператора в просторі тиску. Дивіться приклади PCSHELL та розділ керівництва користувача для цієї мети.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.