1.2. API GMSH#

Déjà abordé dans le tutoriel GMSH, nous nous intéressons à l’API Python de GMSH.

1.2.1. Fonction de Forme#

Le but est d’afficher une fonction de forme \(\mathbb{P}^1-\) Lagrange, c’est à dire une fonction \(\varphi_{IJ}\) de \(V_h\) qui vaut 0 sur tous les sommets \(J\neq I\) du maillage sauf sur le sommet \(I\), pour lequelle la fonction prend la valeur 1 :

\[\forall I,J = 0,\ldots, N_s-1,\qquad \varphi_I(\mathbf{s}_J) = \delta_{IJ}\]

Exercise 1.1

À l’aide de l’API Python de GMSH :

  • Générez un carré unitaire avec un pas de maillage de 0.25

  • Appliquez des labels Physical: un pour la surface et un pour son bord

  • Générez le maillage 2D

  • Construisez 3 numpy array Phi, X et Y unidimensionnel et de taille le nombre de sommets \(N_s\) du maillage tels que:

    • Phi est le vecteur nul sauf en un coefficient où Phi[I] = 1 (choisissez le I)

    • X et Y sont respectivement les coordonnées x et y des points du maillage (voir ci-dessous)

  • Affichez le tout à l’aide de Matplotlib et de la projection 3D

Pour obtenir les coordonnées des points d’un groupe Physical donné, vous pouvez utilisez gmsh.model.mesh.getNodesForPhysicalGroup(dim, tag) (voir gmsh.py):

def getNodesForPhysicalGroup(dim, tag):
  """
  Get the nodes from all the elements belonging to the physical group of
              dimension `dim' and tag `tag'. `nodeTags' contains the node tags; `coord'
              is a vector of length 3 times the length of `nodeTags' that contains the x,
              y, z coordinates of the nodes, concatenated: [n1x, n1y, n1z, n2x, ...].

              Return `nodeTags', `coord'.
  """

Remark 1.1

  • GMSH commence la numérotation des sommets à 1

  • La liste retournée par getNodesForPhysicalGroup n’est pas triée

1.2.2. Interpolation \(\Pb^1\)#

Prenons une fonction f définie sur \(\Omega\). Une interpolation possible de f sur l’espace \(\mathbb{P}^1\) est la fonction \(\Pi_hf\) telle que \(\Pi_hf(\mathbf{s}) = f(\mathbf{s})\) pour chaque sommet \(\mathbf{s}\) du maillage.

Exercise 1.2

Construisez l’interpollée \(\Pi_hf\) de la fonction \(f(x,y) = \sin(\pi x)\sin(\pi y)\)