Fonctions d'Argyris

Restez toujours informé : suivez-nous sur Google (☆)

Introduction

Les fonctions d’Argyris (ou éléments d’Argyris) est un outil en méthodes des éléments finis. Elles sont utilisées pour décrire un polynôme dans un triangle d’un maillage en employant seulement des données connues sur le bord du triangle (comme les valeurs au sommet, les valeurs des dérivées premières et secondes au sommet, ainsi que les valeurs « liées aux arêtes »). l'avantage est que l'on peut se ramener à un espace de dimension finie que l'on peut utilisé pour le calcul numérique.

Utilisées en modélisation numérique, ces fonctions furent introduites dans les années 1950; mais d'autres styles de fonctions sont également employées en pratique en fonction des problèmes à résoudre.

Introduction

Contexte

John Hadji Argyris (1913-2004) est l’un des précurseurs dans le domaine des méthodes des éléments finis, utilisée lors de résolution numérique d’équations différentielles issues de la physique, mécanique… comme la théorie des plaques. Ses concepts sont apparus en premier lors de la Seconde Guerre Mondiale, ce qui rendait ses premiers résultats top secret.

Le principe des fonctions d'Argyris consiste à exprimer un polynôme avec pour seules informations des données relatives au maillage du domaine. Bien évidemment, d'autres fonctions sont utilisées en Méthodes des Eléments Finis (Lagrange, Raviart-Thomas, Nédélec, GaussLobatto, Hermite, Morley, Bell…) ayant chacune leurs avantages ainsi que leurs inconvénients (tout dépend du problème que l'on veut résoudre).

Les éléments d'Argyris sont exclusivement dénommés ainsi pour la dimension 2 (). En dimension 1, voire 3, on parle plutôt d'éléments de type Argyris.

Cadre d’étude

On se place dans . Les variables sont appelées x et y. Soit T un triangle quelconque, non aplati.

Les fonctions d'Argyris liées à T sont des fonctions de base de l'espace vectoriel qui représente l'ensemble des polynômes à deux variables x et y () de degré au plus 5.

Approche formelle

Un élément s'écrit de manière unique sous la forme

M = a0 + a1x + b1y + a2x + b2x**y + c2y + a3x + b3x**y + c3x**y + d3y + a4x + b4x**y + c4x**y + d4x**y + e4y + a5x + b5x**y + c5x**y + d5x**y + e5x**y + f5y.

Ainsi, la seule donnée des coefficients suffit à écrire tout élément de . C'est pourquoi l'espace est un espace de dimension 21 (nombre de coefficients à déterminer).

Il nous faut alors 21 relations (conditions) indépendantes afin de pouvoir déterminer ces 21 coefficients : on appelle cela les degrés de liberté.

Une base possible est {1,x,y,x,x**y,y,x,x,y,y,x,x**y,x**y,x**y,y,x,x**y,x**y,x**y,x**y,y}: on l'appelle la base canonique.

Dans la pratique, il est extrêmement difficile (et surtout pas pratique) de pouvoir trouver les 21 coefficients avec cette base. C'est pourquoi nous formulons une base différente formée des fonctions d'Argyris. Elles sont liées à des conditions données :

  • sur la valeur de la fonction M en chaque sommet (3 relations);
  • sur la valeur des dérivées premières de la fonction M en chaque sommet (6 relations);
  • sur la valeur des dérivées secondes de la fonction M en chaque sommet (9 relations);
  • sur la valeur "liée à la normale" pour chaque arête (3 relations).

Remarque 1 : Ces conditions ne sont pas uniques : on peut toujours trouver d'autres conditions, mais celles-ci sont les plus simples à mettre en application.

Remarque 2 : Le dernier point concerne la valeur "liée à la normale". C'est une définition un peu particulière qui peut être différente selon les travaux. Vous trouverez ici une définition possible et qui est la plus couramment utilisée.

Avec ces données, il est possible de calculer toutes les fonctions d'Argyris pour n'importe quel triangle : il suffit pour cela de résoudre un système linéaire AU=B où :

  • A est une matrice 21*21;
  • U est un vecteur de taille 21 composé des 21 coefficients;
  • B est un vecteur de taille 21 dont toutes les composantes sont nulles sauf une qui correspond à la condition adéquate.

Vous pourrez trouver un exemple de fonctions d'Argyris dans la partie Exemple avec les conditions indiquées entre parenthèses.

Remarque 3 : Résoudre ce système est équivalent à inverser la matrice A.

En pratique, il est impensable de calculer toutes les fonctions de bases pour chaque triangle car le nombre de triangles peut être énorme (de l'ordre de plusieurs millions par exemple). C'est pourquoi, on calcule les fonctions sur un triangle particulier dit de référence ayant pour sommets les points (0;0), (1;0),(0;1) et on en "déduit" les fonctions d'Argyris dans un triangle particulier.

Exemple

Voici la liste des fonctions de base d'Argyris dans le triangle de référence avec la condition correspondante (cela signifie que le degré de liberté associé à la condition vaut 1 et que les autres valent 0).

Remarque 4 : L’ordre n’a a priori aucune importance. Pour la programmation (ou l’utilisation de manière générale), il faut néanmoins se fixer un ordre et le conserver tout le temps.

Explications :

  1. La condition concernant la normale est , où me représente le milieu de l'arête e et ne désigne la normale à l'arête e sortante du triangle.
  2. Expliquons maintenant comment se forme la matrice A.

Tout d'abord, le vecteur colonne U est composé des coefficients à déterminer, c'est-à-dire .

Voyons comment se compose, par exemple, les lignes 1 et 6 de la matrice liées aux conditions et (les autres étant similaires).

Donc la première ligne de la matrice M est (1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0).

  • .

Donc la sixième ligne de la matrice M est (0,1,0,2,0,0,3,0,0,0,4,0,0,0,0,5,0,0,0,0,0).

Matrice de passage

Remarque 5 : Cette construction n'est valable que pour le cas traité en exemple.

Pour trouver les fonctions de base d'Argyris dans un triangle donné, il faut multiplier le vecteur constitué des différentes fonctions dans le triangle de référence par une certaine matrice C que l'on explicitera ici.

Soient trois points non-alignés Xi = (xi,yi)(i = 1,2,3) qui formeront notre triangle T. Nous considérons la transformation affine FT qui envoie un point du triangle de référence sur un point de T (on note le point de coordonnées dans ) :

Argyris F T.JPG

.

Afin de simplifier l'écriture, nous notons : .

Notations

  • Dans le reste de cette présentation, on utilisera des notations simplificatrices :
  1. Pour tout , on note Iα la matrice identité (elle ne comporte que des 1 sur la diagonale, les autres composantes valant 0);
  2. Pour tout couple , on note la matrice nulle (toutes ses composantes valent 0).
  • On note e1 (resp. e2 ; e3) l'arête ayant pour sommets les points X2 et X3 (resp. X3 et X1 ; X1 et X2). On note | ei | la longueur de l'arête ei, . On a alors :
  1. ;
  2. ;
  3. ;
  • Soit la matrice

.

  • Soit la matrice

,

.

  • Pour tout , on définit :

et .

  • Enfin, on note :
  1. v_1=X_3-X_2=\left(\begin{array}{l}x_3-x_2\y_3-y_2\end{array}\right):=\left(\begin{array}{c}v_1^x\v_1^y \end{array}\right);
  2. v_2=X_1-X_3=\left(\begin{array}{l}x_1-x_3\y_1-y_3\end{array}\right):=\left(\begin{array}{c}v_2^x\v_2^y \end{array}\right);
  3. v_3=X_2-X_1=\left(\begin{array}{l}x_2-x_1\y_2-y_1\end{array}\right):=\left(\begin{array}{c}v_3^x\v_3^y \end{array}\right);

et

  1. w_1=\left(\begin{array}{c}v_1^x\, v_1^x\2\,v_1^x \,v_1^y\v_1^y \,v_1^y\end{array}\right):=\left(\begin{array}{c}(x_3-x_2)^2\2(x_3-x_2)(y_3-y_2)\(y_3-y_2)^2\end{array}\right);
  2. w_2=\left(\begin{array}{c}v_2^x \,v_2^x\2\,v_2^x\, v_2^y\v_2^y \,v_2^y\end{array}\right):=\left(\begin{array}{c}(x_1-x_3)^2\2(x_1-x_3)(y_1-y_3)\(y_1-y_3)^2\end{array}\right);
  3. w_3=\left(\begin{array}{c}v_3^x \,v_3^x\2\,v_3^x\, v_3^y\v_3^y\, v_3^y\end{array}\right):=\left(\begin{array}{c}(x_2-x_1)^2\2(x_2-x_1)(y_2-y_1)\(y_2-y_1)^2\end{array}\right).

Remarque 6 : Si V est une vecteur ligne de taille n, on utilisera la notation V pour l'écrire en tant que vecteur ligne de taille n : cela s'appelle la transposée du vecteur V (où encore le vecteur transposé de V). Exemple :

Construction de la matrice C

La matrice C se construit comme le produit de deux matrices C = D * E, où

  • D est une matrice définie par :

D:= \left( \begin{array}{l|l|l|l|l|l|l|l} I_3&0_{3 \times 2}&0_{3 \times 2}&0_{3 \times 2}&0_{3 \times 3}&0_{3 \times 3}&0_{3 \times 3}&0_{3 \times 6}\ \hline 0_{2 \times 3}&B^T&0_{2 \times 2}&0_{2 \times 2}&0_{2 \times 3}&0_{2 \times 3}&0_{2 \times 3}&0_{2 \times 6}\ \hline 0_{2 \times 3}&0_{2 \times 2}&B^T&0_{2 \times 2}&0_{2 \times 3}&0_{2 \times 3}&0_{2 \times 3}&0_{2 \times 6}\ \hline 0_{2 \times 3}&0_{2 \times 2}&0_{2 \times 2}&B^T&0_{2 \times 3}&0_{2 \times 3}&0_{2 \times 3}&0_{2 \times 6}\ \hline 0_{3 \times 3}&0_{3 \times 2}&0_{3 \times 2}&0_{3 \times 2}&\Theta&0_{3 \times 3}&0_{3 \times 3}&0_{3 \times 6}\ \hline 0_{3 \times 3}&0_{3 \times 2}&0_{3 \times 2}&0_{3 \times 2}&0_{3 \times 3}&\Theta&0_{3 \times 3}&0_{3 \times 6}\ \hline 0_{3 \times 3}&0_{3 \times 2}&0_{3 \times 2}&0_{3 \times 2}&0_{3 \times 3}&0_{3 \times 3}&\Theta&0_{3 \times 6}\ \hline 0_{3 \times 3}&0_{3 \times 2}&0_{3 \times 2}&0_{3 \times 2}&0_{3 \times 3}&0_{3 \times 3}&0_{3 \times 3}&Q \end{array} \right) , où .

  • E est une matrice définie par :

E:=\left(\begin{array}{c|c} I_{18}&0_{18 \times 3}\ \hline 0_{3 \times 18}&L\ \hline T&0_{3 \times 0} \end{array} \right),

  1.  ;
  2. , où :
  3. T1 est une matrice définie par ;
  4. T2 est une matrice définie par ;
  5. T3 est une matrice définie par .

Logiciels gérant les éléments d’Argyris

  • getfem++
  • matlab
  • ...

Bibliographie

  • V. Girault, P.-A. Raviart. Finite Element Methods for Navier-Stokes Equations. Theory and algorithms. Springer Series in Computational Mathematics, 5. Springer-Verlag, Berlin, 1986.
  • S. Nicaise, K.Witowski and B. I. Wohlmuth. An a posteriori error estimator for the Lamé equation based on equilibrated fluxes. IMA Journal of Numerical Analysis, 28, no.2, pp 331-353, 2008.
  • Librairie de getfem++
  • V. Domínguez, F.J. Sayas. Algorithm 884: A simple MATLAB implementation of the Argyris element. ACM Trans. Math. Software 35, Article 16, 2008.
  • M. Okabe. Full-explicit interpolation formulas for the Argyris triangle. Comput. Methods Appl. Mech. Engrg. 106, no. 3, pp 381--394, 1993.