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

HEX27 — hexaèdre triquadratique

En bref

L’hexaèdre à vingt-sept nœuds : sommets, milieux des arêtes, centres des faces et centre. Son interpolation est le produit de trois paraboles, polynôme de degré 2 complet dans chaque direction. Aucun mailleur de pyrucast ne le produit : il vient d’un fichier gmsh ou de from_arrays.

nom"HEX27"
nœuds27 : sommets, milieux des arêtes, centres des faces, centre
interpolation"LAGRANGE2" : complète
dimension3 ; dans des Coords 3-D
bord6 QUA9
quadrature"GAUSS" : 3×3×3 points, degré 5 par direction ; "REDUCED" : 1 point
parent linéaireHEX8
obtenu parlecture : read_gmsh, from_arrays

Élément de référence

Le cube \( [-1, +1]^3 \).

Nœud\( (\xi, \eta, \zeta) \)rôle
0\( (-1,-1,-1) \)sommet
1\( (+1,-1,-1) \)sommet
2\( (+1,+1,-1) \)sommet
3\( (-1,+1,-1) \)sommet
4\( (-1,-1,+1) \)sommet
5\( (+1,-1,+1) \)sommet
6\( (+1,+1,+1) \)sommet
7\( (-1,+1,+1) \)sommet
8\( (0,-1,-1) \)milieu de \( (0,1) \)
9\( (+1,0,-1) \)milieu de \( (1,2) \)
10\( (0,+1,-1) \)milieu de \( (2,3) \)
11\( (-1,0,-1) \)milieu de \( (3,0) \)
12\( (0,-1,+1) \)milieu de \( (4,5) \)
13\( (+1,0,+1) \)milieu de \( (5,6) \)
14\( (0,+1,+1) \)milieu de \( (6,7) \)
15\( (-1,0,+1) \)milieu de \( (7,4) \)
16\( (-1,-1,0) \)milieu de \( (0,4) \)
17\( (+1,-1,0) \)milieu de \( (1,5) \)
18\( (+1,+1,0) \)milieu de \( (2,6) \)
19\( (-1,+1,0) \)milieu de \( (3,7) \)
20\( (-1,0,0) \)centre de la face \( \xi = -1 \)
21\( (+1,0,0) \)centre de la face \( \xi = +1 \)
22\( (0,-1,0) \)centre de la face \( \eta = -1 \)
23\( (0,+1,0) \)centre de la face \( \eta = +1 \)
24\( (0,0,-1) \)centre de la face \( \zeta = -1 \)
25\( (0,0,+1) \)centre de la face \( \zeta = +1 \)
26\( (0,0,0) \)centre

Fonctions de forme

Le produit des trois fonctions de Lagrange quadratiques d’un segment, sur les positions \( -1, 0, +1 \) :

\[ \ell_{-}(t) = \tfrac12 t(t-1), \qquad \ell_{0}(t) = 1 - t^2, \qquad \ell_{+}(t) = \tfrac12 t(t+1), \]

et \( N_i(\xi, \eta, \zeta) = \ell_a(\xi)\,\ell_b(\eta)\,\ell_c(\zeta) \), où \( a, b, c \) sont les positions du nœud dans chaque direction. Le centre a \( N_{26} = (1-\xi^2)(1-\eta^2)(1-\zeta^2) \).

Dérivées de référence

\[ \frac{\partial N_i}{\partial \xi} = \ell_a'(\xi)\,\ell_b(\eta)\,\ell_c(\zeta), \]

et de même en \( \eta \) et \( \zeta \), avec \( \ell_{-}'(t) = t - \tfrac12 \), \( \ell_0'(t) = -2t \), \( \ell_{+}'(t) = t + \tfrac12 \).

Degrés de liberté

physiqueinconnues par nœudpar maille
conduction, diffusionT27
élasticité 3-Du_x, u_y, u_z81

Quadrature

"GAUSS" : produit 3×3×3 de Gauss-Legendre, 27 points, exact au degré 5 par direction ; \( \sum_g w_g = 8 \). La masse, de degré 4 par direction, est exacte sur un parallélépipède à arêtes droites.

"REDUCED" : un point au centre, de poids 8.

Exemple

import pyrucast

hex27 = pyrucast.FiniteElementSpace(
    pyrucast.Mesh(pyrucast.Coords(3), "HEX27"), interpolation="LAGRANGE2"
)[0]
print(hex27.nodes_per_cell, hex27.gauss_count)  # 27 27

# Au centre, seul le nœud 26, le centre de volume, vaut 1.
n = hex27.n_at_g(13)
non_nuls = [i for i, v in enumerate(n) if abs(v) > 1e-12]
print(hex27.gauss_xi(13), non_nuls)  # [0.0, 0.0, 0.0] [26]

Côté Rust

Hex27 (src/atoms/element_kind/hex27.rs) implémente ElementKind.