Quelle est la méthode la plus simple pour résoudre les équations de Navier-Stokes incompressibles?


9

Par "le plus simple", j'entends le plus simple à apprendre et à mettre en œuvre à partir de zéro. J'espère qu'on pourra plus ou moins répondre à ma question.


1
Dans quelle géométrie?
Rhys Ulerich

@Rhys Ulerich Im deviner le plus simple?
James

@ user2697246 Domaine infini avec une condition initiale uniforme? Banal. Ce n'était pas censé être une question dédaigneuse.
Rhys Ulerich

1
Pour commencer avec les simulations NS, consultez ceci, lorenabarba.com/blog/cfd-python-12-steps-to-navier-stokes
Subodh

Réponses:


10

En deux dimensions, la formulation vitesse-tourbillon est la plus simple à mettre en œuvre car les variables sont colocalisées, mais les conditions aux limites peuvent être compliquées et c'est un énoncé moins direct du problème. Pour les formulations variables primitives, la méthode des différences finies en grille décalée de Harlow et Welch (1965) est un excellent point de départ.


2
Pozrikidis donne une description très claire de cet algorithme, avec des conditions aux limites .
John Stockie

10

Vous pouvez trouver une implémentation entièrement documentée d'une méthode de solution très simple, mais assez efficace (méthode de fractionnement de Chorin) ici .

Pour une sélection d'autres méthodes populaires, consultez le chapitre 21 de ce livre .

Avertissement: je suis (co) auteur à la fois du programme de démonstration et du livre. Le livre peut être téléchargé gratuitement.


5

Le plus simple va toujours être relatif à vos intérêts et besoins particuliers. Je suis d'accord avec Anders que, pour un flux incompressible sur des domaines à géométrie simple, vous auriez du mal à battre la méthode de projection (c'est-à-dire la méthode de fractionnement de Chorin) si vous privilégiez à la fois la facilité d'utilisation et la précision.

Pour aller un peu plus en détail, la méthode est question est introduite dans [1]. La méthode de projection approximative du second ordre, plus moderne, est bien expliquée dans [2]. La motivation est que la résolution des équations de Navier-Stokes incompressibles complètes nécessite une résolution simultanée du champ de vitesse et de la pression, et le système linéaire résultant est plutôt mal conditionné. La méthode de projection élimine ce problème en divisant chaque pas de temps en une résolution de vitesse, en utilisant la pression du pas de temps précédent, suivie d'une mise à jour de pression, qui impose essentiellement que le champ de vitesse reste incompressible.

Pour l'implémenter, vous aurez besoin de quelques autres composants, mais tous peuvent être appris et programmés assez facilement.

  1. Pour la résolution de la pression, en supposant que les systèmes à densité constante vous intéressent, vous devrez résoudre l'équation de Poisson. Il existe, bien sûr, des dizaines d'algorithmes pour aborder ce problème, mais de loin le plus facile à mettre en œuvre - sinon peut-être à comprendre pleinement - est l' algorithme du gradient conjugué (CG). L'une des meilleures explications de CG que j'ai lues a été écrite par Jonathan Shewchuk et peut être trouvée ici . Cependant, vous n'avez certainement pas besoin de lire l'intégralité de l'article pour pouvoir simplement implémenter l'algorithme.

  2. Vous aurez besoin d'un autre algorithme pour gérer le terme d'advection dans Navier-Stokes. Dans plusieurs dimensions, la programmation d'implémentations robustes des méthodes les plus flexibles, par exemple Godunov, peut être assez difficile. Cependant, à condition que vous soyez intéressé par des flux avec un nombre de Reynolds relativement modeste (c'est-à-dire avec une viscosité non négligeable), l'une des méthodes essentiellement non oscillantes (ENO) convient parfaitement à la mise en œuvre. Il y a un excellent aperçu de la théorie et de la mise en œuvre dans [3].

  3. Vous devrez gérer le terme visqueux à l'aide d'une méthode implicite, généralement Crank-Nicolson. Ceci est expliqué en détail dans les documents sur la méthode de projection, et vous pouvez facilement utiliser CG pour la résolution de la matrice à condition que la viscosité soit constante.

[1] AJ Chorin, Solution numérique des équations de Navier-Stokes , J. Math. Comput., 22 (1968), p. 745-762

[2] A. Almgren, JB Bell et W. Szymczak, Une méthode numérique pour les équations de Navier-Stokes incompressibles basées sur une projection approximative , SIAM J. Sci. Comput. 17 (1996), pp. 258-369.

[3] S. Osher et R. Fedkiw, Level Set Methods and Dynamic Implicit Surfaces . Springer-Verlag New York ,. Sciences mathématiques appliquées, 153, 2002


À cette belle réponse, permettez-moi d'ajouter qu'une compréhension actualisée de la nature de la pression dans les méthodes de projection (discrètes dans le temps) se trouve dans: J.-G. Liu, J. Liu, RL Pego, Approximation de pression stable et précise pour un écoulement visqueux incompressible instationnaire, J. Comp. Phys. 229 (2010) 3428-3453.
Bob Pego

4

L'infographie et les jeux ont connu une énorme explosion d'intérêt pour la simulation des fluides ces dernières années. Voici un excellent article de Jos Stam qui discute de l'implantation d'un solveur pour des applications en temps réel. Il est livré avec un code source très facile à comprendre. Je ne sais pas à quel point c'est précis, mais c'est peut-être ce que vous recherchez.


1

Une autre méthode vraiment agréable et simple consiste à utiliser des automates cellulaires pour la discrétisation. Il existe de nombreux modèles de ce type, y compris LBA, FHP et bien plus encore. Ceux-ci sont vraiment sympas car ils peuvent fournir une simulation en temps réel sur des ordinateurs modernes et peuvent également être bien paralysés et exécutés sur des GPU. Ils présentent également certains inconvénients et les résultats dépendent fortement de la forme du réseau appliqué. Le réseau carré est insuffisant car il manque de liberté de rotation et c'est-à-dire que les vortex von kaarman seront de forme carrée, ce qui n'est pas agréable :)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.