Saya berencana menggunakan multigrid untuk menghitung beberapa nilai eigen dan vektor, dan saya perhatikan PETSc memiliki dukungan tingkat tinggi untuk multigrid. Dokumentasi PETSc mengatakan bahwa bagian PETSc ini tidak boleh digunakan, karena akan segera diganti.
Perpustakaan lain mana yang memiliki dukungan tingkat tinggi untuk multigrid, dan kira-kira seberapa cepat PETSc akan merilis dukungan multigrid baru?
Jawaban:
Baik PETSc dan Trilinos memiliki metode multigrid aljabar yang baik.
deal.II mengimplementasikan metode multigrid geometrik untuk diskritisasi elemen hingga, lihat misalnya program tutorial langkah-16 .
sumber
PETSc multigrid (sebagai prekondisi) cukup matang dan dapat digunakan dengan salah satu pemecah KSP (metode Krylov iteratif) dalam PETSc dengan mengetik:
-pc_type mg
Namun, ini mengharuskan Anda memiliki beberapa cara untuk menghasilkan tingkat kasar Anda, seperti memiliki kisi-kisi terstruktur yang didefinisikan oleh objek-objek PETSc DA, yang akan kasar secara otomatis.
Atau, jika Anda ingin menggunakan multigrid aljabar dari paket HYPRE, Anda bisa menggunakan
-pc_type hypre
Atau dari paket ML dengan
-pc_type ml
Ini diunduh selama proses konfigurasi dengan menambahkan
--download-hypre=1 --download-ml=1
ke baris perintah ./configure Anda.
Bagian yang didepresiasi (untuk saat ini) adalah kerangka DMMG, yang digantikan oleh pemecah FAS SNES (nonlinear) dan dukungan yang lebih baik untuk menangani diskritisasi bertingkat saat menggunakan MG atau FAS saat kita bicara. Penggantian lainnya (untuk masalah linier) adalah
-pc_type gamg -pc_gamg_type sa
Ini adalah kode yang lebih baru, asli dalam PETSc, multigrid yang dihaluskan-agregasi yang sangat skalabel.
sumber