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

TET4 — tétraèdre linéaire

En bref

Le tétraèdre à quatre nœuds, pendant 3-D du TRI3 : interpolation affine, gradient constant dans la maille. Il remplit n’importe quel volume, et c’est ce que produisent les mailleurs de volume. Une déformation constante par maille le rend raide en flexion : il y faut des mailles fines, ou le TET10.

nom"TET4"
nœuds4, aux sommets
interpolation"LAGRANGE1" : affine
dimension3 ; dans des Coords 3-D
bord4 TRI3
quadrature"GAUSS" : 4 points, degré 2 ; "REDUCED" : 1 point
version quadratiqueTET10
obtenu partriangulate_volume, pave_volume ; convert d’un HEX8

Élément de référence

Le tétraèdre \( \xi, \eta, \zeta \ge 0 \), \( \xi + \eta + \zeta \le 1 \). La face 0-1-2 tourne dans le sens trigonométrique vue depuis le nœud 3.

Nœud\( (\xi, \eta, \zeta) \)
0\( (0, 0, 0) \)
1\( (1, 0, 0) \)
2\( (0, 1, 0) \)
3\( (0, 0, 1) \)

Fonctions de forme

Les coordonnées barycentriques :

\[ N_0 = 1 - \xi - \eta - \zeta, \quad N_1 = \xi, \quad N_2 = \eta, \quad N_3 = \zeta. \]

Dérivées de référence

Constantes :

\[ \nabla_\xi N_0 = (-1,-1,-1), \quad \nabla_\xi N_1 = (1,0,0), \quad \nabla_\xi N_2 = (0,1,0), \quad \nabla_\xi N_3 = (0,0,1). \]

Degrés de liberté

physiqueinconnues par nœudpar maille
conduction, diffusionT4
élasticité 3-Du_x, u_y, u_z12

Quadrature

"GAUSS" : règle de Hammer à 4 points, exacte au degré 2. Avec \( \alpha = \tfrac{5 - \sqrt5}{20} \) et \( \beta = \tfrac{5 + 3\sqrt5}{20} \), les points sont \( (\alpha, \alpha, \alpha) \) et les trois permutations de \( (\beta, \alpha, \alpha) \) : chacun a la coordonnée barycentrique \( \beta \) vers un sommet, \( \alpha \) vers les trois autres.

\[ w_g = \tfrac{1}{24}, \qquad \sum_g w_g = \tfrac{1}{6}. \]

La masse, de degré 2, est exacte ; la raideur, de degré 0, aussi.

"REDUCED" : un point au centre de gravité \( (\tfrac14, \tfrac14, \tfrac14) \), de poids \( \tfrac16 \).

Exemple

import pyrucast

tet4 = pyrucast.FiniteElementSpace(pyrucast.Mesh(pyrucast.Coords(3), "TET4"))[0]
print(tet4.nodes_per_cell, tet4.gauss_count)  # 4 4

# Le point 0 en (α, α, α), α = (5 − √5)/20, de poids 1/24.
print([round(x, 6) for x in tet4.gauss_xi(0)], round(tet4.gauss_weight(0), 6))
# [0.138197, 0.138197, 0.138197] 0.041667
# N = (1 − ξ − η − ζ, ξ, η, ζ) : β au nœud 0, α aux trois autres.
print([round(v, 6) for v in tet4.n_at_g(0)])  # [0.58541, 0.138197, 0.138197, 0.138197]

Côté Rust

Tet4 (src/atoms/element_kind/tet4.rs) implémente ElementKind.