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

SEG2 — segment linéaire

En bref

Un segment à deux nœuds : une barre, une poutre, un fil conducteur, le bord d’une surface.

nom"SEG2"
nœuds2, aux extrémités
interpolation"LAGRANGE1" : linéaire ; aussi "HERMITE3" et "MODEL_EMBEDDED" pour les poutres
dimension1 ; dans des Coords 1-D, 2-D ou 3-D
bordses deux extrémités
quadrature"GAUSS" : 2 points, degré 3 ; "REDUCED" : 1 point
version quadratiqueSEG3
obtenu parline, arc, circle ; border, le bord d’une surface TRI3 ou QUA4

Élément de référence

\( \xi \in [-1, +1] \).

Nœud\( \xi \)
0\( -1 \)
1\( +1 \)

Fonctions de forme

\[ N_0(\xi) = \tfrac{1}{2}(1 - \xi), \qquad N_1(\xi) = \tfrac{1}{2}(1 + \xi). \]

Dans des Coords 2-D ou 3-D, le segment est plongé : sa longueur s’obtient par la métrique \( \sqrt{J^{\mathsf T}J} \), et le gradient d’un champ est le gradient le long du segment (voir Jacobien et grandeurs physiques).

Dérivées de référence

Constantes :

\[ \frac{\partial N_0}{\partial \xi} = -\tfrac{1}{2}, \qquad \frac{\partial N_1}{\partial \xi} = +\tfrac{1}{2}. \]

Sur un segment de longueur \( L \), \( |J| = L/2 \) : un gradient constant le long du segment.

Degrés de liberté

physiqueinconnues par nœudpar maille
conduction, diffusionT2
échanges, rayonnement, sur le bord d’une surfaceT2
barreu_x en 1-D ; u_x, u_y en plan ; u_x, u_y, u_z dans l’espace2, 4, 6
poutre de Bernoulli ("HERMITE3"), de Timoshenko ("MODEL_EMBEDDED")w, theta en 1-D ; u_x, u_y, r_z en plan ; six dans l’espace4, 6, 12

Sous "HERMITE3", la flèche est interpolée par quatre fonctions cubiques, une valeur et une pente par nœud. Sous "MODEL_EMBEDDED", la poutre porte ses propres fonctions, et l’espace n’en tabule aucune pour le champ.

Quadrature

"GAUSS" : Gauss-Legendre à 2 points, exacte au degré 3.

\[ \xi_g = \pm\frac{1}{\sqrt 3}, \qquad w_g = 1, \qquad \sum_g w_g = 2. \]

La masse d’un segment droit, \( \int N_i N_j\,ds = \tfrac{L}{6}\begin{bmatrix}2&1\\1&2\end{bmatrix} \), est de degré 2 : intégrée exactement. Sous "HERMITE3", la raideur de flexion l’est aussi : ses dérivées secondes sont linéaires, leur produit de degré 2.

"REDUCED" : un point en \( \xi = 0 \), de poids 2.

Exemple

import pyrucast

# Les tables de référence d'un SEG2 : une zone vide suffit.
seg2 = pyrucast.FiniteElementSpace(pyrucast.Mesh(pyrucast.Coords(1), "SEG2"))[0]
print(seg2.nodes_per_cell, seg2.gauss_count)  # 2 2

# Les deux points en ∓1/√3, de poids 1.
print([round(seg2.gauss_xi(g)[0], 6) for g in range(2)])  # [-0.57735, 0.57735]
print([seg2.gauss_weight(g) for g in range(2)])  # [1.0, 1.0]
# N = ((1 − ξ)/2, (1 + ξ)/2) au premier point ; les dérivées, constantes.
print([round(v, 6) for v in seg2.n_at_g(0)])  # [0.788675, 0.211325]
print(seg2.dn_at_g(0))  # [-0.5, 0.5]

Côté Rust

Seg2 (src/atoms/element_kind/seg2.rs) implémente ElementKind. La base d’Hermite vit à part, dans src/atoms/element_kind/hermite.rs : seul un SEG2 l’accepte.