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

QUA4 — quadrangle bilinéaire

En bref

Le quadrangle à quatre nœuds. Son interpolation est bilinéaire : elle contient le terme \( \xi\eta \) qui manque au triangle, si bien qu’un gradient y varie.

nom"QUA4"
nœuds4, aux sommets
interpolation"LAGRANGE1" : bilinéaire
dimension2 ; dans des Coords 2-D ou 3-D
bord4 SEG2
quadrature"GAUSS" : 2×2 points, degré 3 par direction ; "REDUCED" : 1 point
versions quadratiquesQUA8 (sérendipité), QUA9 (complet)
obtenu parsweep, transfinite, pave_surface, grid_surface, triangulate_surface ; extrude, revolve d’un SEG2 ; skin d’un HEX8, PYRA5 ou PENTA6

Élément de référence

Le carré \( \xi, \eta \in [-1, +1] \), parcouru dans le sens trigonométrique.

Nœud\( (\xi_i, \eta_i) \)
0\( (-1, -1) \)
1\( (+1, -1) \)
2\( (+1, +1) \)
3\( (-1, +1) \)

Fonctions de forme

Pour le nœud \( i \) de coordonnées \( (\xi_i, \eta_i) \) :

\[ N_i(\xi, \eta) = \tfrac{1}{4}\,(1 + \xi_i\,\xi)\,(1 + \eta_i\,\eta). \]

Chacune est le produit d’une fonction linéaire en \( \xi \) et d’une autre en \( \eta \) : le quadrangle reproduit exactement \( a + b\xi + c\eta + d\xi\eta \).

Dérivées de référence

\[ \frac{\partial N_i}{\partial \xi} = \tfrac14\,\xi_i\,(1 + \eta_i\,\eta), \qquad \frac{\partial N_i}{\partial \eta} = \tfrac14\,\eta_i\,(1 + \xi_i\,\xi). \]

\( \partial N_i/\partial\xi \) varie avec \( \eta \) : sauf sur un parallélogramme, le jacobien n’est pas constant sur la maille.

Degrés de liberté

physiqueinconnues par nœudpar maille
conduction, diffusionT4
élasticité plane ou axisymétriqueu_x, u_y8
coque, dans l’espaceu_x, u_y, u_z, r_x, r_y, r_z24
échanges, rayonnement, sur la face d’un volumeT4

Quadrature

"GAUSS" : produit 2×2 de Gauss-Legendre, exact au degré 3 par direction.

\[ \xi_g = \left(\pm\tfrac{1}{\sqrt 3}, \pm\tfrac{1}{\sqrt 3}\right), \qquad w_g = 1, \qquad \sum_g w_g = 4. \]

La masse, de degré 2 par direction, est exacte sur un parallélogramme. Sur un quadrangle quelconque, le jacobien varie, et la raideur ne l’est plus.

"REDUCED" : un point au centre \( (0, 0) \), de poids 4.

Exemple

import pyrucast

qua4 = pyrucast.FiniteElementSpace(pyrucast.Mesh(pyrucast.Coords(2), "QUA4"))[0]
print(qua4.nodes_per_cell, qua4.gauss_count)  # 4 4

# Le point 0 en (−1/√3, −1/√3), de poids 1.
print([round(x, 6) for x in qua4.gauss_xi(0)], qua4.gauss_weight(0))
# [-0.57735, -0.57735] 1.0
# N_i = ¼ (1 + ξ_i ξ)(1 + η_i η) : le nœud 0, le plus proche, pèse le plus.
print([round(v, 6) for v in qua4.n_at_g(0)])  # [0.622008, 0.166667, 0.044658, 0.166667]

Côté Rust

Qua4 (src/atoms/element_kind/qua4.rs) implémente ElementKind.