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.
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.
Réponses:
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.
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.
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.
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.
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].
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
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.
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 :)