IFT Simulation de fluides stables en infographie



Documents pareils
L ANALYSE EN COMPOSANTES PRINCIPALES (A.C.P.) Pierre-Louis GONZALEZ

Formation à la C F D Computational Fluid Dynamics. Formation à la CFD, Ph Parnaudeau

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Eléments de Théorie des Graphes et Programmation Linéaire

Fonctions de plusieurs variables

Plan du cours : électricité 1

IFT3245. Simulation et modèles

Initiation à la simulation numérique. Eléments d analyse numérique.

FONCTIONS DE PLUSIEURS VARIABLES (Outils Mathématiques 4)

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

ANALYSE NUMERIQUE ET OPTIMISATION. Une introduction à la modélisation mathématique et à la simulation numérique

Master IMA - UMPC Paris 6 RDMM - Année Fiche de TP

Fonctions de plusieurs variables : dérivés partielles, diérentielle. Fonctions composées. Fonctions de classe C 1. Exemples

Cours Informatique Master STEP

Évaluation et implémentation des langages

Programmation linéaire

Fonctions de deux variables. Mai 2011

GUIDE Excel (version débutante) Version 2013

Rendu temps réel de mer et de nuages

Nombre dérivé et tangente

Introduction à l étude des Corps Finis

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable

INTRODUCTION À L ANALYSE FACTORIELLE DES CORRESPONDANCES

Notice d Utilisation du logiciel Finite Element Method Magnetics version 3.4 auteur: David Meeker

LA PHYSIQUE DES MATERIAUX. Chapitre 1 LES RESEAUX DIRECT ET RECIPROQUE

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Intégrales doubles et triples - M

Cours d Analyse. Fonctions de plusieurs variables

Cours de Mécanique du point matériel

Correction du Baccalauréat S Amérique du Nord mai 2007

Résolution d équations non linéaires

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

DYNAMIQUE DE FORMATION DES ÉTOILES

Baccalauréat ES Antilles Guyane 12 septembre 2014 Corrigé

MANUEL UTILISATEUR. Application 4trip

Examen optimisation Centrale Marseille (2008) et SupGalilee (2008)

Initiation à la Mécanique des Fluides. Mr. Zoubir HAMIDI

Chp. 4. Minimisation d une fonction d une variable

Calculs de probabilités avec la loi normale

Mathématique et Automatique : de la boucle ouverte à la boucle fermée. Maïtine bergounioux Laboratoire MAPMO - UMR 6628 Université d'orléans

Programmation Linéaire - Cours 1

BACCALAURÉAT PROFESSIONNEL ÉPREUVE DE MATHEMATIQUES. EXEMPLE DE SUJET n 2

Fonctions de plusieurs variables

LE PROCESSUS ( la machine) la fonction f. ( On lit : «fonction f qui à x associe f (x)» )

aux différences est appelé équation aux différences d ordre n en forme normale.

Algorithmes pour la planification de mouvements en robotique non-holonome

Introduction à l analyse numérique : exemple du cloud computing

Object Removal by Exemplar-Based Inpainting

3ème séance de Mécanique des fluides. Rappels sur les premières séances Aujourd hui : le modèle du fluide parfait. 2 Écoulements potentiels

Pour les futurs développeurs Sommaire

Programmes des classes préparatoires aux Grandes Ecoles

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015

Les fonction affines

Rappels sur les suites - Algorithme

Corrigé du baccalauréat S Pondichéry 12 avril 2007

Cours d analyse numérique SMI-S4

Exercice : la frontière des portefeuilles optimaux sans actif certain

CHAPITRE VIII : Les circuits avec résistances ohmiques

Items étudiés dans le CHAPITRE N5. 7 et 9 p 129 D14 Déterminer par le calcul l'antécédent d'un nombre par une fonction linéaire

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

Exercices Corrigés Premières notions sur les espaces vectoriels

Figure 3.1- Lancement du Gambit

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples,

Calcul différentiel. Chapitre Différentiabilité

