Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Éléments finis supportés

Cette section est le catalogue de référence des éléments finis de pyrucast : une fiche par type, avec le repère de référence, les fonctions de forme \( N_i(\xi) \) exactes, leurs dérivées de référence \( \partial N_i/\partial\xi_k \), et la règle de quadrature associée.

La machinerie commune à tous les éléments (transformation isoparamétrique, Jacobien, gradient physique \( \partial N_i/\partial x_a \), passage à la matrice élémentaire) est décrite une fois pour toutes au chapitre Espace éléments finis ; les fiches ci-dessous ne répètent que ce qui est propre à chaque élément. Le code source de chaque élément tient dans un fichier, atoms/element_kind/<nom>.rs : fonctions de forme, points de Gauss, facettes, domaine de référence et codes d’échange y sont réunis. Les conventions de repère et de numérotation locale sont documentées sur la variante correspondante d’atoms/element_type.rs.

Toutes les fiches suivent le même plan standard : introduction (nombre de nœuds, famille, dimensions), Repère de référence (domaine + numérotation locale), Fonctions de forme, Dérivées de référence, Quadrature (défaut) (points, poids, exactitude), puis Notes (dimensions valides, propriétés, renvois vers les variantes).

Rappel : de la fonction de forme à la matrice

Sur chaque élément, un champ est interpolé par ses valeurs nodales, \( u(\xi) = \sum_i N_i(\xi)\,u_i \), et la géométrie de la même façon (hypothèse isoparamétrique), \( \mathbf{x}(\xi) = \sum_i N_i(\xi)\,\mathbf{x}_i \). Toute matrice élémentaire est une intégrale sur l’élément physique ramenée à l’élément de référence par le Jacobien \( J = \partial\mathbf{x}/\partial\xi \) :

\[ \int_K \phi(\mathbf{x})\,d\mathbf{x} = \int_{\hat K} \phi(\chi(\xi))\,|J(\xi)|\,d\xi \approx \sum_{g} w_g\,\phi(\xi_g)\,|J(\xi_g)|, \]

et les dérivées physiques viennent de l’inverse du Jacobien, \( \nabla_x N_i = J^{-\top}\nabla_\xi N_i \). Les seuls ingrédients qui changent d’un élément à l’autre sont donc : les \( N_i \), les \( \partial N_i/\partial\xi_k \), et le couple \( (\xi_g, w_g) \) — exactement le contenu de chaque fiche.

Catalogue

Deux familles d’interpolation Lagrange sont disponibles : Lagrange-1 (linéaire, un nœud par sommet) et Lagrange-2 (quadratique, sommets + nœuds de milieu d’arête). POI1 (nœud seul) n’a pas de repère de référence : ce n’est pas un élément fini.

Lagrange-1 (linéaire)

ÉlémentNœudsDim. topo.Domaine de référenceQuadrature (\( n_g \))
SEG221\( \xi\in[-1,1] \)Gauss 2 pts
TRI332simplexe \( \xi+\eta\le 1 \)Hammer 3 pts
QUA442\( [-1,1]^2 \)2×2 Gauss (4)
TET443simplexe \( \xi+\eta+\zeta\le 1 \)Hammer 4 pts
PYRA553pyramide (section carrée décroissante)Gauss×Jacobi conique (8)
PENTA663prisme (TRI3 × \( \zeta \))TRI×Gauss (6)
HEX883\( [-1,1]^3 \)2×2×2 Gauss (8)

Lagrange-2 (quadratique)

ÉlémentNœudsDim. topo.ParentTypeQuadrature (\( n_g \))
SEG331SEG2completGauss 3 pts
TRI662TRI3completDunavant deg. 4 (6)
QUA882QUA4sérendipité3×3 Gauss (9)
QUA992QUA4complet (Q2)3×3 Gauss (9)
TET10103TET4completKeast deg. 4 (11)
PENTA15153PENTA6sérendipitéTRI6×Gauss (18)
HEX20203HEX8sérendipité3×3×3 Gauss (27)
HEX27273HEX8complet (Q2)3×3×3 Gauss (27)

Les éléments sérendipité (QUA8, HEX20, PENTA15) ne portent que des nœuds d’arête ; les complets (SEG3, TRI6, TET10, QUA9, HEX27) portent en plus les nœuds de face et/ou de volume nécessaires au produit tensoriel \( Q2 \) complet.

Catalogue de quadrature

Le catalogue ci-dessus ne montre, par élément, que la règle par défaut (GAUSS). Une deuxième règle existe — REDUCED (intégration réduite : un seul point au centroïde, poids = mesure du domaine de référence, exacte pour les constantes seulement ; utilisée par exemple pour désamorcer le verrouillage en cisaillement de la poutre de Timoshenko). Le tableau croisé suivant donne, pour chaque couple (élément, règle), le nombre de points d’intégration \( n_g \) si le couple est supporté :

ÉlémentGAUSSREDUCED
SEG2✓ (2)✓ (1)
TRI3✓ (3)✓ (1)
QUA4✓ (4)✓ (1)
TET4✓ (4)✓ (1)
PYRA5✓ (8)✓ (1)
PENTA6✓ (6)✓ (1)
HEX8✓ (8)✓ (1)
SEG3✓ (3)✓ (1)
TRI6✓ (6)✓ (1)
QUA8✓ (9)✓ (1)
QUA9✓ (9)✓ (1)
TET10✓ (11)✓ (1)
PENTA15✓ (18)✓ (1)
HEX20✓ (27)✓ (1)
HEX27✓ (27)✓ (1)
POI1——

POI1 n’a pas de repère de référence (ce n’est pas un élément fini) : les deux règles y sont rejetées (QuadratureRule::is_compatible_with renvoie false, points/point_count renvoient une erreur). Pour tout autre ElementType, les deux règles sont actuellement définies — le tableau est donc plein sauf sur cette ligne. Il est conservé tel quel pour documenter la compatibilité au fur et à mesure que de nouvelles règles (ordres supérieurs, quadratures spécialisées) seront ajoutées : celles-ci pourront être incompatibles avec certains éléments (p. ex. une règle calibrée pour un degré d’exactitude indisponible sur un élément sérendipité), et ce tableau sera le seul endroit à mettre à jour.

Propriétés communes (vérifiées par les tests)

Toutes les interpolations Lagrange satisfont, à tout point de référence :

  • Kronecker : \( N_i(\xi_j) = \delta_{ij} \) aux nœuds — l’interpolation passe par les valeurs nodales ;
  • partition de l’unité : \( \sum_i N_i(\xi) = 1 \), d’où la reproduction exacte des champs constants ;
  • dérivées à somme nulle : \( \sum_i \partial N_i/\partial\xi_k = 0 \) (partition de l’unité dérivée) ;
  • pour les éléments quadratiques, les dérivées analytiques sont recoupées par différences finies centrées dans les tests unitaires.

La règle de quadrature par défaut de chaque élément est calibrée pour intégrer exactement sa matrice de masse sur une géométrie droite ; la somme des poids vaut la mesure du domaine de référence.