Expansion d'un gaz dans le vide

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour.

Je suis actuellement sur un projet où je dois simuler informatiquement l'expansion d'un gaz dans le vide. J'ai néanmoins un problème, mes connaissances en mécanique des fluides sont très faibles, voire inexistantes, et je n'ai aucune idée concernant la marche à suivre pour obtenir un résultat un minimum réaliste. Mes contraintes sont les suivantes :

  • La simulation est réalisée en deux dimensions sur une grille orthogonale. La quantité maximale de gaz dans une cellule est finie et fixe. La grille ne devrait pas dépasser les 1000 par 1000 cellules ;
  • Il peut exister des obstacles solides, qui peuvent également partitionner la surface de simulation. Les cellules de la grille sont remplies soit complètement soit pas du tout par un obstacle. Si une cellule contient un obstacle, elle ne peut pas contenir de gaz ;
  • Je n'ai besoin de simuler que la densité du gaz. La composition chimique, la température et la pression ne sont pas importantes pour mes résultats ;
  • Je n'ai pas besoin d'une précision à la molécule près. Une approximation du mouvement du gaz est suffisante ;
  • La simulation doit se faire en temps réel.

Pouvez vous m'orienter vers des méthodes remplissant ces contraintes ?

Merci d'avance pour vos réponses.

Édité par Praetonus

Mon Github | Mantra : Un Entity-System en C++

+0 -0

Le gaz est il chargé ?

Sinon, une simple équation de diffusion ? Le problème se trouve dans l’estimation du paramètre D. Peut être qu'il y'a moyen d'avoir une expression théorique avec de la mécanique statistique et un peu de termo.

Edit : je suis tombé sur ca, ou sur ca

Édité par Davidbrcz

+0 -0
Auteur du sujet

Le gaz est il chargé ?

Il s'agit d'air, il me semble donc que oui (désolé si je viens de dire une grosse bêtise, ma chimie est rouillée). Par contre, si ça peut simplifier l'affaire au niveau calculs, je préfèrerais ne pas simuler les charges, quitte à perdre en précision.

Sinon, une simple équation de diffusion ? Le problème se trouve dans l’estimation du paramètre D. Peut être qu'il y'a moyen d'avoir une expression théorique avec de la mécanique statistique et un peu de termo.

Pour être sûr, tu parle bien de ça ?

Edit : je suis tombé sur ca, ou sur ca

Merci pour les liens. Malheureusement, l'accès aux papiers complets semble payant.

Édité par Praetonus

Mon Github | Mantra : Un Entity-System en C++

+0 -0

Ce n'est pas un problème de diffusion, puisque tu es dans le vide. Si tu étais dans l'air, oui, et tu aurais des manières de calculer une approximation de diffusion de coefficient. Avec la géométrie que tu veux, tu aurais dû faire une résolution numérique, mais ca se fait.

Puisque tu es dans le vide, c'est un peu différent. Tu peux regarder par ici. Je ne suis pas sûr, mais je me demande si tu ne pourrais pas appliquer Navier-stokes. Normalement, non, puisqu'un gaz est compressible, mais dans le vide, je me demande. Un avis ?

Staff

mais je me demande si tu ne pourrais pas appliquer Navier-stokes. Normalement, non, puisqu'un gaz est compressible