SIMULATION DU PROCÉDÉ DE FABRICATION DIRECTE DE PIÈCES THERMOPLASTIQUES PAR FUSION LASER DE POUDRE

Probabilité. Table des matières. 1 Loi de probabilité Conditions préalables Définitions Loi équirépartie...

I Stabilité, Commandabilité et Observabilité Introduction Un exemple emprunté à la robotique Le plan Problème...

TSTI 2D CH X : Exemples de lois à densité 1

Cours d initiation à la programmation en C++ Johann Cuenin

INF6304 Interfaces Intelligentes

Le turbo met les gaz. Les turbines en équation

Licence à distance Chapitre V : Equations différentielles. Méthodes numériques à un pas.

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Chapitre 5 : Flot maximal dans un graphe

Apprentissage Automatique

Resolution limit in community detection

A retenir : A Z m n. m noyau MASSE ET ÉNERGIE RÉACTIONS NUCLÉAIRES I) EQUIVALENCE MASSE-ÉNERGIE

Chapitre 3 : Repères et positionnement 3D

La Licence Mathématiques et Economie-MASS Université de Sciences Sociales de Toulouse 1

Durée de L épreuve : 2 heures. Barème : Exercice n 4 : 1 ) 1 point 2 ) 2 points 3 ) 1 point

SEO On-page. Avez-vous mis toutes les chances de votre côté pour le référencement de votre site?

1S Modèles de rédaction Enoncés

Théories de champ moyen et convection à grande échelle

Circuits RL et RC. Chapitre Inductance

U7/R7 Un éclairage avancé dans un design unique

Projet de Traitement du Signal Segmentation d images SAR

1 radian. De même, la longueur d un arc de cercle de rayon R et dont l angle au centre a pour mesure α radians est α R. R AB =R.

Différentiabilité ; Fonctions de plusieurs variables réelles

Analyse en Composantes Principales

Résolution de systèmes linéaires par des méthodes directes

T. Gasc 1,2,3, F. De Vuyst 1, R. Motte 3, M. Peybernes 4, R. Poncet 5

Imagerie Numérique Synthèse d images. DUT Informatique Sébastien THON

Modélisation 3D par le modèle de turbulence k-ε standard de la position de la tête sur la force de résistance rencontrée par les nageurs.

Condition inf-sup pour l Elément Fini de Taylor-Hood È ¾ -iso-è ½

Corrigé du baccalauréat S Asie 21 juin 2010

Cours 02 : Problème général de la programmation linéaire

CONTRÔLE ET ÉQUATIONS AUX DÉRIVÉES PARTIELLES. par. Jean-Pierre Puel

cel , version 1-28 Oct 2010

Problème 1 : applications du plan affine

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Transcription:

