Есть ли способ интерполировать разбросанные данные на сложную трехмерную сетку? - PullRequest
1 голос
/ 01 октября 2019

Я отслеживаю частицы в поле потока. У меня есть положение и скорость по всей области. Это оставляет мне большой файл данных с координатами x, y, z и скоростью частиц. Есть ли способ интерполировать эти разбросанные данные на узловые точки существующего домена, чтобы у меня была сетка с данными частиц в ее узлах?

Ранее я делал то же самое на плоской сетке (простопрямоугольная сетка) с использованием np.meshgrid и scipy.interpolate.griddata.

def contours():
    size = 700 # Refining grid

    xi, yi = np.linspace(18.191, 61.851, size), np.linspace(0.25681, 17.721, size) # Define Domain

    xi, yi = np.meshgrid(xi, yi) # Forming a grid

    # xj, yj, uj are numpy arrays; Interpolation step
    zi = scipy.interpolate.griddata((xj, yj), uj/603.0, (xi, yi), method=method, fill_value=1.1)

    # Plotting
    plt.figure()
    plt.contour(xi ,yi, zi, np.linspace(0, 1.0, 10), linewidths=1.0, linestyles='dashed', cmap='jet')
    plt.colorbar()
    plt.xlabel('X(mm)')
    plt.ylabel('Y(mm)')
    plt.xlim(18.2, 61.9)
    plt.ylim(0.257, 17.7)

    return

Приведенный выше код работает для двумерной задачи. Есть ли способ сделать то же самое для 3d-корпуса? Что делать, если у меня есть заранее заданная трехмерная сетка и разбросанные данные внутри домена?

Заранее спасибо !!

...