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 :
À 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 bordGénérez le maillage 2D
Construisez 3 numpy array
Phi
,X
etY
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 leI
)X
etY
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'.
"""
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.
Construisez l’interpollée \(\Pi_hf\) de la fonction \(f(x,y) = \sin(\pi x)\sin(\pi y)\)