IFT3150 - Simulation de fluides stables en infographie Cynthia Beauchemin Résumé Ce travail a été fait dans le cadre du cours IFT3150 - Projet d informatique à l Université de Montréal à la session d été 2012 et porte sur la simulation de fluides stables en infographie. Il explique l algorithme Stable Fluids [Stam 1999] ainsi que la méthode du vorticity confinement. 1 Introduction La simulation de fluides en infographie est un sujet fascinant et pouvant donner des résultats impressionnants. C est pourquoi je l ai choisi comme sujet dans le cadre de ce projet. Dans ce rapport, nous verrons d abord quel type de système utiliser. Nous expliquerons en détails l algorithme de résolution du système de fluide stable. Nous verrons ce qu est la méthode du vorticity confinement, comment l appliquer et en quoi elle est intéressante. Finalement, nous parlerons brièvement des spécifications du système, de la visualisation des variables ainsi que des améliorations et extensions qui pourraient être apportées. 2 Création du système En simulation de fluides, deux grandes approches sont utilisées : la méthode Lagrangienne et la méthode Eulérienne. La méthode Lagrangienne utilise un système de particules. Chaque particule possède une position x et une vélocité u et optionnellement d autres quantités comme la température par exemple. Les valeurs des particules évoluent dans le temps en fonction de leurs propres valeurs ainsi que des valeurs des particules à proximité. La méthode Eulérienne, quant à elle, s intéresse plutôt à savoir comment évolue le fluide à un point fixé dans l espace. Elle n utilise donc pas de particules, mais plutôt une grille dans laquelle chaque case contient les quantités du fluide en ce point, soit la vélocité, la densité, la température, etc. Dans le cadre de ce projet, c est la méthode Eulérienne qui est utilisée. L espace est donc divisé en une grille dans laquelle les quantités (densité, température, couleur, etc. sont définies au milieu de chaque case, tel qu illustré dans la Figure 1. Les vélocités sont quant à elles définies sur chaque côté des cases plutôt qu au centre. 3 Solveur L évolution dans le temps des vélocités est définie par les équations de Navier-Stokes, soit les équations suivantes : u t = (u u 1 ρ p + ν 2 u + f (1 u = 0 (2 où u est la vélocité, ρ est la densité, p est la pression, ν est la viscosité, f est une force externe, est le gradient et est la divergence. La seconde équation sert à assurer la conservation de la masse. En d autres termes, elle permet de s assurer que la différence entre le flot entrant dans une case et le flot sortant de cette même case est nul. Le traitement de l évolution des vélocités du fluide se fait en quatre grandes étapes séquentielles : ajout des forces externes, advection, diffusion et projection. Chacune de ces étapes est réalisée à chaque pas te temps t et dépend de celui-ci. Nous commençons avec la solution u 0(x = u(x, t (3 où u(x, t est la vélocité à la position x au temps t et nous calculons la nouvelle vélocité au temps t + t. 3.1 Ajout des forces La première étape est la plus simple. Elle correspond au terme f dans l équation de Navier-Stokes. Elle consiste simplement à ajouter les forces externes (comme la gravité, les poussées, etc. pondérées par le pas de temps t. Nous avons : 3.2 Advection u 1(x = u 0(x + tf(x, t (4 L advection permet le déplacement des vélocités. Elle correspond au terme (u u dans l équation de Navier-Stokes. Pour faire l advection, l algorithme de Stam utilise une technique implicite appelée semi-lagrangienne. On se souvient que la méthode Lagrangienne pour la simulation des fluides utilise un système de particule. Ici, la méthode semi-lagrangienne combine l idée d un système de particule avec l utilisation de la grille. Elle suppose qu il y a une particule au centre d une case et se demande : Où était cette particule au pas de temps précédent?. Sachant où elle était au temps t t, on peut obtenir une bonne approximation de sa nouvelle valeur au temps t. Le problème consiste maintenant à trouver le chemin que la particule a parcouru entre le temps t t et t afin de déterminer son origine x P. La façon la plus simple d estimer son origine est d utiliser la formule explicite d Euler. On a alors simplement : x P = x tu(x (5 FIGURE 1: Grilles en 2D et en 3D. Photos tirées de Stam, 1999. Cette méthode peut donner des résultats acceptables mais il est généralement recommendé d utiliser des méthodes plus sophistiquées pour de meilleurs résultats, notamment la méthode de

Runge-Kutta d ordre supérieur. La méthode de second ordre est minimalement recommendée. Elle fonctionne en deux temps, de la façon suivante : x mid = x 1 tu(x 2 (6 x P = x tu(x mid (7 Une fois l origine de la particule déterminée, il suffit maintenant d interpoler les vélocités des cases les plus proches de ce point et d affecter ce vecteur interpolé comme nouvelle valeur de vélocité dans la case. On a donc : u 2(x = u 1(x P (8 La Figure 2 illustre le processus d advection. FIGURE 2: Processus d advection. Photo tirée de Stam, 1999. On remarque que cette méthode est inconditionnellement stable car la valeur interpolée ne peut en aucun cas être plus grande que la plus grande des valeurs des cases autour du point d origine. Cependant, cela fait en sorte que le système perd de l énergie pour la même raison. 3.3 Diffusion L étape de diffusion permet d échanger les quantités entre les cases voisines tel qu illustré dans la Figure 3. Elle correspond au terme ν 2 u dans l équation de Navier-Stokes. additionné sera également trop grand, ce qui entraînera l explosion du système (Voir Annexe B pour voir d où vient la division par h 2. Heureusement, l algorithme de Stam a su palier à ce problème. Tout comme pour le processus d advection, la diffusion utilise une technique implicite qui fonctionne à l envers. On cherche ici plutôt à trouver les vélocités telles que, lorsque diffusées vers l arrière dans le temps, nous donnent les vélocités courantes. L équation devient donc la suivante : u 3(x ν t 2 u 3(x = u 2(x (10 Le problème ici c est que lorsqu on discrédite 2 u 3(x, on se rend compte que toutes les vélocités du côté gauche de l équation sont inconnues! On a donc un très gros système linéaire à résoudre. Heureusement, celui-ci est clairsemé ce qui rend la tâche plus facile. On peut utiliser à peu près n importe quel solveur pour système linéaire. Dans mon projet, la méthode de Jacobi est utilisée car, bien qu un peu plus lente que d autres méthodes, elle est facile à implémenter et permet plus facilement de traiter les frontières internes et externes. Remarque : Lorsqu on simule des fluides à très faible viscosité comme de la fumée, on peut omettre l étape de diffusion sans apercevoir de différence majeure. En effet, dans l équation de Navier-Stokes, le terme de diffusion est ν 2 u. Il devient donc très petit lorsque ν est aussi très petit. Cela nous permet d éviter de résoudre tout un système linéaire et permet donc d accélérer considérablement les calculs. On parle alors de l équation non visqueuse d Euler plutôt que de l équation de Navier-Stokes. 3.4 Projection L étape de projection sert à assurer la conservation de la masse. Elle correspond au terme 1 p dans l équation de Navier-Stokes. ρ C est aussi à cette étape qu entre en jeu la deuxième équation de Navier-Stokes : u = 0. Pour se faire, on utilise le théorème de la décomposition de Hodge qui dit qu un champ de vecteurs est égal à la somme d un champ de conservation de masse et un champ de gradients. Champ de vecteurs Conservation Gradient (a Avant diffusion (b Processus de diffusion (c Après diffusion FIGURE 3: Processus de diffusion L idée générale est de faire partager les valeurs d une case avec ses voisines. La façon explicite de calculer cela est la suivante : u 3(x = u 2(x + ν t 2 u 2(x (9 Cependant, cette méthode devient instable lorsque les quantités se propagent plus loin que leurs voisins immédiats. Ceci peut survenir lorsque la viscosité est trop grande, lorsque le pas de temps est trop grand ou lorsque les tailles des cases sont trop petites. En effet, le terme ν t est un scalaire qui multiplie un vecteur qui sera ajouté h à la vélocité 2 courante. Si ce terme est trop grand, alors le vecteur FIGURE 4: Décomposition de Hodge. Photos tirées de Stam, 1999. Il suffit donc ici de soustraire le gradient de la pression à nos vélocités pour assurer la conservation de la masse. Il faut donc d abord calculer la pression. Celle-ci suit l équation de Poisson suivante : 2 p(x = u 3(x (11 Ici tous les p sont inconnus. Il suffit donc de résoudre ce nouveau système linéaire. Puis on soustrait le gradient de la pression à notre vélocité. C est-à-dire, u 4(x = u 3(x p(x (12 Et voilà! Nous avons terminé de calculer notre nouvelle vélocité.

3.5 Évolution des autres quantités Les autres quantités q du fluide (densité, température, couleur, etc. évoluent dans le temps en fonction de l équation suivante : q t = (u q + κq 2 q + S q α qq (13 où S q est une source, κ q est la constante de diffusion et α q est la constante de dissipation. Celui-ci peut être supprimé si on ne souhaite pas que q se dissipe. On remarque ici une grande similarité avec l équation de Navier- Stokes. En effet, les étapes sont à peu près les mêmes. L ajout des sources (S q, l advection ( (u q et la diffusion (κ q 2 q se font exactement de la même façon que l ajout des forces (f, l advection ( (u u et la diffusion (ν 2 u pour les vélocités. L étape de dissipation est facultative et consiste simplement à diviser notre quantité q par 1+ tα q, ce qui fera légèrement diminuer q. 4 Vorticity Confinement Le vorticity confinement est une méthode qui a été pensée par le Dr. John Steinhoff afin de résoudre l effet de vortex (de tourbillon dans les fluides. L idée générale consiste à repérer les endroits où se forment les vortex et de renforcer ceux-ci. Cette méthode est particulièrement utile lors de l implémentation de fluides stables car l algorithme de Stam perd de l énergie et le vorticity confinement permet de réinjecter des forces dans le système de manière intelligente. Le calcul du vorticity confinement se fait en 3 étapes. On calcule d abord le rotationnel ω du champ de vecteur. ω = u (14 La Figure 5.a illustre les valeurs de ω dans un style rouge/vert pour les valeurs négatives/positives. Il est important de noter que en 2 dimensions on peut considérer ω comme un scalaire, mais celui-ci est en fait un vecteur. En effet, en 2D, ω est un vecteur à trois dimensions dont seule la composante en z est non nulle. Voir l Annexe A.4 pour plus de détails. On calcule ensuite le vecteur N suivant : N = η η où η = ω (15 On obtient donc un champs de vecteur dans lequel les vecteurs pointent vers les centres des vortex les plus proches. La Figure 5.b illustre les valeurs de η. Finalement, on calcule un vecteur de force engendré par le vorticity confinement : f conf = ɛ h (N ω (16 En faisant le produit croisé de N avec ω, on obtient un vecteur orthogonal à ceux-ci, et donc, un vecteur dans le sens du tourbillon tel qu illustré dans la Figure 5.c. Bref, le vorticity confinement est une façon simple mais très efficace d ajouter des effets de tourbillons et de turbulence (lorsque ɛ devient grand dans le fluide. Dans le solveur, cette étape est ajoutée tout de suite après l ajout des forces. (a ω (b η (c f conf FIGURE 5: Vorticity Confinement 5 Spécification et visualisation Le programme a été codé en C++ et roule au niveau du CPU. La visualisation du système se fait en temps réel avec OpenGL. L affichage des densités se fait à l aide d un GL QUADS couvrant la totalité de la fenêtre et sur lequel est appliqué une texture et l affichage des vecteurs se fait à l aide de plusieurs GL LINES. Le programme a été écrit dans un but d apprentissage et permet la visualisation de plusieurs variables du fluide (densité ρ, vélocité u, vorticity confinement (ω, η, f conf. 6 Améliorations et extensions Un grand nombre d améliorations pourraient être apportées à ce projet. Tout d abord, il serait possible d améliorer les performances de différentes façons. Les calculs pourraient être parallélisés pour plusieurs étapes notamment l ajout des forces et l advection. Le programme pourrait plutôt être programmé sur le GPU au lieu du CPU. Le programme pourrait être précalculé avec un pas de temps fixé et être exécuté par la suite avec ses valeurs précalculées. Pour la visualisation en 3D, la simulation pourrait être intégrée dans un système de lancer de rayon. On aurait donc pu avoir une projection perspective et ainsi visualiser le fluide sous n importe quel angle. 7 Conclusion Nous avons vu qu il existait deux grandes approches (Lagrangienne et Eulérienne pour simuler les fluides en infographie et laquelle doit être utilisée pour l algorithme Stable Fluids [Stam 1999]. Nous avons expliqué en détails les quatres grandes étapes de résolution du système de fluide : l ajout des forces, l advection, la diffusion et la projection. Nous avons aussi expliqué la méthode de vorticity confinement qui est très utile pour ajouter des effets de tourbillon ou de turbulence et qui est aussi une bonne façon de réinjecter de l énergie dans le système. Nous avons brièvement parlé des spécifications de l implémentation et de la visualisation des différentes variables du fluide. Finalement, nous avons énoncé différentes possibilités d améliorations et d extensions du système. Cela dit, il en reste certainement beaucoup d autres qu il nous faudra découvrir. A Opérateurs Pour mieux comprendre l équation de Navier-Stokes, on peut considérer le symbole comme un vecteur symbolique de dérivées

partielles spaciale. C est-à-dire, ( = = x, y ( x, y, z en 2D. en 3D. Les opérateurs deviennent alors beaucoup plus faciles à se rappeler. Pour expliquer les opérateurs, j utiliserai s pour désigner un scalaire, u pour désigner un vecteur et f pour désigner l un ou l autre. A.1 Gradient Le gradient retourne tout simplement les dérivées partielles spaciales d une fonction dans un vecteur. En simulation de fluides, les vecteurs u et les quantités q sont fonctions de leurs positions. Le gradient est simplement : ( f f = x, f y, f z A.2 Divergence L opérateur de divergence s applique seulement aux vecteurs. Il sert à mesurer la convergence ou la divergence d un vector en un point. u = u x + v y + w z B Discrétisation Maintenant, afin de résoudre l équation de Navier-Stokes, il faut savoir comment appliquer les dérivées partielles aux vecteurs et aux scalaires. Voici comment : x f i,j,k = (f i+1/2,j,k f i 1/2,j,k /h y f i,j,k = (f i,j+1/2,k f i,j 1/2,k /h z f i,j,k = (f i,j,k+1/2 f i,j,k 1/2 /h On a donc les discrétisations suivantes : f i,j,k = f i+1/2,j,k f i 1/2,j,k f i,j+1/2,k f i,j 1/2,k /h f i,j,k+1/2 f i,j,k 1/2 u i,j,k = ( u i+1/2,j,k u i 1/2,j,k +v i,j+1/2,k v i,j 1/2,k +w i,j,k+1/2 w i,j,k 1/2 /h 2 f i,j,k = (f i+1,j,k + f i 1,j,k +f i,j+1,k + f i,j 1,k +f i,j,k+1 + f i,j,k 1 u = 6f i,j,k /h 2 (w i,j+1/2,k w i,j 1/2,k (v i,j,k+1/2 v i,j,k 1/2 (u i,j,k+1/2 u i,j,k+1/2 (w i+1/2,j,k w i 1/2,j,k (v i+1/2,j,k v i+1/2,j,k (u i,j+1/2,k u i,j 1/2,k /h A.3 Laplacien 2 Le Laplacien 2, qui est aussi écrit sous la forme est tout simplement la combinaison des opérateurs divergence et gradient. On obtient donc : A.4 Rotationnel 2 f = 2 f x + 2 f y + 2 f z Le rotationnel est un opérateur qui sert à mesurer comment un champ de vecteurs tourne autour d un point. En 3D, cet opérateur nous retourne le vecteur suivant : u = w v y z u w z x v u x y Références BRIDSON, R. 2008. Fluid Simulation for Computer Graphics. A K Peter. FEDKIW, R., STAM, J., AND JENSEN, H. W. 2001. Visual simulation of smoke. SIGGRAPH 01 Conference Proceedings, Annual Conference Series. STAM, J. 1999. Stable fluids. SIGGRAPH 99 Conference Proceedings, Annual Conference Series. STAM, J. 2003. Real-time fluid dynamics for games. Proceedings of the Game Developer Conference. Si u est un vecteurs en 2D, alors seul le troisième terme du vecteur obtenu est différent de zéro. On dit alors que le rotationnel donne un scalaire et on écrit plutôt : u = v x u y L opérateur rotationnel peut également s appliquer sur des scalaires. Il faut considérer notre scalaire s comme si on avait plutôt un vecteur tri-dimensionnel (0,0,s. ( s s = (0, 0, s = y, s x

Simulations en 2D Simulations en 3D Dimensions : 64 X 64 Dimensions : 40 X 40 X 40 Projection : Orthographique Éclairage : 2 lumières directionnelles vers X et -Y