Introduction
Dans ce laboratoire, vous allez apprendre à utiliser Matplotlib pour créer un tracé de gradient d'un dipôle électrique. Vous allez apprendre à créer une triangulation, à raffiner les données et à calculer le champ électrique. Enfin, vous tracerez la triangulation, les iso-contours du potentiel et le champ vectoriel.
Conseils sur la VM
Une fois le démarrage de la VM terminé, cliquez dans 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 les coordonnées x et y des points
n_angles = 30
n_radii = 10
min_radius = 0.2
radii = np.linspace(min_radius, 0.95, n_radii)
angles = np.linspace(0, 2 * np.pi, n_angles, endpoint=False)
angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1)
angles[:, 1::2] += np.pi / n_angles
x = (radii*np.cos(angles)).flatten()
y = (radii*np.sin(angles)).flatten()
Explication :
n_anglesest le nombre d'angles dans un cercle.n_radiiest le nombre de cercles.min_radiusest le rayon minimum des cercles.radiiest un tableau de rayons.anglesest un tableau d'angles.xest un tableau de coordonnées x.yest un tableau de coordonnées y.
Calculer le potentiel électrique d'un dipôle
def dipole_potential(x, y):
"""Le potentiel du dipôle électrique V, à la position *x*, *y*."""
r_sq = x**2 + y**2
theta = np.arctan2(y, x)
z = np.cos(theta)/r_sq
return (np.max(z) - z) / (np.max(z) - np.min(z))
V = dipole_potential(x, y)
Explication :
dipole_potentialest une fonction qui calcule le potentiel du dipôle électrique.Vest un tableau de potentiels du dipôle électrique.
Créer la triangulation
triang = Triangulation(x, y)
triang.set_mask(np.hypot(x[triang.triangles].mean(axis=1),
y[triang.triangles].mean(axis=1))
< min_radius)
Explication :
Triangulationest une classe qui crée une triangulation de Delaunay à partir d'un ensemble de points.triangest une instance de la classeTriangulation.triang.set_maskmasque les triangles indésirables.
Affiner les données
refiner = UniformTriRefiner(triang)
tri_refi, z_test_refi = refiner.refine_field(V, subdiv=3)
Explication :
UniformTriRefinerest une classe qui affine une triangulation pour créer un tracé plus précis.refinerest une instance de la classeUniformTriRefiner.tri_refietz_test_refisont respectivement la triangulation affinée et les valeurs de potentiel.
Calculer le champ électrique
tci = CubicTriInterpolator(triang, -V)
(Ex, Ey) = tci.gradient(triang.x, triang.y)
E_norm = np.sqrt(Ex**2 + Ey**2)
Explication :
CubicTriInterpolatorest une classe qui interpole des données en utilisant un polynôme cubique.tciest une instance de la classeCubicTriInterpolator.(Ex, Ey)est le champ électrique.E_normest le champ électrique normalisé.
Tracer la triangulation, les lignes d'iso-potentiel et le champ vectoriel
fig, ax = plt.subplots()
ax.set_aspect('equal')
ax.use_sticky_edges = False
ax.margins(0.07)
ax.triplot(triang, color='0.8')
levels = np.arange(0., 1., 0.01)
ax.tricontour(tri_refi, z_test_refi, levels=levels, cmap='hot',
linewidths=[2.0, 1.0, 1.0, 1.0])
ax.quiver(triang.x, triang.y, Ex/E_norm, Ey/E_norm,
units='xy', scale=10., zorder=3, color='blue',
width=0.007, headwidth=3., headlength=4.)
ax.set_title('Gradient Plot: Electrical Dipole')
plt.show()
Explication :
figetaxsont respectivement les objets figure et axes.ax.set_aspectdéfinit le rapport d'aspect des axes.ax.use_sticky_edgesetax.marginsdéfinissent les marges des axes.ax.triplottrace la triangulation.ax.tricontourtrace les lignes d'iso-potentiel.ax.quivertrace le champ vectoriel.ax.set_titledéfinit le titre du tracé.
Sommaire
Dans ce laboratoire, vous avez appris à utiliser Matplotlib pour créer un tracé de gradient d'un dipôle électrique. Vous avez appris à créer une triangulation, à affiner des données et à calculer le champ électrique. Enfin, vous avez tracé la triangulation, les lignes d'iso-potentiel et le champ vectoriel.