Interpolation d'un maillage triangulaire vers un maillage quadrangulaire

Beginner

This tutorial is from open-source community. Access the source code

Introduction

Dans ce laboratoire, vous allez apprendre à utiliser la bibliothèque Matplotlib de Python pour interpoler des données d'un maillage triangulaire vers un maillage quadrangulaire. Nous commencerons par créer une triangulation puis interpoler les données en utilisant des méthodes linéaires et cubiques. Enfin, nous tracerons les résultats.

Conseils sur la VM

Une fois le démarrage de la VM terminé, cliquez sur le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session et nous réglerons rapidement le problème pour vous.

Créer une triangulation

La première étape consiste à créer une triangulation à l'aide des données x, y et triangles données. Nous tracerons ensuite la triangulation.

## Créer une triangulation.
x = np.asarray([0, 1, 2, 3, 0.5, 1.5, 2.5, 1, 2, 1.5])
y = np.asarray([0, 0, 0, 0, 1.0, 1.0, 1.0, 2, 2, 3.0])
triangles = [[0, 1, 4], [1, 2, 5], [2, 3, 6], [1, 5, 4], [2, 6, 5], [4, 5, 7],
             [5, 6, 8], [5, 8, 7], [7, 8, 9]]
triang = mtri.Triangulation(x, y, triangles)

## Tracer la triangulation.
plt.triplot(triang, 'ko-')
plt.title('Triangular grid')
plt.show()

Interpoler des données en utilisant la méthode linéaire

La deuxième étape consiste à interpoler les données en utilisant la méthode linéaire. Nous allons créer un maillage quadrangulaire régulièrement espacé puis utiliser la méthode LinearTriInterpolator pour interpoler les données. Enfin, nous tracerons les données interpolées.

## Interpoler vers un maillage quadrangulaire régulièrement espacé.
z = np.cos(1.5 * x) * np.cos(1.5 * y)
xi, yi = np.meshgrid(np.linspace(0, 3, 20), np.linspace(0, 3, 20))

## Interpoler en utilisant la méthode linéaire.
interp_lin = mtri.LinearTriInterpolator(triang, z)
zi_lin = interp_lin(xi, yi)

## Tracer les données interpolées.
plt.contourf(xi, yi, zi_lin)
plt.plot(xi, yi, 'k-', lw=0.5, alpha=0.5)
plt.plot(xi.T, yi.T, 'k-', lw=0.5, alpha=0.5)
plt.title("Linear interpolation")
plt.show()

Interpoler des données en utilisant la méthode cubique

La troisième étape consiste à interpoler les données en utilisant la méthode cubique. Nous allons utiliser la méthode CubicTriInterpolator avec le paramètre kind défini sur 'geom' ou'min_E'. Enfin, nous tracerons les données interpolées.

## Interpoler en utilisant la méthode cubique avec kind=geom.
interp_cubic_geom = mtri.CubicTriInterpolator(triang, z, kind='geom')
zi_cubic_geom = interp_cubic_geom(xi, yi)

## Tracer les données interpolées.
plt.contourf(xi, yi, zi_cubic_geom)
plt.plot(xi, yi, 'k-', lw=0.5, alpha=0.5)
plt.plot(xi.T, yi.T, 'k-', lw=0.5, alpha=0.5)
plt.title("Cubic interpolation, kind='geom'")
plt.show()

## Interpoler en utilisant la méthode cubique avec kind=min_E.
interp_cubic_min_E = mtri.CubicTriInterpolator(triang, z, kind='min_E')
zi_cubic_min_E = interp_cubic_min_E(xi, yi)

## Tracer les données interpolées.
plt.contourf(xi, yi, zi_cubic_min_E)
plt.plot(xi, yi, 'k-', lw=0.5, alpha=0.5)
plt.plot(xi.T, yi.T, 'k-', lw=0.5, alpha=0.5)
plt.title("Cubic interpolation, kind='min_E'")
plt.show()

Sommaire

Dans ce laboratoire, nous avons appris à utiliser la bibliothèque Matplotlib de Python pour interpoler des données d'un maillage triangulaire vers un maillage quadrangulaire. Nous avons commencé par créer une triangulation puis interpolé les données en utilisant des méthodes linéaires et cubiques. Enfin, nous avons tracé les résultats.