Euh… Navier-Stokes peut très bien s'écrire pour les fluides compressibles (encore heureux d'ailleurs)… Pour un gaz, on peut même en général virer le terme de diffusion (désolé David…) de quantité de mouvement lié à la viscosité (on a alors ce qui s'appelle l'équation d'Euler).

Non le problème pour appliquer Navier-Stokes à un gaz, c'est surtout la potentielle difficulté à définir des volumes de contrôle à l'échelle mésoscopique qui aient un sens (et donc rendre pertinente l'équation de NS) si la densité du gaz et les interactions inter-moléculaires sont faibles. Comme dans ton problème tu vas avoir des densité nulles à certains endroits de ton domaine, je ne pense pas que NS soit pertinente. Tu pourras vraissemblablement décrire le "coeur" dense de ton nuage de gaz, mais ça va pas t'aider pour en étudier l'expansion dans le vide.

Le problème, c'est que je ne vois qu'une possibilité pas trop compliquée, une approche bourrin à la molecular dynamics. Mais tu peux dire adieu au temps réel… D'ailleurs, je me demande dans quel contexte tu as besoin de simuler ce genre de trucs en temps réel…

I don't mind that you think slowly, but I do mind that you are publishing faster. – W. Pauli

+0 -0
Staff

Quand j'ai lu le problème, comme adri1, j'ai pensé dynamique moléculaire, mais ce n'est pas adapté à tes contraintes. On peut en savoir plus sur le contexte ?

Hier, dans le parc, j'ai vu une petite vieille entourée de dinosaures aviens. Je donne pas cher de sa peau.

+0 -0

Le gaz est il chargé ?

Il s'agit d'air, il me semble donc que oui (désolé si je viens de dire une grosse bêtise, ma chimie est rouillée). Par contre, si ça peut simplifier l'affaire au niveau calculs, je préfèrerais ne pas simuler les charges, quitte à perdre en précision.

Euh, c'est dans les hypothèses de ton modèle. Si ton gaz est par exemple soumis à un champ électromagnétique assez intense, il va se ioniser et on peut regarder du côté des équations du plasma. Il faudrait d'ailleurs plus de détail.

Dans un autre registre, la grille carrée t'es imposée ou tu peux en changer ? Car mes cours de calculs numériques sont loin, mais de mémoire y'a des éléments à prendre en compte au niveau de la discrétisation/maillage en fonction des équations qu'on cherche à résoudre (problèmes paraboliques ou hyperboliques).

Sinon, une simple équation de diffusion ? Le problème se trouve dans l’estimation du paramètre D. Peut être qu'il y'a moyen d'avoir une expression théorique avec de la mécanique statistique et un peu de termo.

Pour être sûr, tu parle bien de ça ?

Oui, je m'étais basé sur la version anglaise qui est plus complète.

Edit : je suis tombé sur ca, ou sur ca

Merci pour les liens. Malheureusement, l'accès aux papiers complets semble payant.

Praetonus

C'est malheureusement le cas et c'est une honte.

Edit : je ne vois pas en quoi la diffusion est inadaptée. Les molécules s'entre choc à cause de l'agitation thermique, ce qui fait qu'elle vont se diffuser (dans le vide), mais se diffuser quand même. Dans un écoulement, c'est autre chose, mais si on laisse un tas de gaz au repos, je suis pas si sûr.

Edit 2: d'ailleurs les équations de NS sont elles valables ? Le gaz ne doit il pas être considéré comme raréfié ce qui implique de faire tomber les hypothèses de continuité ? Le lien cité indique de partir vers les équations de Boltzmann, qui sont de la phy stat, ce qu'indiquait mes 2 collègues du dessus.

Édité par Davidbrcz

+0 -0
Auteur du sujet

Pour le contexte, il s'agit d'un dungeon-crawler dans une base lunaire. Je voudrais faire en sorte que lorsqu'un espace rempli d'air et un espace sans air communiquent (par ouverture de porte, création de brèche, etc), l'air se déplace d'une manière un minimum réaliste. J'ai déjà essayé des méthodes empiriques, où l'air se déplace entre cellules adjacentes en fonction des densités des cellules en question, mais ça ressemblait plus à un écoulement d'eau qu'à une éjection brutale d'air. Je me tourne donc vers les méthodes plus formelles.

Néanmoins, je préfère éviter d'avoir une précision trop importante, pour économiser du temps et parce qu'il faut visiblement prendre en compte des paramètres dont je ne connaissais pas l'existence. Pour la simulation, fixer les propriétés de l'air à des valeurs simples à simuler (ou n'impactant pas les calculs) mais irréalistes ne me dérange pas, du moment que la direction, la vitesse et la « forme » de l'expansion sont respectées. Je m'avance surement beaucoup, mais les propriétés simples en question pourraient être celles d'un gaz sans charge et ne réagissant avec rien.

Pour la forme de la grille, elle ne pourra pas changer.

Mon Github | Mantra : Un Entity-System en C++

+0 -0
Staff

je ne vois pas en quoi la diffusion est inadaptée. Les molécules s'entre choc à cause de l'agitation thermique, ce qui fait qu'elle vont se diffuser (dans le vide), mais se diffuser quand même. Dans un écoulement, c'est autre chose, mais si on laisse un tas de gaz au repos, je suis pas si sûr.

Tu peux considérer qu'une molécule de gaz diffuse au sein du nuage de gaz, oui. Mais ce phénomène ne sera dominant que lorsque que le fluide est effectivement au repos, et ne te dit rien sur la propagation générale du nuage de gaz (qui lui n'a à priori aucune raison de suivre une loi de diffusion). Puis bon, un nuage de gaz qui s'écoule, je vois pas comment tu peux considérer ça comme étant au repos. ^^

@Praetonus : vu ce que tu nous dis, je pense qu'il vaut mieux laisser tomber les considérations physiques alors. Qu'est-ce que tu as imaginé comme modèle avec ton histoire de constrate de densité entre cellules adjacentes ? Peut être qu'ajuster ça serait suffisant.

I don't mind that you think slowly, but I do mind that you are publishing faster. – W. Pauli

+0 -0
Auteur du sujet

Mon processus de base est le suivant. Si une cellule A a une densité $x$ et est adjacente à une cellule B avec une densité $y < x$, le transfert de A à B est $(x-y)/2$. Lorsque plusieurs cellules transfèrent vers la même cellule, ou lorsqu'une seule cellule transfère vers plusieurs cellules, je fais une moyenne pour que la distribution soit uniforme.

Le problème se pose lors de la propagation d'un espace rempli à un espace vide par un passage étroit. Visuellement ça donne ça :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
Légende : 0-8 : densité
          X   : obstacle

000000000  000000000  000000000        000010000
000000000  000000000  000000000        000121000
000000000  000000000  000020000        001242100
XXXX0XXXX  XXXX4XXXX  XXXX2XXXX   ...  XXXX5XXXX
888888888  888848888  888777888        877656778
888888888  888888888  888878888        887767788
888888888  888888888  888888888        888777888
Frame 1    Frame 2    Frame 3          Frame N

Ici ça se propage uniformément dans toutes les directions, mais si je ne dis pas de bêtises, en réalité ça fait plutôt un cône.

Mon Github | Mantra : Un Entity-System en C++

+0 -0
Staff

Spontanément, j'ai envie de dire que c'est parce que tu travailles sur un réseau carré. Les gens qui simulent des bulles sur réseau ont le même problème. Une solution simple et efficace consiste à étendre le voisinage. Les voisins d'une case deviennent :

1
2
3
4
5
 XXX
XXXXX
XX0XX
XXXXX
 XXX 

où X est un voisin, et 0 la case. Bien sure, il faudra faire gaffe à la gestion des obstacles pour éviter un résultat aberrant, mais tu peux faire un essai avec un mur d'épaisseur 2 pour voir si ça marche mieux. Je suis assez confiant.

Édité par Gabbro

Hier, dans le parc, j'ai vu une petite vieille entourée de dinosaures aviens. Je donne pas cher de sa peau.

+0 -0
Staff

La réponse d'au dessus était la version courte. M'étant rendu compte que ces problèmes ne sautaient pas aux yeux pour plein de gens, je suis en train d'écrire une réponse longue.

Édité par Gabbro

Hier, dans le parc, j'ai vu une petite vieille entourée de dinosaures aviens. Je donne pas cher de sa peau.

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte