Objectifs du chapitre
À la fin de ce chapitre, vous serez capable de:
- passer d'un problème aux limites stationnaire à un problème d'évolution par semi-discrétisation: même formulation faible, mêmes fonctions de forme, et un système d'équations différentielles ordinaires ou à la place de ;
- calculer la matrice de masse cohérente et la matrice de masse concentrée d'un élément de barre, démontrer leurs propriétés et dire ce que l'on gagne et perd en passant de l'une à l'autre;
- poser le problème des vibrations libres , démontrer que ses pulsations sont réelles et positives et ses modes -orthogonaux, et calculer les fréquences propres d'une barre encastrée–libre avec votre propre programme de valeurs propres;
- comparer ces fréquences aux valeurs exactes , expliquer pourquoi la masse cohérente les surestime et la masse concentrée les sous-estime, et pourquoi seules les plus basses sont fiables;
- intégrer en temps la conduction transitoire par le schéma (Euler explicite, Crank–Nicolson, Euler implicite), démontrer par la décomposition modale que l'Euler explicite n'est stable que pour , et le vérifier numériquement;
- situer la méthode de Newmark en dynamique des structures, et relire le cours entier comme une seule démarche, de l'équation d'équilibre au résultat vérifié.
Les onze chapitres précédents ont tous résolu des problèmes stationnaires: une barre sous une charge qui ne varie pas, un treillis à l'équilibre, une plaque dont la température ne bouge plus. Le temps n'y apparaissait pas. Ce dernier chapitre l'introduit, et il le fait sans rien jeter de ce qui a été construit: la discrétisation en espace reste exactement celle des chapitres 2 à 7, l'assemblage reste la boucle du chapitre 1, et le temps est traité après, par les méthodes pour équations différentielles ordinaires de l'Analyse numérique (chapitres 9 et 10). La section finale relit le cours dans cette perspective.
Du stationnaire à l'évolution: la semi-discrétisation
Deux équations d'évolution
Reprenons la tranche de la barre du chapitre 1 (figure 1.1), mais sans supposer l'équilibre statique. Si le déplacement dépend du temps, la tranche, de masse , a une accélération , et la deuxième loi de Newton remplace la condition d'équilibre par
Avec la loi de Hooke , où le prime désigne toujours la dérivée en , on obtient l'équation des ondes de la barre:
Elle demande, en plus des conditions aux limites des chapitres précédents, deux conditions initiales: le déplacement et la vitesse . Pour une barre homogène, , et la quantité est la de compression dans le matériau. Pour l'acier de ce chapitre, GPa et , elle vaut m/s.
La conduction de la chaleur suit le même chemin. Le bilan d'énergie d'une tranche du mur du chapitre 1, qui disait «ce qui entre moins ce qui sort, plus ce qui est produit, est nul», devient en régime variable «… est égal à ce qui s'accumule». Une tranche de masse volumique et de capacité thermique massique (en J/(kg·K)) stocke par unité de surface, et avec la loi de Fourier,
C'est l'équation de la chaleur. Elle ne demande qu'une condition initiale, la température . Le rapport s'appelle la diffusivité thermique (en m²/s). La lettre sert donc à deux choses dans ce chapitre: la diffusivité, toujours en italique seule, et la forme bilinéaire des chapitres 2 et 3, toujours suivie de ses deux arguments.
Les deux équations ont la même partie spatiale que le problème modèle, ou , et ne diffèrent que par l'ordre de la dérivée en temps. Cette différence change tout au comportement des solutions: (12.1) propage des ondes qui ne s'amortissent pas, (12.2) diffuse et lisse tout ce qu'on lui donne. Les mathématiciens les appellent hyperbolique et parabolique. Le problème stationnaire des chapitres 1 à 4, dont elles sont les extensions, est dit .
La formulation faible, à chaque instant
Le passage à la forme faible se fait à fixé, exactement comme au chapitre 2: on multiplie (12.1) par une fonction test qui ne dépend que de , on intègre sur et l'on intègre par parties le terme de rigidité. Le terme d'inertie ne contient aucune dérivée en et passe tel quel:
Le deuxième terme est la forme bilinéaire des chapitres 2 et 3, le second membre la forme , maintenant dépendante du temps. Le premier est nouveau: c'est le produit scalaire de , pondéré par , entre l'accélération et la fonction test. Lu par un mécanicien, (12.3) est le principe de d'Alembert: le travail virtuel des forces d'inertie s'ajoute à celui des charges.
On approche alors en espace seulement, avec les fonctions de forme habituelles et des coefficients qui dépendent du temps:
En prenant pour chacune des fonctions , (12.3) devient un système de équations différentielles ordinaires:
La matrice et le vecteur sont ceux des chapitres 4 et 5, inchangés. La matrice est la matrice de masse. Le même calcul sur (12.2) donne
où est la matrice de capacité thermique, construite exactement comme avec à la place de .
Cette démarche — discrétiser d'abord en espace par éléments finis, ensuite en temps par un schéma pour équations différentielles — s'appelle la semi-discrétisation, ou méthode des lignes: chaque nœud porte une fonction du temps, une «ligne» dans le plan . Elle n'est pas la seule possible (on peut construire des éléments finis espace–temps), mais c'est de loin la plus utilisée, et c'est celle de tous les logiciels courants.
La matrice de masse
La masse cohérente de l'élément de barre
La matrice de masse s'assemble comme la matrice de rigidité: élément par élément, par la table de connectivité. Il suffit donc de calculer la matrice de masse élémentaire
Pour l'élément linéaire de longueur , avec constant sur l'élément, passons sur l'élément de référence du chapitre 4: , et . Alors
et par symétrie . D'où
Elle est appelée cohérente (ou consistante) parce qu'elle provient des mêmes fonctions de forme que la rigidité: c'est la discrétisation de Galerkin, sans autre approximation, du terme d'inertie de (12.3).
Pour l'élément quadratique du chapitre 7, le même calcul en fractions a été fait à l'exercice 7.2 (question 4): , d'où la matrice de masse cohérente fois cette matrice. Le chapitre 7 a aussi donné la règle d'intégration: l'intégrande est de degré sur l'élément de référence, et la quadrature de Gauss à points, exacte jusqu'au degré , demande pour la masse, contre pour la rigidité. Pour l'élément linéaire, deux points de Gauss redonnent (12.6); un seul point, en où , donnerait , une matrice . L'intégration réduite, qui sert parfois la rigidité (chapitre 7), ne convient pas à la masse.
La masse concentrée
La matrice (12.6) couple les deux nœuds de l'élément: accélérer le nœud 1 seul met en jeu une force d'inertie au nœud 2. C'est physiquement juste — la masse est répartie le long de l'élément, et le champ de vitesse entre les nœuds est affine —, mais c'est numériquement coûteux, parce que l'assemblage produit une matrice non diagonale, qu'il faudra factoriser. L'ingénieur a depuis longtemps une autre idée: concentrer la masse de chaque élément sur ses nœuds, moitié-moitié.
Il existe trois façons de construire (12.7), et elles coïncident pour l'élément linéaire. On peut sommer les lignes de la matrice cohérente et placer la somme sur la diagonale: . On peut : avec la formule du trapèze, , puisque vaut 1 en son nœud et 0 à l'autre. On peut enfin raisonner en mécanicien et la masse de l'élément entre ses deux extrémités. Pour l'élément quadratique, les sommes des lignes de valent , qui sont exactement les poids de la formule de Simpson aux trois nœuds: les deux premières constructions coïncident encore, et la masse centrale reçoit les deux tiers du total.
Ce n'est plus vrai pour tous les éléments. Pour le quadrilatère serendipity à huit nœuds du chapitre 10, la somme des lignes de la matrice cohérente donne de la masse totale à chaque sommet et à chaque nœud milieu (calcul fait avec 3 × 3 points de Gauss): des masses négatives, inutilisables. On recourt alors à d'autres procédés de diagonalisation, qui ne sont pas l'objet de ce cours.
Démonstration. 1. La symétrie se lit sur la définition et sur (12.7). Pour , soit ; alors
parce que les sont linéairement indépendantes, donc , et qu'une fonction continue non nulle a un carré d'intégrale strictement positive. C'est l'argument du théorème 3.5 pour , avec le produit scalaire de à la place de : ici, contrairement à , , parce qu'un champ constant a une énergie cinétique non nulle. La matrice concentrée est diagonale, et chaque nœud reçoit au moins une moitié de la masse d'un élément, strictement positive. L'élimination de lignes et de colonnes conserve la symétrie et la définie positivité (une sous-matrice principale d'une matrice définie positive l'est aussi).
2. Soit le vecteur dont tous les termes valent 1. Les fonctions de forme forment une partition de l'unité (théorème 7.1): en tout point. Donc
La -ème somme de ligne vaut ; sur un élément, pour l'élément linéaire, donc la somme de ligne assemblée est exactement le terme diagonal de . La somme des termes de est alors la même que celle de .
La propriété 2 est le contrôle le plus simple qu'on puisse faire sur une matrice de masse, et l'exercice Python ci-dessous le met en œuvre: une erreur d'assemblage qui double ou oublie une masse se voit immédiatement sur la masse totale, comme l'équilibre global détecte une charge appliquée deux fois.
On assemble une barre de 3 éléments de longueurs 0,5 m, 0,5 m et 1 m, de masse linéique kg/m, avec la masse concentrée. Que vaut le terme diagonal du nœud 3, commun aux éléments 2 et 3?
La fonction masses(x, rhoA) doit assembler, pour un maillage de nœuds x[0] < … < x[n], la matrice de masse cohérente (12.6) et la matrice de masse concentrée (12.7), toutes deux complètes. Telle qu'elle est écrite, elle met sur chaque nœud la masse entière de l'élément au lieu de sa moitié: la masse totale concentrée est le double de la vraie. Corrigez-la. Le programme affiche alors deux masses totales égales et la diagonale concentrée.
Les vibrations libres
Le problème aux valeurs propres
Sans charge, (12.4) devient . Cherchons des solutions où tous les nœuds vibrent en phase, à la même pulsation , avec une forme fixe :
Comme , l'équation se réduit, pour tout , à
C'est un problème aux valeurs propres généralisé: il ne s'agit pas de , que l'Analyse numérique (chapitre 5) vous a appris à résoudre, mais d'un problème où la matrice de masse remplace l'identité.
Le problème continu correspondant se résout à la main pour la barre homogène encastrée en et libre en . On cherche dans : , soit . La condition d'encastrement laisse , et la condition de bord libre, , impose . D'où les
Le mode a nœuds de vibration (points immobiles) à l'intérieur de la barre, et un ventre à l'extrémité libre. Pour la barre d'acier du chapitre, m, les trois premières fréquences valent
Remarquez qu'elles ne dépendent pas de la section , qui se simplifie: une barre plus épaisse est plus raide exactement dans la proportion où elle est plus lourde — la même compensation que pour l'allongement sous le poids propre de l'exemple 1.1. Nous prendrons néanmoins pour fixer les masses: kg/m, N, et une masse totale de kg.
Pulsations réelles, modes orthogonaux
Démonstration. Comme est symétrique définie positive, elle admet une factorisation de Cholesky (Analyse numérique, chapitre 3), avec triangulaire inversible. Posons . Alors (12.8) s'écrit , soit, en multipliant à gauche par ,
La matrice est symétrique, . Par le théorème spectral (Algèbre linéaire, chapitre 11), elle a valeurs propres réelles et une base orthonormée de vecteurs propres , . Les vecteurs vérifient (12.8), et
Enfin parce que est semi-définie positive, et si elle est définie positive.
La démonstration est aussi un algorithme: factoriser , former , chercher les valeurs propres d'une matrice symétrique ordinaire. C'est ce que fera notre programme. Elle explique aussi le sort d'une structure sans appuis: les modes rigides du chapitre 5, qui annulent , sont des modes propres de pulsation nulle — la structure se translate sans se déformer et sans revenir. Un calcul de fréquences d'un modèle mal appuyé ne plante donc pas: il rend des fréquences nulles (ou, à cause de l'arrondi, minuscules), et c'est à l'ingénieur de les reconnaître. L'exercice 12.2 le montre sur une barre libre–libre.
L'orthogonalité (12.10) est ce qui rend les modes utiles. Un déplacement quelconque se décompose sur eux, , et en portant cette décomposition dans (12.4) puis en multipliant par , toutes les équations se :
Chaque coordonnée modale est un oscillateur à un degré de liberté. C'est la superposition modale, la méthode de base de la dynamique linéaire des structures: on calcule les quelques premiers modes, on résout des oscillateurs scalaires, on recombine. Nous retrouverons exactement le même découplage pour démontrer la stabilité des schémas en temps.
Un élément, puis deux, à la main
Une barre d'aluminium ( GPa, ) de longueur m est encastrée à une extrémité et libre à l'autre. On la modélise par un seul élément linéaire avec la masse cohérente. Quelle fréquence propre, en hertz, obtient-on?
Le calcul: un programme de valeurs propres
Au-delà de deux ddl, on ne résout plus à la main: on calcule. L'Analyse numérique (chapitre 5) a présenté la méthode de la puissance, la puissance inverse et le principe de QR; pour des matrices symétriques de quelques dizaines de lignes, la plus simple à programmer qui les donne toutes est la méthode de Jacobi. Elle annule l'un après l'autre les termes hors diagonale par des rotations planes , , qui conservent les valeurs propres; chaque rotation détruit un terme et en perturbe d'autres, mais la somme des carrés hors diagonale décroît à chaque rotation, et après quelques balayages complets la matrice est diagonale à l'arrondi près. Le produit des rotations donne les vecteurs propres.
Le premier listing assemble les deux matrices de la barre encastrée–libre. Les nœuds sont numérotés de 1 à dans le texte, comme dans tous les chapitres de structures, et le nœud 1 est encastré; dans le code, après élimination de sa ligne et de sa colonne, l'indice i correspond au nœud .
def matrices_barre(n, L, EA, rhoA, concentree=False):
"""Barre encastree en x = 0, libre en x = L, n elements lineaires egaux.
Renvoie K et M reduites (n x n): l'indice i du code est le noeud i + 2."""
h = L / n
K = [[0.0] * (n + 1) for _ in range(n + 1)]
M = [[0.0] * (n + 1) for _
La boucle d'assemblage est celle du chapitre 1, avec une seconde matrice élémentaire. Vient ensuite la méthode de Jacobi. La rotation qui annule a pour tangente la plus petite racine de , avec ; prendre la plus petite des deux racines garde l'angle sous , ce qui stabilise la méthode. On fait un nombre fixe de balayages, largement suffisant pour les tailles de ce chapitre, et l'on saute les termes déjà nuls à l'arrondi près.
from math import sqrt
def jacobi(A, balayages=20):
"""Valeurs et vecteurs propres d'une matrice symetrique (methode de Jacobi cyclique).
Renvoie (valeurs, V): la colonne k de V est le vecteur propre de valeurs[k]."""
n = len(A)
A = [ligne[:] for ligne in A]
V = [[1.0 if i == j else 0.0 for j in range(n)] for i in range
Enfin, la réduction du théorème 12.2: Cholesky de , inversion du facteur triangulaire par substitution, formation de , puis Jacobi. Pour une matrice de masse concentrée, est simplement la diagonale des racines des masses nodales.
def cholesky(M):
"""Facteur triangulaire inferieur L tel que M = L L^T (M symetrique definie positive)."""
n = len(M)
L = [[0.0] * n for _ in range(n)]
for i in range(n):
for j in range(i + 1):
s = M[i][j] - sum(L[i][k] * L[j][k] for k in
Le programme principal calcule, pour 2, 4, 8 et 16 éléments, l'écart relatif en pour cent des trois premières pulsations à leurs valeurs exactes (12.9), d'abord avec la masse cohérente, puis avec la masse concentrée:
from math import pi
E, rho, L, A = 210e9, 7850.0, 2.0, 600e-6
c = sqrt(E / rho)
for n in [2, 4, 8, 16]:
ligne = f"{n:3d}"
for concentree in [False, True
2 +2.586 +19.458 -2.550 -21.579
4 +0.644 +5.832 +15.348 -0.641 -5.683 -15.307
8 +0.161 +1.451 +4.048 -0.161 -1.439 -3.968
16 +0.040 +0.362 +1.007 -0.040 -0.361 -1.001
Disposée en tableau (écarts relatifs des pulsations, donc des fréquences, en pour cent):
| mode 1, coh. | mode 1, conc. | mode 2, coh. | mode 2, conc. | mode 3, coh. | mode 3, conc. | |
|---|---|---|---|---|---|---|
| 2 | +2,586 | −2,550 | +19,458 | −21,579 | — | — |
| 4 | +0,644 | −0,641 | +5,832 | −5,683 | +15,348 | −15,307 |
| 8 | +0,161 | −0,161 | +1,451 | −1,439 | +4,048 | −3,968 |
| 16 | +0,040 | −0,040 | +0,362 | −0,361 | +1,007 | −1,001 |
Trois constats. Premièrement, l'écart est divisé par 4 quand est divisé par 2, pour chaque mode et pour les deux masses: les fréquences convergent à l'ordre 2 avec les éléments linéaires, alors que l'erreur en énergie des déplacements (chapitre 1) n'est que d'ordre 1. Ce n'est pas un hasard: une pulsation est un quotient d'énergies, et l'erreur sur une énergie est le carré de l'erreur en norme d'énergie — c'est l'identité de Pythagore du chapitre 3 qui travaille. Avec des éléments de degré , l'ordre devient : deux éléments quadratiques, soit quatre ddl comme la ligne du tableau, donnent un écart de % sur le mode 1, vingt-cinq fois moins que les % des éléments linéaires, et quatre éléments quadratiques %, seize fois moins encore. , la masse cohérente toujours, la masse concentrée presque toujours, et de quantités presque opposées. , à maillage fixé, l'erreur : avec 8 éléments, le mode 1 est à 0,16 % près, le mode 3 à 4 % près.
La figure 12.1 montre les formes de ces modes, et elle réserve une surprise: sur un maillage uniforme, les modes calculés sont exacts aux nœuds. Les vecteurs propres discrets ont pour composantes avec le même nombre d'onde que les modes exacts; seule la pulsation associée est fausse. L'exercice 12.5 le démontre et en tire les formules exactes des pulsations discrètes,
qui reproduisent les sorties du programme à l'arrondi près. C'est la version dynamique de l'exactitude nodale des chapitres 1 et 4, et elle a la même limite: elle tient à la dimension 1 et au maillage uniforme.
Pourquoi la masse cohérente donne une borne supérieure
Le signe systématique des écarts de la masse cohérente n'est pas une observation: c'est un théorème, et il repose sur le principe d'énergie qui fonde toute la méthode.
Démonstration. Le quotient de Rayleigh discret. Pour , posons . Développons sur les modes -orthonormés du théorème 12.2. Par (12.10),
avec égalité pour . Donc .
Le lien avec le problème continu. Pour donné, soit . Avec la masse , et : le quotient discret est exactement le continu
évalué en . Pour la barre continue, on admet le principe de Rayleigh , qui se démontre comme la première étape en développant sur les modes exacts (12.9). Comme ,
C'est la méthode de Ritz du chapitre 3 appliquée au quotient de Rayleigh: minimiser sur un sous-espace donne un minimum plus grand. Le même argument, avec le principe du min-max de Courant–Fischer, montre que toutes les pulsations calculées avec la masse cohérente surestiment les pulsations exactes de même rang. Il ne s'applique pas à la masse concentrée, car n'est pas l'énergie cinétique d'un champ de : la masse concentrée surestime l'inertie des modes élevés, ce qui abaisse leurs fréquences, et elle le fait assez pour renverser le signe de l'erreur dans nos calculs — mais aucun théorème général ne le garantit.
La figure 12.2 étend le constat à tout le spectre d'un maillage de 10 éléments. Le mode 1 est juste à 0,1 % près avec les deux masses ( et ). Le mode 10, le dernier que le maillage puisse porter, est faux de % avec la masse cohérente et de % avec la masse concentrée ( et ); la masse cohérente atteint même % au mode 9. Un maillage de éléments a fréquences, mais il ne connaît vraiment que les plus basses: un mode qui n'a que deux ou trois éléments par demi-longueur d'onde n'est pas résolu.
L'encadrement suggère une idée simple: si l'une surestime et l'autre sous-estime d'autant, leur moyenne devrait faire mieux. C'est le cas. Avec la matrice de masse , appelée masse mixte, le même programme donne pour 4 éléments des écarts de %, % et % sur les trois premiers modes, et pour 8 éléments %, % et %: l'écart du mode 1 est divisé par 16 quand est divisé par 2. Les deux erreurs d'ordre 2 se compensent exactement et laissent une erreur d', ce que l'exercice 12.5 démontre à partir de (12.12). C'est un résultat propre à la barre uniforme en dimension 1; il illustre surtout que la masse cohérente n'est pas «la bonne» et la masse concentrée «l'approximation»: ce sont deux discrétisations du même terme d'inertie, d'erreurs opposées.
La méthode de la puissance inverse (Analyse numérique, chapitre 5) donne la plus petite pulsation propre sans calculer les autres: on itère x ← solution de K x = M x, on normalise, puis on évalue le quotient de Rayleigh. La fonction premiere_pulsation ci-dessous itère correctement, mais son quotient de Rayleigh oublie la matrice de masse au dénominateur: il divise par x^T x au lieu de x^T M x, ce qui n'a même pas la bonne unité. Corrigez-la. Pour la barre d'acier du chapitre avec 8 éléments et la masse cohérente, le programme doit afficher la fréquence 647,56 Hz.
Dynamique des structures: intégrer en temps
La méthode de Newmark
La superposition modale (12.11) suffit tant que le problème est linéaire et que quelques modes décrivent la réponse. Dans les autres cas — un choc qui excite tout le spectre, un matériau qui plastifie, un contact qui s'ouvre — on intègre directement le système (12.4), complété d'un éventuel amortissement , pas à pas en temps. La famille de schémas la plus utilisée en dynamique des structures est celle de Newmark (Nathan Newmark, 1959). En notant , et le déplacement, la vitesse et l'accélération approchés au temps , elle s'écrit
avec deux paramètres et . Les deux premières lignes sont des développements de Taylor où l'accélération sur le pas est une combinaison de ses valeurs aux deux extrémités; la troisième est l'équation du mouvement au nouveau temps. On admettra les propriétés suivantes, qu'on démontre par le même découplage modal que la section suivante utilise pour la chaleur: le schéma est d'ordre 2 si et seulement si ; il est inconditionnellement stable si . Deux choix dominent la pratique:
- , , la règle de l'accélération moyenne (ou du trapèze): implicite, d'ordre 2, inconditionnellement stable, sans amortissement numérique. Chaque pas demande la résolution d'un système de matrice , factorisée une fois pour toutes si ne change pas. C'est le choix par défaut des calculs sismiques et vibratoires;
La condition de stabilité des différences centrées se voit sur un seul mode. Éliminant vitesses et accélérations, le schéma appliqué à l'oscillateur devient . Ses solutions sont de la forme avec . Le produit des deux racines vaut 1; elles restent de module 1 — oscillation bornée — tant qu'elles sont complexes conjuguées et distinctes, c'est-à-dire tant que . À l'égalité , la racine double donne des solutions , qui croissent linéairement; au-delà, l'une des racines est réelle et de module supérieur à 1, et la solution croît géométriquement. Comme tous les modes doivent être stables,
où est la plus grande pulsation du maillage — précisément celle de la figure 12.2 qui n'a aucun sens physique. C'est le paradoxe des schémas explicites: le pas de temps est dicté par le mode le plus faux du modèle.
La conduction transitoire
Un mur refroidi d'un coup
Revenons au mur du chapitre 1, en béton cette fois, d'épaisseur m, de conductivité W/(m·K), de masse volumique et de capacité thermique massique J/(kg·K) — des valeurs de calcul supposées, représentatives d'un béton courant. Il est à °C partout quand, à l'instant , ses deux faces sont portées à °C et y sont maintenues. Comment la température au cœur du mur décroît-elle?
L'adimensionnement du chapitre 1 s'étend au temps. Avec , et , où , l'équation (12.2) sans source devient
C'est le problème modèle en temps de ce chapitre; dans la suite, on écrit à nouveau et pour et . Pour le béton choisi, m²/s et l'unité de temps vaut s, soit heures. La solution exacte s'obtient par séparation des variables, comme les modes de la barre:
Après , soit heure, le cœur du mur est descendu à °C. Chaque terme de la série est un mode qui décroît à son propre rythme : les modes de grand , qui décrivent les détails fins du profil initial — en particulier la discontinuité entre à l'intérieur et sur les faces —, disparaissent presque instantanément. C'est le lissage caractéristique d'une équation parabolique.
Le système semi-discret et sa raideur
Avec éléments linéaires de longueur , nœuds et inconnues (la numérotation des problèmes scalaires, chapitres 1 à 4), (12.5) devient
La matrice est exactement celle du problème modèle (chapitre 3, matrice (3.10)), et sa capacité concentrée est fois l'identité. La condition initiale est l'interpolée de : les valeurs nodales intérieures valent 1, et les deux nœuds du bord portent la condition de Dirichlet. Comme pour la barre, on découple le système sur les vecteurs propres du problème généralisé
qui a les mêmes propriétés que (12.8) (théorème 12.2, avec à la place de ): des valeurs propres réelles et strictement positives, . En écrivant , (12.17) se découple en , d'où la exacte
C'est la version discrète de (12.16): chaque mode s'éteint à son rythme . Avec la capacité concentrée, , et le théorème 3.6 donne ses valeurs propres en forme close: . Pour , le programme de valeurs propres les confirme:
Le plus petit approche le taux de décroissance du premier mode exact. Le plus grand croît comme : avec 100 éléments il dépasserait . Le rapport , qui est le conditionnement du chapitre 3 sous un autre nom, mesure l'écart entre la plus lente et la plus rapide des échelles de temps du système. Au sens de la définition 10.5 d', le système semi-discret de la chaleur est un , et d'autant plus raide que le maillage est fin. Avec la capacité cohérente, les valeurs propres sont et : le plus grand est près de trois fois plus grand qu'avec la capacité concentrée.
Le schéma
Avec , la matrice à inverser est seule: si la capacité est concentrée, le pas se réduit à une division par les termes diagonaux, et le schéma est réellement explicite. Avec la capacité cohérente, même l'Euler «explicite» demande une résolution par pas — c'est l'une des raisons de la popularité de la masse concentrée dans les schémas explicites. Pour , la matrice est symétrique définie positive et tridiagonale; on la factorise une fois si est constant. Le schéma est d'ordre 1 en temps, sauf pour où il est d'ordre 2: c'est exactement ce que le chapitre 9 d' a établi pour Euler et le trapèze, car (12.20) n'est rien d'autre que ces méthodes appliquées au système .
La stabilité, démontrée par la décomposition modale
L'exemple contient tout le mécanisme; il reste à le démontrer pour un système quelconque. C'est la démonstration exigée de ce chapitre.
Démonstration. 1. Découplage. Prenons les vecteurs propres -orthonormés de (12.18), qui forment une base (théorème 12.2), et écrivons . En portant dans (12.20) avec et en utilisant :
Multiplions à gauche par : par -orthonormalité, seul le terme subsiste, et
Le facteur est strictement positif, puisque ; la division est licite.
La norme. Par -orthonormalité encore, . Donc pour toute donnée si et seulement si pour tout : si un seul facteur dépasse 1 en module, la donnée croît comme .
La condition sur . L'inégalité s'écrit , soit : elle est toujours vraie. L'inégalité s'écrit , soit
2. Si , le membre de gauche est négatif ou nul, et l'inégalité tient pour tout .
3. Si , elle équivaut à . Elle doit être satisfaite par tous les , et comme , il faut et il suffit qu'elle le soit pour : c'est (12.21). Si la dépasse, .
La démonstration est celle du chapitre 10 d'Analyse numérique, transportée d'une équation à un système. Là-bas, l'équation-test avait et le facteur d'Euler explicite était avec ; ici, les valeurs propres de sont , et le facteur est le même, avec . La condition du disque de stabilité de l'Euler explicite (théorème 10.1), restreinte à l'axe réel négatif, est exactement . L'inconditionnalité de l'Euler implicite (théorème 10.2) et du trapèze, dont Crank–Nicolson est l'application à (12.17), en sont les cas et . Ce que la méthode des éléments finis ajoute, c'est la de : environ avec la capacité concentrée, avec la cohérente. La condition (12.21) devient donc, pour l'Euler explicite,
en variables adimensionnelles. Diviser par 2 divise le pas de temps admissible par 4. Pour un problème parabolique, c'est une contrainte sévère, bien plus que la condition des ondes.
La vérification numérique
Le listing suivant intègre (12.17) avec éléments et la capacité concentrée, par le schéma (12.20), jusqu'à , et affiche la valeur au milieu du mur pour plusieurs pas de temps et les trois valeurs classiques de . La fonction resoudre est celle du chapitre 1, reprise telle quelle.
def resoudre(K, F):
"""Resout K d = F par elimination de Gauss avec pivot partiel."""
n = len(F)
M = [ligne[:] for ligne in K]
c = list(F)
for k in range(n - 1):
p = max(range(k, n), key=lambda i: abs(M[i][k]))
M[k], M[p] = M[p], M[k]
c[k], c[p]
def matrices_chaleur(n, concentree=True):
"""u_t = u_xx sur (0, 1), u = 0 aux deux bords: C et K reduites aux n - 1
noeuds interieurs (u[i] du code contient u_{i+1})."""
h = 1.0 / n
K = [[0.0] * (n + 1) for _ in range(n + 1)]
C = [[0.0] * (n + 1) for _ in
0.001 0.472106 0.474354 0.476582
0.002 0.469828 0.474344 0.478779
0.004 0.465197 0.474305 0.483090
0.010 1101.000000 0.474028 0.495339
0.020 -63.000000 0.473753 0.513552
La limite (12.21) vaut ici . Les trois premiers pas de temps sont en dessous, et l'Euler explicite y donne des valeurs raisonnables. Les deux derniers sont au-dessus, et le résultat n'a plus aucun sens: 1 101 au lieu de avec , avec . Que ces valeurs soient des entiers n'est pas un hasard: pour ces deux pas, la matrice d'itération n'a que des coefficients entiers, et la donnée initiale aussi. Crank–Nicolson et Euler implicite, eux, restent stables à tous les pas.
La précision se lit en comparant à la solution semi-discrète (12.19), calculée avec les valeurs propres: . L'écart dû au temps vaut, pour puis :
| schéma | écart, | écart, | rapport |
|---|---|---|---|
| Euler explicite |
Les deux Euler sont d'ordre 1, avec des erreurs presque opposées, et Crank–Nicolson d'ordre 2. L'écart spatial, entre la solution semi-discrète et la solution exacte (12.16), vaut : avec Crank–Nicolson, un pas de (écart en temps ) suffit déjà à rendre l'erreur en temps plus petite que l'erreur en espace, et diminuer encore ne servirait à rien sans raffiner le maillage. Ce petit écart spatial tient d'ailleurs en partie à une compensation: est un peu inférieur à , ce qui ralentit la décroissance, alors que l'interpolée de la donnée initiale, qui descend linéairement à 0 sur le premier et le dernier élément, contient moins de chaleur que la donnée exacte. Avec la capacité cohérente, les deux effets s'ajoutent au lieu de se compenser, et la solution semi-discrète vaut , à de l'exacte. Une précision remarquable en un point est un résultat, pas une propriété: on ne la généralise pas sans raffiner.
En unités physiques, pour le mur de béton, la limite correspond à s: avec des éléments de 2 cm, l'Euler explicite exige des pas de temps de trois minutes au plus, pour un phénomène qui dure des heures. L'Euler implicite ou Crank–Nicolson peuvent prendre des pas de plusieurs dizaines de minutes et ne sont limités que par la précision voulue.
On reprend le mur de béton ( m, m²/s) avec un maillage deux fois plus fin: éléments linéaires, capacité concentrée. Quel est le plus grand pas de temps, en secondes, pour lequel l'Euler explicite est stable?
Stable n'est pas encore satisfaisant: les oscillations
La stabilité garantit que rien n'explose. Elle ne garantit pas que la solution ait l'air physique. Une équation de la chaleur sans source ne crée jamais d'oscillation en temps: chaque mode exact décroît de façon monotone, . Un schéma reproduit cette monotonie si et seulement si pour tous les modes, c'est-à-dire si . Pour Euler implicite, est toujours compris entre 0 et 1: aucune condition. Pour Crank–Nicolson, la condition est — la même valeur que la limite de de l'Euler explicite. Au-delà, Crank–Nicolson reste stable, mais ses modes raides changent de signe à chaque pas. Pire, quand ,
Crank–Nicolson n'amortit presque plus les modes les plus raides, qu'il fait osciller indéfiniment, alors qu'Euler implicite les détruit en un pas. C'est la distinction entre A-stabilité et L-stabilité de la définition 10.4 d'Analyse numérique. Pour le mur de 10 éléments avec , le mode le plus raide a , et : il perd moins de 20 % de son amplitude par pas, en changeant de signe. Sa composante dans la donnée initiale est grande, parce que le saut de à sur la face refroidie est exactement le genre de détail que portent les modes raides.
La figure 12.3 met les quatre comportements côte à côte au nœud le plus exposé. Avec l'Euler explicite et , à peine 17 % au-dessus de la limite, le facteur du mode raide vaut : l'erreur, d'abord invisible, est multipliée par 1,34 à chaque pas, et après 50 pas la valeur nodale atteint . Aucun message d'erreur ne l'annonce: le programme calcule exactement ce qu'on lui demande.
On intègre la conduction transitoire d'une pièce par Crank–Nicolson avec un grand pas de temps, bien au-delà de . Près d'une paroi soudainement refroidie, la température calculée oscille d'un pas à l'autre en décroissant lentement. Que conclure?
L'explorateur
Réglez le pas de temps et le paramètre , et choisissez le nœud observé. Avec Euler explicite (), tout va bien jusqu'à la limite , marquée sur l'échelle du bas; un cran au-dessus, la température au nœud oscille puis explose. Pour la limite disparaît; observez alors le nœud avec un grand pas: Crank–Nicolson reste stable mais oscille, Euler implicite décroît sans osciller.
L'explorateur intègre (12.17) avec 10 éléments et la capacité concentrée, pas à pas, à chaque mouvement d'un curseur; la solution exacte (12.16) n'y sert que de référence. Trois expériences. D'abord, avec , faites croître de 0,004 à 0,005 puis à 0,006: le triangle franchit le trait de la limite sur l'échelle du bas, le facteur du mode le plus raide passe de à puis à , et la courbe, d'abord lisse, se met à osciller puis quitte le cadre. Ensuite, montez par paliers de 0,05 avec : la limite (12.21), , recule vers la droite, et à partir de elle dépasse 0,006; à , elle disparaît. , avec , observez le nœud et comparez et : c'est la ligne du bas de la figure 12.3, et le facteur ( contre ) dit pourquoi l'un oscille et l'autre non.
La fonction pas_theta doit faire un pas du schéma (12.20) sans second membre: résoudre (C + θΔtK) u_suivant = (C − (1 − θ)ΔtK) u. Elle contient une confusion fréquente: la matrice du second membre utilise θ au lieu de 1 − θ. Pour Crank–Nicolson (θ = 0,5), l'erreur est invisible; pour les deux Euler, elle change tout. Corrigez-la. Le programme intègre alors le mur adimensionnel à 10 éléments par Euler implicite avec Δt = 0,01 et doit afficher la valeur du tableau du texte au milieu du mur en t = 0,1.
Remettez dans l'ordre les étapes d'une analyse de conduction transitoire par éléments finis avec un schéma et un pas de temps constant.
Glissez les éléments pour les mettre dans le bon ordre
- Factoriser une fois la matrice
- Choisir et , et vérifier si
- Post-traiter les flux et refaire le calcul avec pour contrôler la convergence en temps
- Imposer les conditions aux limites et interpoler la condition initiale aux nœuds
- À chaque pas, former le second membre et résoudre
- Mailler et assembler la matrice de rigidité et la matrice de capacité , avec la même boucle sur les éléments
Le cours en une démarche
Ce chapitre a introduit le temps sans rien inventer en espace. Il vaut la peine, pour finir, de relire le cours entier dans cette perspective: chaque chapitre a fourni une pièce, et la dynamique les a toutes réutilisées.
Du problème physique à l'équation (chapitre 1). Tout commence par un bilan sur une tranche — d'efforts pour la barre, d'énergie pour le mur — et par une loi de comportement. La dynamique n'a ajouté qu'un terme à ce bilan: la force d'inertie , ou la chaleur stockée . Et la mise en garde du chapitre 1 vaut toujours: un calcul converge vers la solution du modèle. Une fréquence calculée à 0,01 % près pour une barre parfaitement encastrée ne dit rien d'une barre dont l'encastrement est souple.
De l'équation à la forme faible (chapitre 2). On multiplie par une fonction test, on intègre par parties, et les conditions naturelles «viennent toutes seules». En dynamique, on l'a fait à fixé, et le terme nouveau, , n'a pas eu besoin d'intégration par parties: c'est un produit scalaire de , l'espace que le chapitre 2 avait défini pour mesurer les erreurs.
De la forme faible au système (chapitre 3). La méthode de Galerkin remplace par et produit , avec symétrique définie positive (théorème 3.5). La matrice de masse cohérente est la même construction appliquée au produit scalaire de , et elle hérite des mêmes propriétés (théorème 12.1). Le lemme de Céa, «Galerkin est optimal en énergie», a eu son analogue au théorème 12.3: Ritz sur le quotient de Rayleigh donne une borne supérieure des fréquences. Et le conditionnement du théorème 3.6, qui ne menaçait que l'arrondi en statique, est devenu en transitoire la : c'est le même qui impose .
Des éléments à l'assemblage (chapitres 4 à 6). La boucle sur les éléments, une petite matrice élémentaire, un += dans la grande: le cœur de tout programme d'éléments finis, écrit au chapitre 1, a assemblé ici une matrice de masse avec une ligne de plus. Les appuis éliminent des ddl exactement comme en statique; les modes rigides, qui rendaient singulière au chapitre 5, deviennent des modes de fréquence nulle.
Des éléments d'ordre supérieur à l'intégration (chapitre 7). La règle « points de Gauss pour la masse» annoncée au chapitre 7 a été vérifiée: un seul point rend la masse de l'élément linéaire singulière. Et les éléments quadratiques ont montré, sur les fréquences, le même avantage que sur les déplacements: l'erreur sur le premier mode passe de % à % à nombre de ddl égal.
Du segment au plan (chapitres 8 à 10). Rien dans ce chapitre n'est propre à la dimension 1. La matrice de capacité d'un triangle linéaire se calcule comme sa rigidité au chapitre 8, avec à la place de ; la masse d'un élément de plaque en élasticité plane (chapitre 9) porte les deux composantes du déplacement; un élément isoparamétrique (chapitre 10) l'intègre avec , et un petit y ruine la masse comme la rigidité. Seule la concentration demande de la prudence, puisque certains éléments la rendent négative.
De la solution à la confiance (chapitre 11). Les estimations a priori, l'ordre mesuré en raffinant, la distinction entre vérification et validation: tout s'est appliqué au temps comme à l'espace. Les fréquences ont convergé à l'ordre , les schémas en temps à l'ordre 1 ou 2, et l'erreur totale s'est révélée la somme d'une erreur spatiale et d'une erreur temporelle qu'il faut mesurer séparément — raffiner l'une quand l'autre domine ne sert à rien.
Le tableau suivant résume ce qui change et ce qui reste quand on passe de la statique à l'évolution.
| statique (chapitres 1 à 11) | évolution (chapitre 12) | |
|---|---|---|
| équation | , ou |
Le cours s'arrête ici, mais la méthode continue. Les non-linéarités — matériaux qui plastifient, grands déplacements, contact qui s'ouvre et se ferme — remplacent par une équation non linéaire qu'on résout par la méthode de Newton (Analyse numérique, chapitre 2), avec une matrice de rigidité tangente assemblée par la même boucle. La dimension 3 multiplie les inconnues et fait des solveurs creux et itératifs le cœur du calcul. Les problèmes couplés — thermomécanique, consolidation d'un sol saturé, interaction fluide–structure — assemblent plusieurs champs dans un seul système. Dans chacun de ces domaines, vous retrouverez la même démarche: une forme faible, des fonctions de forme, un assemblage, un système, une vérification. C'est elle que ce cours a voulu vous rendre familière.
Synthèse
- La semi-discrétisation garde la discrétisation spatiale des chapitres précédents et produit des équations différentielles ordinaires: pour l'équation des ondes de la barre, pour l'équation de la chaleur. et sont inchangés; et s'assemblent par la même boucle. Ici est la matrice de masse, et non le moment fléchissant du chapitre 6.
Pourquoi les codes de dynamique rapide qui intègrent par différences centrées utilisent-ils presque toujours la masse concentrée?
Exercices
Vous pouvez afficher le corrigé directement sous chaque énoncé après avoir cherché la solution.
On considère un élément de barre linéaire de nœuds et , de masse linéique constante.
Une barre de longueur , de rigidité et de masse linéique , n'est pas appuyée (un projectile, une tige en chute libre). On la modélise par un seul élément linéaire, avec les deux ddl et .
On applique le schéma à l'équation scalaire , , avec ; c'est le mur de l'exemple 12.4 avec .
Le pas critique (12.14) demande , qu'on ne veut pas calculer par un problème aux valeurs propres complet. On montre qu'il suffit de regarder chaque élément isolé.
- Soit, pour chaque élément , la plus grande valeur propre de (élément libre, non appuyé). En écrivant et de même pour , montrer que .
On reprend la barre homogène encastrée–libre de longueur sur un maillage uniforme de éléments, , nœuds , , le nœud 1 étant encastré. Pour , on pose et .
Références
- Hughes, T. J. R., The Finite Element Method: Linear Static and Dynamic Finite Element Analysis, Dover (problèmes paraboliques et hyperboliques, schéma , méthode de Newmark et leur analyse de stabilité).
- Bathe, K.-J., Finite Element Procedures, Prentice Hall / K.J. Bathe (matrices de masse, problèmes aux valeurs propres généralisés, intégration directe en dynamique).
- Zienkiewicz, O. C., Taylor, R. L. et Zhu, J. Z., The Finite Element Method: Its Basis and Fundamentals, Butterworth-Heinemann (semi-discrétisation, problèmes transitoires et vibrations).
- Cook, R. D., Malkus, D. S., Plesha, M. E. et Witt, R. J., Concepts and Applications of Finite Element Analysis, Wiley (masses cohérentes et concentrées, choix d'un schéma en temps, contrôles des résultats).
- Dhatt, G., Touzot, G. et Lefrançois, E., Méthode des éléments finis, Hermès / Lavoisier (en français; problèmes non stationnaires et programmation).
- Newmark, N. M., «A method of computation for structural dynamics», Journal of the Engineering Mechanics Division (ASCE), 1959; Crank, J. et Nicolson, P., «A practical method for numerical evaluation of solutions of partial differential equations of the heat-conduction type», Proceedings of the Cambridge Philosophical Society, 1947; Courant, R., Friedrichs, K. et Lewy, H., «Über die partiellen Differenzengleichungen der mathematischen Physik», Mathematische Annalen, 1928.