Les équations d'Euler constituent le socle de la mécanique des fluides compressibles. Elles expriment, sous forme de lois de conservation, trois principes fondamentaux de la physique : la conservation de la masse, de la quantité de mouvement et de l'énergie totale. En l'absence de viscosité, de conduction thermique et de forces extérieures, ces équations décrivent intégralement la dynamique d'un écoulement compressible.
L'étude du cas unidimensionnel (1D) n'est pas une simplification anecdotique. C'est le cadre minimal qui contient toute la richesse physique des écoulements compressibles : ondes de choc, détentes, discontinuités de contact. C'est pourquoi les équations d'Euler 1D servent de problème modèle incontournable pour :
- le développement et la validation de schémas numériques (volumes finis, différences finies),
- la compréhension de la structure des ondes dans les systèmes hyperboliques,
- l'analyse des propriétés de stabilité, dissipation et dispersion numériques.
Ce chapitre présente les équations d'Euler 1D de manière auto-suffisante. Chaque formule est accompagnée d'une explication physique terme à terme. L'implémentation numérique correspondante se trouve dans le module euler1d/physics.py.
Les équations d'Euler 1D s'écrivent sous la forme d'un système de lois de conservation :
où
Chaque composante représente une densité volumique d'une quantité physique conservée :
| Composante | Grandeur | Signification physique |
|---|---|---|
| Masse volumique | Masse de fluide par unité de volume (kg/m³). | |
| Quantité de mouvement | Impulsion par unité de volume (kg/(m²·s)). C'est le produit de la densité par la vitesse |
|
| Énergie totale | Énergie par unité de volume (J/m³). Elle comprend l'énergie cinétique |
Chaque composante du flux représente le taux de transport de la quantité conservative correspondante à travers une section :
| Composante du flux | Signification physique |
|---|---|
| Flux de masse : débit massique par unité de surface. Le fluide transporte sa propre masse à la vitesse |
|
| Flux de quantité de mouvement : il comporte deux contributions. Le terme |
|
| Flux d'énergie : le fluide transporte son énergie totale |
L'équation
Le système de trois équations (§1.1) comporte quatre inconnues :
Pour un gaz parfait calorifiquement parfait (hypothèse standard en dynamique des gaz), l'énergie interne spécifique
Explication terme à terme :
-
$E - \frac{1}{2}\rho u^2 = \rho e$ : c'est l'énergie interne par unité de volume. On soustrait l'énergie cinétique$\frac{1}{2}\rho u^2$ de l'énergie totale$E$ pour obtenir la part d'énergie liée à l'agitation thermique moléculaire. -
$\gamma - 1$ : facteur de proportionnalité entre la pression et l'énergie interne. Il provient de la thermodynamique du gaz parfait. -
$p$ : la pression résultante, force par unité de surface exercée par le gaz sur ses parois.
Le paramètre
où
| Gaz | Degrés de liberté | |
|---|---|---|
| Monoatomique (He, Ar) | 3 (translation uniquement) | |
| Diatomique (air, N₂, O₂) | 5 (translation + rotation) | |
| Triatomique (CO₂) | 6 (translation + rotation + vibration) |
Plus
La vitesse du son
Explication terme à terme :
-
$p/\rho$ : rapport pression/densité, qui a la dimension d'une vitesse au carré. Plus la pression est élevée (gaz comprimé) ou la densité est faible (gaz léger), plus le son se propage vite. -
$\gamma$ : le rapport des chaleurs spécifiques intervient car la propagation sonore est un processus isentropique (adiabatique réversible). La compressibilité isentropique diffère de la compressibilité isotherme par ce facteur$\gamma$ .
La vitesse du son joue un rôle central dans les équations d'Euler car elle détermine les vitesses de propagation des ondes (cf. §1.4).
Implémentation : les fonctions
sound_speed()et l'équation d'état sont danseuler1d/physics.py.
Il existe deux représentations naturelles de l'état d'un fluide compressible. Le choix de la représentation dépend du contexte (formulation mathématique, reconstruction numérique, conditions initiales).
Ces variables sont dites conservatives car elles apparaissent directement dans les lois de conservation : ce sont les quantités dont l'intégrale sur un volume de contrôle est conservée en l'absence de flux aux frontières. Elles sont le choix naturel pour :
- la discrétisation en volumes finis (la méthode repose intrinsèquement sur les bilans de quantités conservées),
- la capture des chocs (les relations de Rankine-Hugoniot sont formulées en variables conservatives),
- le stockage de la solution entre les pas de temps.
Ces variables sont dites primitives car elles correspondent aux grandeurs physiques directement mesurables : densité, vitesse, pression. Elles sont préférables pour :
- la reconstruction spatiale (MUSCL, ENO, WENO) : les variables primitives varient de manière plus régulière que les variables conservatives au voisinage des discontinuités, ce qui produit des reconstructions mieux conditionnées,
- la spécification des conditions initiales et aux limites (on prescrit naturellement
$\rho$ ,$u$ ,$p$ ), - l'interprétation physique des résultats.
Étant donnés
Le terme
Étant donné
On reconnaît l'équation d'état du §1.2. Le terme
Implémentation : les fonctions
primitive_to_conservative()etconservative_to_primitive()sont danseuler1d/physics.py.
Le système d'Euler 1D est un système hyperbolique de lois de conservation. Cette propriété est fondamentale car elle garantit que l'information se propage à des vitesses finies, sous forme d'ondes bien définies.
En dérivant le flux par rapport aux variables conservatives, le système se réécrit :
où
En notant
Origine des termes : cette matrice résulte de la différentiation de chaque composante du flux
La matrice
Interprétation physique :
| Valeur propre | Vitesse de propagation | Signification |
|---|---|---|
| Onde acoustique rétrograde | Perturbation de pression se propageant vers l'amont (dans le référentiel du fluide, à la vitesse |
|
| Onde entropique | Perturbation d'entropie (et de densité) advectée à la vitesse du fluide. Ne transporte aucune variation de pression ni de vitesse. | |
| Onde acoustique progressive | Perturbation de pression se propageant vers l'aval (dans le référentiel du fluide, à la vitesse |
Les trois valeurs propres sont toujours réelles et distinctes (sauf cas dégénéré
Les vecteurs propres droits
Interprétation :
-
$\mathbf{r}_1$ et$\mathbf{r}_3$ (ondes acoustiques) : les trois composantes ($\rho$ ,$\rho u$ ,$E$ ) varient simultanément. Une onde acoustique modifie la densité, la vitesse et la pression. La troisième composante fait intervenir l'enthalpie$H$ , car l'onde transporte de l'énergie. -
$\mathbf{r}_2$ (onde entropique) : la troisième composante est$\frac{1}{2}u^2$ (énergie cinétique seule, sans contribution de pression). Cela reflète le fait que cette onde ne modifie ni la pression ni la vitesse — seules la densité et l'entropie varient.
Les vecteurs propres gauches
Plus explicitement, en termes de
Ils vérifient $\mathbf{l}_i \cdot \mathbf{r}j = \delta{ij}$ (orthonormalité). Leur utilité principale est dans l'analyse de Fourier des schémas numériques (cf. euler1d/fourier_analysis.py) : on projette la sortie du schéma sur
Toute perturbation
Chaque coefficient
Les trois familles d'ondes identifiées au §1.4 ne se comportent pas de la même manière lorsque l'amplitude des perturbations devient finie. La nature non linéaire des équations d'Euler crée une distinction fondamentale entre deux types de champs caractéristiques.
Les 1er et 3e champs (
Autrement dit, la vitesse de propagation
Concrètement, chaque onde acoustique peut se manifester sous deux formes exclusives :
Un choc est une discontinuité dans la solution. Il se forme lorsqu'une onde de compression non linéaire se raidit jusqu'à devenir verticale. À travers un choc :
- la densité
$\rho$ , la pression$p$ et la vitesse$u$ subissent des sauts finis, - l'entropie augmente (processus irréversible),
- le choc se propage à une vitesse
$s$ déterminée par les relations de Rankine-Hugoniot :
où
Une détente est une onde continue et lisse (fan de raréfaction). Elle apparaît lorsque le fluide se détend (diminution de pression). Dans une détente :
- toutes les variables varient continûment,
- l'entropie est constante (processus isentropique),
- la solution est auto-similaire : elle ne dépend que du rapport
$x/t$ .
Les invariants de Riemann à travers une détente sont :
- 1er champ :
$u + \frac{2a}{\gamma - 1} = \text{const}$ (invariant de Riemann le long de$\lambda_1$ ), - 3e champ :
$u - \frac{2a}{\gamma - 1} = \text{const}$ (invariant de Riemann le long de$\lambda_3$ ).
Le 2e champ (
La vitesse de propagation
Une discontinuité de contact est une surface matérielle se déplaçant à la vitesse du fluide
- la densité
$\rho$ et la température$T$ subissent un saut, - la vitesse
$u$ et la pression$p$ sont continues, - l'entropie subit un saut, mais il n'y a pas de production d'entropie (contrairement au choc),
- il n'y a pas de flux de masse à travers la discontinuité dans le référentiel de celle-ci.
Physiquement, une discontinuité de contact sépare deux masses de fluide ayant des densités (ou températures) différentes mais la même pression et la même vitesse. C'est l'analogue d'une interface entre deux fluides qui glissent ensemble sans se mélanger.
Le problème de Riemann est la résolution des équations d'Euler avec des conditions initiales constantes par morceaux, séparées par une discontinuité en
Onde 1 Onde 2 Onde 3
(acoustique) (entropique) (acoustique)
UL | détente | U*L | contact | U*R | choc | UR
| ou choc | | | | ou |
| | | | | détente|
- UL et UR : états gauche et droit (données initiales).
-
U*L et U*R : états intermédiaires. Ils partagent la même pression
$p^\ast$ et la même vitesse$u^\ast$ (conditions de compatibilité à travers la discontinuité de contact). Ils diffèrent uniquement par leur densité. -
Onde 1 (
$\lambda_1$ ) : choc ou détente séparant UL de U*L. -
Onde 2 (
$\lambda_2$ ) : discontinuité de contact séparant U*L de U*R. -
Onde 3 (
$\lambda_3$ ) : choc ou détente séparant U*R de UR.
La résolution du problème de Riemann consiste à trouver
Implémentation : le solveur de Riemann exact est dans
euler1d/riemann.py. Les cas test (Sod, Lax, double détente) sont danseuler1d/test_cases.py.
Les concepts mathématiques de ce chapitre sont implémentés dans les modules suivants :
| Concept | Module | Fonctions |
|---|---|---|
| Équation d'état (§1.2) | euler1d/physics.py |
sound_speed() |
| Conversion primitive → conservative (§1.3) | euler1d/physics.py |
primitive_to_conservative() |
| Conversion conservative → primitive (§1.3) | euler1d/physics.py |
conservative_to_primitive() |
| Flux physique (§1.1) | euler1d/physics.py |
compute_flux() |
| Vitesse maximale d'onde (§1.4) | euler1d/physics.py |
max_wave_speed() |
| Propriétés du gaz (§1.2) | euler1d/config.py |
GasProperties |
| Problème de Riemann (§1.5) | euler1d/riemann.py |
Solveur exact |
Les variables conservatives sont stockées dans des tableaux NumPy de forme (3, N) où N est le nombre de cellules :
- ligne 0 :
$\rho$ - ligne 1 :
$\rho u$ - ligne 2 :
$E$
Cette convention est utilisée de manière cohérente dans tout le code.
-
[Toro, 2009] E.F. Toro, Riemann Solvers and Numerical Methods for Fluid Dynamics, 3e édition, Springer, 2009. Chapitres 1 à 3 : formulation des équations d'Euler, équation d'état, structure des ondes, problème de Riemann.
-
[LeVeque, 2002] R.J. LeVeque, Finite Volume Methods for Hyperbolic Problems, Cambridge University Press, 2002. Chapitre 1 : lois de conservation, hyperbolicité, ondes caractéristiques.
-
[Laney, 1998] C.B. Laney, Computational Gasdynamics, Cambridge University Press, 1998. Chapitres 2-5 : dérivation physique des équations d'Euler, thermodynamique du gaz parfait.