Kode Multigrid Aljabar

9

Saya ingin memahami lebih detail tentang penerapan Metode Multigrid Aljabar (AMG). Saya telah membaca "Tutorial Multigrid", yang cukup bagus dan menjelaskan semua detail interpolasi, operator grid-kasar, dan pemilihan grid kasar untuk AMG. Namun, saya pikir, tidak ada yang seperti bermain-main dan membaca kode.

Jadi, saya ingin bertanya apakah ada yang tahu "kode contoh" AMG klasik, seperti kode FORTRAN multigrid geometris yang tersedia di akhir "Metode Multigrid" (SIAM) oleh SF McCormick. Cukup sulit untuk mendapatkan kode produksi dan kualitas tinggi seperti BoomerAMG untuk mempelajari lebih lanjut tentang metode ini.

Bernardo MR
sumber
Apakah Anda secara khusus tertarik pada AMG klasik (bukan * agregasi yang dihaluskan)? Jika demikian, sebutkan ini dalam pertanyaan.
Jed Brown

Jawaban:

10

BoomerAMG adalah bagian dari paket Hypre , yang mudah didapat. Kode yang jauh lebih kompleks jika Anda mulai melihat metode ini mungkin PyAMG .

Peter Brune
sumber
Ya, saya telah melihat PyAMG, yang merupakan kode yang sangat bagus, tetapi memiliki semua hal ini tentang membungkus kode C / C ++ dengan Python, ia mengimplementasikan metode AMG yang berbeda selain yang "klasik", dan seterusnya. Saya mencari sesuatu yang lebih sederhana, yang digunakan orang untuk mengajar.
Bernardo MR
4
Sayangnya, pengalaman umum dalam menggunakan dan mencoba berkontribusi pada kode AMG adalah bahwa jika Anda tidak memiliki banyak pilihan, Anda tidak dapat menyelesaikan apa pun yang mendekati masalah yang menarik. Oleh karena itu, paket AMG khas Anda akan mencakup sejumlah opsi untuk perkiraan keterhubungan, konstruksi interpolator, dan perataan yang tentunya sulit diurai dengan membaca kode. Yang dikatakan, AMG klasik sangat sederhana, dan menerapkannya sendiri atau meminta siswa Anda untuk melakukan ini sendiri (tergantung pada tingkat keterampilan mereka) mungkin merupakan cara yang harus dilakukan.
Peter Brune
2

Saya sangat merekomendasikan pengenalan Alfio Borizi untuk metode multigrid aljabar. Ada contoh kode fortran 77 dalam lampiran A.

Paul
sumber
Saya pikir dia bertanya tentang implementasi, bukan lebih banyak literatur.
Jack Poulson
1
@JackPoulson: Ini memiliki implementasi di lampiran.
Paul
2
Maaf, sepertinya saya tidak bisa membaca pagi ini. Terpilih.
Jack Poulson
1
@ Paul: Saya mungkin salah, tapi saya pikir ini kode multigrid geometris untuk masalah Poisson (yang berfungsi juga untuk kasus nonlinear).
Bernardo MR
@ BernardoM.R .: Saya baru saja menemukan file postscript ini ... Ini memiliki banyak contoh nyata dari operator perpanjangan dan pembatasan untuk masalah model. Meskipun sebenarnya tidak memiliki kode lengkap, tetapi mungkin masih ada gunanya bagi Anda.
Paul
1

Ada juga paket ML yang merupakan bagian dari Trilinos. Reputasinya sama baiknya dengan BoomerAMG / hypre.

Paket Trilinos yang lebih baru untuk AMG disebut MueLu, saya percaya, dan juga harus tersedia dalam rilis terbaru.

Semua ini adalah open source.

Wolfgang Bangerth
sumber
1
MueLu belum dirilis dan terakhir kali saya berbicara dengannya, Ray tidak mengharapkan rilis publik untuk sekitar satu tahun lagi. Perhatikan bahwa ML dan MueLu (sejauh saya telah mendengar apa yang ada di dalamnya) didasarkan pada agregasi yang dihaluskan yang merupakan algoritma yang cukup berbeda dari AMG klasik (yang menjadi basis BoomerAMG).
Jed Brown
1

Saya telah mengerjakan implementasi ini sebentar. Ini Python / Numpy / Scipy. Ini bukan multigrid aljabar - Anda harus menyediakan operator pembatasan Anda sendiri. Tetapi jika ini adalah implementasi pendidikan di mana Anda tertarik, saya akan menyambut beberapa permintaan tarik untuk menambahkan kemampuan seperti itu.

tsbertalan
sumber