Prekondisi (dan pemecah) mana dalam PETSc untuk sistem simetris tak terbatas yang harus saya gunakan?

12

Sistem saya adalah masalah FE simetris dengan pengganda lagrange (misalnya aliran Stokes yang tidak dapat dikompresi):

(SEBUAHBTBC)

di mana adalah kasus khas (saya bahkan telah memastikan bahwa persamaan diberi nomor sehingga pengali Lagrange muncul terakhir). Sistem ini cukup besar (garis + 100k).C=0

Setelah membaca jawaban untuk pertanyaan ini , saya mendapat kesan bahwa ada prasyarat yang cocok yang dapat digunakan untuk masalah campuran FE.

Menggunakan PETSc, saya telah berhasil menyelesaikan sistem dengan MINRES ( -ksp_type minres -pc_type none -mat_type sbaij), meskipun presisi tidak terlalu bagus (menyebabkan beberapa iterasi Newton untuk masalah linier). Tidak ada kombinasi lain dari preconditioner dan ksp-solver yang berfungsi.

Apakah ada kombinasi flag untuk PETSc yang akan menyelesaikan sistem ini lebih cepat daripada hanya MINRES?

Mikael Öhman
sumber
1
Selamat datang di SciComp SE! Pertanyaan Anda diajukan dengan baik dalam hal kejelasan dan umum. Hanya satu kalimat yang agak tidak jelas atau tidak lengkap: Apa maksud Anda disebabkan oleh perhitungan yang tidak tepat?
Jan
1
Saya lupa menyelesaikan kalimatnya! Saya harap itu jelas sekarang.
Mikael Öhman

Jawaban:

13

Peringatan

Memecahkan masalah sadel melibatkan lebih banyak pilihan daripada masalah yang pasti, dan ada banyak hal yang bisa salah. Gunakan monitor untuk semua level untuk men-debug konvergensi, untuk memastikan bahwa ruang nol ditangani dengan benar ketika operator tambahan singular (biasanya hanya ruang nol konstan), dan untuk memastikan bahwa prekondisi stabil. Teknik-teknik ini dibahas dalam pertanyaan ini .

Memecahkan masalah titik sadel

Anda bisa mulai dengan bagian tentang memecahkan matriks blok di Panduan Pengguna . Untuk masalah seperti Stokes, Anda dapat membangun preconditioner komplemen Schur menggunakan PCFIELDSPLIT .

-pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_detect_saddle_point

Ini dapat dikombinasikan dengan preconditioner Least Squares Commutator untuk komplemen Schur ( -fieldsplit_1_pc_type lsc). Adalah umum untuk -fieldsplit_1_ksp_type preonlydan membiarkan iterasi luar melakukan sebagian besar pekerjaan. Varian blok-segitiga populer ketika digunakan dengan cara ini, misalnya -pc_fieldsplit_schur_fact_type upper,.

Anda dapat menemukan rincian lebih lanjut tentang komposisi solver menggunakan opsi opsi di makalah kami (pracetak) , yang juga membahas komuter multigrid dengan dekomposisi blok (menempatkan bidang fields di dalam multigrid).

Untuk banyak masalah, Anda harus menyesuaikan dekomposisi bidang dan prekondisi pelengkap Schur, yang banyak di antaranya melibatkan operator bantu. Sebagai contoh, metode "tekanan konveksi-difusi" (PCD) dari Elman et al membutuhkan diskritisasi operator tambahan di ruang tekanan. Lihat contoh PCSHELL dan bagian manual pengguna untuk tujuan ini.

Jed Brown
sumber
3

Anda memang menginginkan prekondisi, dan pembangunannya dibahas di sini: http://www.math.tamu.edu/~bangerth/videos.676.38.html

Wolfgang Bangerth
sumber
Ceramahnya sangat menarik, tetapi saya mencari beberapa contoh nyata tentang cara menggunakan PETSc untuk memecahkannya.
Mikael Öhman