Grid tidak terstruktur memiliki tempatnya.
Anda mungkin ingin melihat Kerangka Pemodelan Sistem Bumi (ESMF). Mereka memiliki beberapa kode untuk grid-ulang - khusus untuk tujuan ini - dan mereka telah melakukan beberapa hal bagus dengan kode paralel juga. Seluruh sistem dirancang untuk beberapa model, jadi mungkin ada hal berguna lainnya di sana.
Beberapa catatan lain:
"tidak ada cara untuk melakukan ini secara efisien untuk sejumlah besar poin"
baik, efisien adalah hal yang relatif - setelah Anda mendapatkan grid dalam struktur pohon, Anda dapat mencarinya di O (logn), yang bisa sangat cepat, meskipun bukan O (1), seperti mencari grid biasa adalah.
Juga, sepertinya interpolasi perlu dilakukan pada setiap langkah waktu, jika grid tidak beradaptasi, maka pemetaan dari satu grid ke yang lain tetap konstan. Jadi, Anda dapat menghitung pemetaan itu (yaitu elemen mana di setiap kisi yang sesuai dengan elemen mana di yang lain) dengan cara apa pun yang nyaman, simpan, dan kemudian Anda tidak perlu menghitungnya lagi (sampai kisi-kisi berubah).
Yang membuat Anda dengan kode interpolasi - di mana Anda ingin menyeimbangkan akurasi dengan kinerja - interpolasi linier sederhana di seluruh segitiga cepat, dan mungkin cukup baik.
"Saya berpikir tentang menggunakan kd-tree untuk mencari simpul terdekat dari titik tertentu, maka saya akan menggunakan fungsi bentuk elemen itu"
ingat bahwa simpul terdekat tidak membuat Anda elemen - jadi Anda akan ingin melakukan sedikit lebih banyak untuk menemukan elemen yang Anda inginkan. Salah satu opsi adalah menggunakan rtree sebagai gantinya, yang menyimpan / mencari dengan membatasi kotak - Anda akan mendapatkan lebih dari satu elemen dengan setiap pencarian, tetapi Anda kemudian dapat memeriksa mana yang benar secara langsung.