Struktur data novel apa yang digunakan dalam FEM adaptif?

9

Banyak pustaka FEM adaptif menggunakan struktur data mesh yang lebih canggih untuk menangani penambahan / penghapusan node, edge, triangles, tetrahedra, dll. Misalnya, p4est library menggunakan struktur data octree untuk perbaikan mesh adaptif; Anda tidak akan sering menemukan oktri yang digunakan untuk perhitungan pada jaring statis.

Apa perubahan pada sisi aljabar linier untuk FEM adaptif?

Cara paling tumpul yang bisa saya bayangkan adalah membangun kembali semua matriks sistem sepenuhnya setiap kali mesh tersebut disempurnakan atau kasar. Jika adaptasi mesh adalah operasi yang cukup jarang, maka biaya melakukannya pada akhirnya diamortisasi selama sisa perhitungan. Seseorang dapat dengan mudah memanfaatkan perangkat lunak aljabar linier jarang yang ada (PETSc, Trilinos, dll.) Dengan pendekatan ini.

Apakah metode blunt ini paling umum digunakan, atau apakah ada perpustakaan yang berhasil menggunakan kembali atau memodifikasi matriks lama selama penyempurnaan? Bagaimanapun, sebagian besar mesh dan matriks yang sesuai tidak berubah selama adaptasi mesh.

Daniel Shapero
sumber

Jawaban:

6

Ya, pendekatan yang paling umum adalah membangun kembali. Struktur data yang dapat dimodifikasi di tempat cenderung kurang efisien setelah pengaturan, dan realokasi sebenarnya cukup murah dibandingkan dengan pemasangan kembali (misalnya, karena nonlinier) sehingga ini benar-benar solusi yang baik. Di luar relung yang relatif jarang dengan pemecahan yang sangat mudah, upaya untuk menggunakan struktur data dinamis dalam solver hanya akan membuat aplikasi Anda lebih lambat. Namun, ini adalah persepsi umum di antara mereka yang lupa mengukur atau memodelkan kinerja.

Jed Brown
sumber
3

Seperti yang sudah dikatakan Jed, penggunaan kembali komponen aljabar linier seperti matriks dan vektor tidak umum dilakukan. Ini juga tidak perlu: menyiapkan komponen-komponen ini relatif sangat murah dibandingkan dengan biaya penyelesaian sistem linear.

Jika Anda mencari hal-hal yang berubah saat beralih dari sambungan statis ke sambungan yang disempurnakan secara adaptif, maka kendala terbesar adalah menangani simpul gantung. Dalam deal.II , ini ditangani oleh kelas ConstraintMatrix , yang membutuhkan beberapa 1000 baris kode. Anda dapat menemukan beberapa deskripsi tentang apa yang dikerjakan oleh kelas ini di koran oleh saya sendiri dan Oliver Kayser-Herold (ditautkan dari dari halaman publikasi saya ). Tidak ada komponen lain (selain menangani mesh, tentu saja) yang membutuhkan begitu banyak adaptasi ketika beralih dari mesh tetap ke adaptif.

Wolfgang Bangerth
sumber