Неструктуровані сітки мають своє місце.
Можливо, ви захочете переглянути рамки моделювання систем Землі (ESMF). У них є код для повторної сітки - спеціально для цієї мети - і вони теж зробили чудові речі з паралельним кодом. Вся система розрахована на пару моделей, тому там можуть бути й інші корисні речі.
Деякі інші примітки:
"жоден спосіб зробити це ефективно для будь-якої значної кількості балів"
ну, ефективність - це відносна річ - як тільки ви отримаєте сітку в структурі дерева, ви можете шукати її в O (logn), що може бути досить проклятим швидко, хоча і не O (1), як пошук звичайної сітки є.
Крім того, це здається, що інтерполяцію потрібно робити на кожному кроці, якщо сітки не адаптуються, то відображення з однієї сітки в іншу залишається постійним. Таким чином, ви можете обчислити це відображення (тобто, який елемент у кожній сітці відповідає якому елементу в іншій) будь-яким зручним способом, зберігати його, і тоді вам ніколи не потрібно буде обчислювати його agin (поки сітки не зміняться).
Це дає вам код інтерполяції - там, де ви хочете збалансувати точність та продуктивність, - проста лінійна інтерполяція через трикутник швидко і може бути достатньо хорошою.
"Я думав про використання kd-дерева для пошуку найближчого вузла даної точки, тоді я використовував би функції форми цього елемента"
пам’ятайте, що найближчий вузол не отримує вам елемент - тому ви хочете зробити трохи більше, щоб знайти потрібний елемент. Одним із варіантів може бути замість цього rtree, який зберігає / здійснює пошук за обмежувальним вікном - ви отримуєте більше одного елемента при кожному пошуку, але потім можете перевірити, який із них правильний.