Pada dasarnya, FEM tampaknya menjadi masalah yang cukup banyak "diselesaikan". Ada banyak kerangka kerja yang kuat yang ada, seperti Trilinos, PETSc, FEniCS, Libmesh atau MOOSE.
Satu hal yang mereka miliki bersama: Mereka sangat "berat". Pertama, instalasi biasanya sangat menyakitkan. Kedua, antarmuka / API mereka tebal dan berat - Anda harus menerjemahkan seluruh ide Anda ke dalam pemikiran perpustakaan masing-masing. Itu juga berarti, interoperabilitas dan perpanjangan untuk persyaratan khusus atau kode yang ada sulit.
Proyek lain seperti (contoh acak) Boost, LibIGL, Aztec (linear solver), Eigen atau CGAL menunjukkan bahwa sangat mungkin untuk menulis perpustakaan yang kuat yang diintegrasikan secara mulus ke dalam kode C ++ atau Python, dengan antarmuka yang sangat ramping dan bersih, tanpa perlu instalasi dari kerangka kerja super berat.
Apakah ada paket yang sangat ringan untuk FEM? Saya tidak mencari solver automagic yang mudah - Saya mencari perpustakaan yang menawarkan fungsi-fungsi yang kuat sambil mempertahankan antarmuka yang ramping, interoperabilitas dengan struktur data umum (C ++ STL misalnya) dan instalasi ringan (contohnya header saja).
Jawaban:
Saya telah mengembangkan pustaka elemen hingga yang ringan di Python 2.7 memanfaatkan kekuatan array NumPy dan matriks jarang SciPy. Gagasan umum adalah bahwa dengan elemen mesh dan elemen hingga, Anda memiliki korespondensi satu-ke-satu antara atau bentuk bilinear dan matriks (jarang). Pengguna kemudian dapat menggunakan matriks yang dihasilkan sesuai keinginannya.
Izinkan saya menyajikan contoh kanonik di mana kita memecahkan persamaan Poisson dalam satuan kuadrat dengan pemuatan satuan.
Komentar lain:
Anda dapat menemukan proyek di GitHub .
Versi kode Python 3 dapat ditemukan di sini .
sumber
Saya pikir Anda memiliki beberapa kebingungan. PETSc tidak dalam liga yang sama dengan Fenics, Libmesh, Moose dll. Faktanya, semua paket (kelas berat) ini menggunakan PETSc untuk aljabar linier.
IMHO PETSc sangat ringan yang bisa Anda dapatkan. Itu hanya membutuhkan kompiler C / Fortran dan Python (hanya digunakan untuk konfigurasi) dan Anda dapat membangun perpustakaan di bawah 5 menit pada laptop Anda. Juga, bagian yang paling rumit dari kode FE adalah perakitan paralel dan pecahkan serta PETSc menangani keduanya. Sisanya (misalnya, perhitungan tingkat elemen) agak mudah.
Trillinos, OTOH jauh lebih dari kerangka aljabar linier, misalnya, Aztec (pemecah linear) yang Anda sebutkan adalah bagian darinya. Dalam beberapa hal Aztec di Trillinos dapat dibandingkan dengan PETSc.
sumber
Saya bisa merekomendasikan kacang .
nutils memenuhi setidaknya beberapa persyaratan "ringan" Anda.
sumber