Simulations de fluides
Propagation des contraintes
L’optimisation des forces rigides présentée dans les sections précédentes donne de bons résultats au sein du fluide, cependant la technique présentée gère moins bien l’effet des contraintes externes telles que les collisions et les particules animées à l’extérieur du simulateur. Ceci est dû au fait que les particules ne sont affectées que par leurs voisins immédiats. Ces contraintes nécessitent donc plusieurs itérations afin de propager leurs effets adéquatement. Puisqu’une particule est affectée par plusieurs voisins, l’effet d’une contrainte sur cette dernière est moindre si la proportion de voisins affectés par cette contrainte est faible. Une particule nécessite donc plusieurs itérations pour être correctement affectée par une contrainte « globale » et l’effet s’atténue au fur et à mesure que l’on s’éloigne des particules correctement affectées par cette
contrainte. La figure 2.3 montre un cas typique où l’on peut observer ce problème. Dans cette figure, un fluide, ayant la forme de la « Vénus » de Milo et dont la solidité des particules si = 1, est affecté par la collision avec le sol. Étant donné le nombre élevé de particules entre le sol et le sommet du fluide, l’effet de la collision avec le sol se propage moins bien sur les particules plus éloignées. Cette figure montre que le mécanisme de propagation présenté dans cette section permet de remédier à ce problème.
À gauche : Sans propagation des contraintes. À droite : Avec propagation des contraintes Ce mécanisme de propagation des contraintes s’intègre dans le processus d’optimisation des forces rigides et est basé sur la priorisation des particules selon leur état : « stabilisée » ou « non stabilisée ». Une particule est dite « stabilisée » si elle est correctement affectée par une contrainte. Tout juste avant l’exécution du processus d’optimisation des forces rigides (voir phase 2 de l’algorithme 2.2), les particules affectées directement par une contrainte, par exemple une collision avec le sol, sont identifiées comme étant « stabilisées ». Les autres particules sont considérées comme étant « non stabilisées ». Lorsqu’une particule possède un ou plusieurs voisins « stabilisés », seuls ces voisins sont utilisés lors du calcul de l’erreur de déformation et de la correction des forces rigides. Ainsi, les voisins des particules correctement affectées par les contraintes seront ajustés uniquement en fonction de celles-ci. Après avoir calculé la déformation d’une particule ayant au moins un voisin « stabilisé », les deux conditions suivantes sont testées pour cette dernière.
Si ces deux conditions sont respectées, la particule devient alors « stabilisée ». La première condition vérifie si la particule est stabilisée par rapport à ses voisins stabilisés. Ceci s’effectue en calculant l’écart moyen entre la position cible de la particule par rapport à ses voisins et la position prédite de la particule. Cet écart moyen est ensuite comparé à un seuil prédéfini.
Dans les exemples présentés dans ce mémoire, ce seuil correspond à 1% de la distance initiale dist0 entre les particules. La seconde condition prévient des effets indésirables causés par des contraintes se propageant à travers des particules ayant des rigidités si différentes. Ainsi, les particules ayant une plus grande rigidité sont affectées en premier par les contraintes, prévenant ainsi le transfert de déformations moins réalistes par les régions moins rigides du fluide vers les régions plus rigides. La figure 2.4 met en évidence l’effet de cette condition. Dans cette figure, un fluide en forme de « h » dont les particules sont rigides, à l’exception d’une portion de la colonne de droite, est simulé. La figure montre que, sans cette condition, les particules du haut de la colonne de droite suivent le mouvement des particules du bas, alors qu’elles devraient rester fixes avec les autres particules du « h ». Dans le cas où une particule respecte uniquement la seconde condition, mais ne réussi pas à respecter la première condition après un certain nombre d’itérations (5 dans les exemples présentés dans ce mémoire), cette dernière est malgré tout considérée comme étant « stabilisée » afin d’éviter un blocage dans le mécanisme de propagation.
Ce processus se poursuit jusqu’à ce que les contraintes aient été entièrement propagées au sein du fluide, et ce, même si le critère d’arrêt (voir section 2.2.3) a été atteint. Lorsqu’il n’y a plus
À gauche : Sans la seconde condition. À droite : Avec la seconde condition. de particules « voisines d’une particule stabilisée », les itérations de l’algorithme d’optimisation des forces rigides continuent normalement jusqu’à ce que le critère d’arrêt habituel soit atteint. Ceci permet d’assurer la propagation des effets des contraintes à toutes les particules impliquées. Grâce à ce processus, un résultat plus satisfaisant peut être atteint avec un nombre beaucoup plus petit d’itérations tout en respectant davantage les contraintes
STABILITÉ DE LA SIMULATION
Plusieurs facteurs peuvent influencer la stabilité d’une simulation de fluide. L’approche présentée dans le chapitre précédent permet d’éliminer l’impact de la viscosité (ou rigidité) du fluide sur la stabilité de la simulation puisque les équations ne sont plus posées sous forme de problème raide. Toutefois, d’autres sources d’instabilité existent dans la simulation. Ce chapitre présente des approches permettant de gérer ces différentes sources d’instabilité.
Pas de temps adaptatif
La taille du pas de temps affecte grandement la stabilité et les temps de calcul. L’utilisation d’un pas de tempstrop grand pour les forces appliquées au sein du fluide risque d’ajouter de l’énergie dans la simulation physique et donner un comportement erroné, voir chaotique. La figure 3.1 montre une même simulation exécutée avec un pas de temps fixe trop grand, la simulation est devenue chaotique alors qu’avec un pas de temps adaptatif elle demeure stable. D’autre part, l’utilisation d’un pas de temps trop petit assurera la stabilité de la simulation, mais demandera beaucoup plus d’itérations pour simuler une seconde de simulation, engendrant ainsi de grands temps de calcul.Dans le projet présenté dans ce mémoire, la rigidité (ou viscosité) ne génère pas des forces sujettes à l’instabilité puisque le problème n’est pas posé sous une forme raide. En conservant uniquement le terme basé sur la vitesse de propagation d’une onde dans le fluide c, l’équation permettant de calculer le pas de temps de Paiva et al. (2006) devient.
Ces équations dépendent de la vitesse maximale précédente et du coefficient de pression c qui correspond à la vitesse de propagation d’une onde dans le fluide. Ceci ne tient donc pas compte des forces réelles subies par le fluide. Il est possible que les forces de pression soient faibles (lorsque le fluide est au repos, par exemple). Dans ce cas, le pas de temps calculé sera plus petit que nécessaire. D’un autre côté, une particule peut avoir plusieurs voisins rapprochés dû au fait que les SPH ne sont pas incompressibles. Ceci engendrera de très grandes forces de pression nécessitant un pas de temps plus petit que celui calculé afin d’assurer la stabilité.
Selon la condition de CFL (équation 1.14), une particule ne peut avoir un déplacement plus grand qu’une certaine fraction β du rayon des particules. Les approches précédentes (Monaghan, 1989; Paiva et al., 2006) utilisent une série de contraintes permettant d’approximer ce déplacement maximal en utilisant soit la force maximale, la vitesse de propagation (correspondant à une vitesse maximale théorique) ou une combinaison de la vitesse de propagation maximale et de la vitesse maximale à l’itération précédente. Toutefois, aucune de ces approches ne combine la vitesse des particules et les forces exercées sur celles-ci en une même condition.
En utilisant une combinaison de la vitesse des particules et des forces appliquées sur celles-ci, il est possible d’obtenir une meilleure approximation du pas de temps idéal. Il n’est pas possible de calculer la vitesse maximale au temps t + Δt d’une particule sans préalablement calculer le pas de temps, puisque ce dernier est nécessaire pour connaître la variation de vitesse due à l’accélération de la particule. Cependant, il est possible de supposer que la vitesse maximale sera une combinaison de l’accélération maximale et la vitesse maximale au temps t.
Diffusion de chaleur implicite
La diffusion de la chaleur est une étape importante dans la simulation de phénomènes de fonte et de solidification qui permet d’ajouter du réalisme au résultat. Les approches typiques utilisant la difusion de chaleur (Stora et al., 1999; Paiva et al., 2006; Solenthaler et al., 2007; Chang et al., 2009) sont posées sous la forme d’un problème raide et sont donc sujettes à devenir instables lorsque le pas de temps ou le coefficient de diffusion de la chaleur ont une grande valeur. La figure 3.2 montre cette instabilité dans une simulation de fonte du « lapin de Stanford ». Le pas de temps élevé lors du calcul de la première image de l’animation engendre une correction trop élevée de la température à la jonction entre les particules chaudes et les particules froides. Ceci explique la transition discontinue de la température après une itération de la simulation (image de droite).
|
Table des matières
INTRODUCTION
CHAPITRE 1 ÉTAT DE L’ART
1.1 Simulations de fluides
1.2 Simulations eulériennes
1.3 Simulations lagrangiennes
1.3.1 Mouvement
1.3.2 Noyaux
1.3.3 Stabilité
1.3.3.1 Pas de temps adaptatif
1.3.3.2 Viscosité
1.3.3.3 XSPH
1.3.3.4 Incompressibilité
1.3.4 Simulations hybrides
1.4 Simulations multiphases Eulériennes
1.5 Simulation multiphases lagrangiennes
1.6 Contributions
CHAPITRE 2 FONTE ET SOLIDIFICATION
2.1 Simulation liquide
2.1.1 Smoothed-particle hydrodynamics
2.1.2 Détection de collision
2.2 Changement de phase
2.2.1 Erreur de déformation
2.2.2 Correction de la déformation
2.2.3 Critère d’arrêt
2.2.4 Propagation des contraintes
CHAPITRE 3 STABILITÉ DE LA SIMULATION
3.1 Pas de temps adaptatif
3.2 Diffusion de chaleur implicite
3.3 Ajustement de la masse volumique initiale
CHAPITRE 4 IMPLÉMENTATION
4.1 Description du simulateur
4.1.1 Initialisation
4.1.2 Exécution de la simulation
4.2 Parcours des voisins
4.3 Détection de collision
4.4 Paramètres
CHAPITRE 5 RÉSULTATS
5.1 Présentation des résultats
5.2 Comparaison avec les travaux antérieurs
CHAPITRE 6 DISCUSSION
6.1 Avantages
6.2 Limitations
CHAPITRE 7 TRAVAUX FUTURS
CONCLUSION
BIBLIOGRAPHIE
Télécharger le rapport complet