Apakah ada perpustakaan tujuan umum untuk penyempurnaan mesh jaringan terstruktur yang terstruktur?

18

Adaptive mesh refinement (AMR) adalah teknik umum untuk menangani masalah berbagai skala spasial dalam solusi numerik PDE. Apa perpustakaan tujuan umum yang ada untuk AMR pada kisi terstruktur? Idealnya saya ingin sesuatu dalam semangat PETSc, di mana perpustakaan hanya menangani jerat adaptif dan saya memberikan fisika dan diskritisasi (perbedaan / volume / elemen terbatas).

Perpustakaan yang ideal akan menjadi

  • Modular : tidak menentukan bagaimana saya menulis kode saya atau terlalu banyak struktur data saya
  • Umum : tidak peduli diskritisasi macam apa yang saya gunakan
  • Efisien : tidak terlalu banyak mengeluarkan biaya
  • Paralel dan sangat terukur

Perpustakaan yang hanya cocok dengan sebagian dari kriteria ini akan tetap menarik.

Tambahan : Saya mengetahui daftar lengkap paket-paket AMR dari Donna Calhoun , tetapi saya tidak tahu yang mana dari mereka (jika ada) yang cocok dengan kriteria di atas. Jadi saya terutama tertarik untuk mendengar dari orang-orang yang memiliki pengalaman nyata dengan satu atau (lebih baik) paket, bagaimana mereka mengukur dalam istilah-istilah tersebut.

David Ketcheson
sumber
2
+1, saya ingin tahu apa perangkat lunak AMR di luar sana juga, dan lebih suka memenuhi kriteria yang Anda sebutkan di atas.
Geoff Oxberry
Hanya berpikir saya akan menyebutkan bahwa versi terbaru dari Chombo baru saja dirilis, dan (diklaim) yang seharusnya lebih mudah untuk diintegrasikan ke dalam paket yang lebih besar ( Catatan rilis ). Ini bukan revisi besar, jadi kemungkinan beberapa hal masih belum memenuhi semua kriteria Anda.
Jeremy Kozdon

Jawaban:

14

Satu perpustakaan untuk dipertimbangkan adalah BoxLib . Fitur utamanya (dari situs web) adalah:

  • Dukungan untuk AMR terstruktur-blok dengan sub-siklus opsional dalam waktu
  • Dukungan untuk data yang berpusat pada sel, berpusat pada wajah dan terpusat pada simpul
  • Dukungan untuk pemecahan hiperbolik, parabola dan elips pada struktur grid hirarkis
  • Versi C ++ dan Fortran90
  • Mendukung model pemrograman hybrid dengan MPI dan OpenMP
  • Dasar aplikasi matang dalam pembakaran, astrofisika, kosmologi, dan media berpori
  • Pembesaran skala yang diperagakan ke lebih dari 200.000 prosesor
  • Tersedia gratis untuk pengguna yang tertarik
  • Ada juga pembungkus Python (yang ditulis oleh saya) untuk versi Fortran termasuk (meskipun itu masih sangat muda).

    Matthew Emmett
    sumber
    9

    Anda juga harus melihat libMesh . Ini ditargetkan pada metode elemen hingga, tapi selain itu, saya pikir itu memeriksa sebagian besar kotak Anda. Tidak seperti BoxLib, ini adalah pustaka tipe elemen campuran yang sepenuhnya tidak terstruktur, yang tetap mendukung perpustakaan, piramida, prisma, dan heksahedra dalam jaring yang sama. Ia juga memiliki salah satu set aturan integrasi terbesar untuk fungsi basis polinomial tingkat tinggi. Ini diatur untuk membiarkan Anda memanggil PETSc (dan beberapa perpustakaan lainnya juga) secara langsung, sehingga Anda memiliki skalabilitas pemecah yang sama seperti yang dilakukan PETSc.

    Tentu ada cara libMesh dalam melakukan sesuatu, tetapi ada cara PETSc dalam melakukan sesuatu juga. Jadi mudah-mudahan itu tidak membuat Anda takut.

    Bill Barth
    sumber
    4

    Saya akan mencoba SAMRAI Saya tahu setidaknya satu kode yang menggunakannya dengan sukses - IBAMR , kode Metode Batas Immersed untuk Interaksi Struktur-Fluida dengan AMR.

    Johntra Volta
    sumber
    Terima kasih Johntra (dan selamat datang di scicomp)! Apakah Anda mengetahui perbedaan yang mencolok antara SAMRAI dan BoxLib? Anda juga dapat menggunakan tautan sebaris dengan memasukkan teks tautan di [] dan tujuan di ()
    Aron Ahmadia
    Sayangnya saya tidak - karena saya faktanya, saya baru saja mendengarnya (BoxLib) untuk pertama kalinya. Itulah alasan mengapa saya memutuskan untuk bergabung - untuk belajar smt baru dengan berdiskusi secara informal dengan kalian - terima kasih.
    Johntra Volta
    Saya akan SAMRAI kedua, itu adalah kerangka kerja tujuan umum yang sangat berguna untuk AMR. Saya juga sangat suka desain hybrid C ++ / Fortran yang disukai penulis. Kernel komputasi dapat ditulis dalam Fortran, sebagaimana mestinya, dan kelas C ++ menyediakan semua abstraksi yang diperlukan untuk menyembunyikan MPI bagian dalam dan manajemen memori.
    talonmies
    @AronAhmadia: BoxLib tidak dapat menangani interpolasi linier piecewise dengan mengubah batas Dirichlet dalam geometri berpusat sel Multigrid. Pikiran akan menambahkannya sebagai poin yang menarik.
    Gaurav Saxena
    2

    Anda tidak menentukan terstruktur atau tidak terstruktur.

    Lihatlah Paramesh, Pyramid, p4est, Dendro, Samrai dan Chombo.

    Btw Pyramid tidak melakukan pengerasan.

    stali
    sumber
    1
    Tangkapan yang bagus; Saya telah mengedit pertanyaan. Bisakah Anda mengomentari seberapa baik perpustakaan ini sesuai dengan kriteria saya?
    David Ketcheson