Il faut créer des particules là où la vorticité n'est
pas nulle. A l'instant la vorticité est non nulle lorsque
et lorsque
Comme initialement dans notre simulation le flux est nul, il suffit
de créer des particules d'intensité
pour les
tels que
NB : pour plus d'efficacité lors du calcul particules/particules,
nous stockons
où
est le support d'une particule (ici
).
Les particules sont distribuées sur la grille par projection de type
spline (nommé M4') sur un support de
points sur la grille.
Soient les sommets de la grille où la projection a lieu
et soient les les poids associé à chacun de ces sommets
; pour une quantité transportée par la particule, nous obtenons
les quantités associées en chacun des sommets
:
avec
et :
et similairement pour les par rapport à .
Ici les représentent la position relative de la particule par rapport au sommet en ``unité de sommets'' : par exemple , et est la distance entre la particule et le sommet de coordonnées entières inférieures.
Le but est de résoudre l'équation de Poisson suivante :
Pour ce faire il existe deux méthodes : la première par différences finies et la seconde en passant dans l'espace de Fourier.
Ici nous proposons une résolution de type explicite en partant de l'équation :
En développant à l'ordre 1, nous obtenons les sur la grille de la manière suivante :
où
La résolution se fait par un schéma itératif avec initialement nulle en tout point et avec condition d'arrêt .
Nous partons de l'hypothèse que le flux est périodique dans les deux directions. Nous pouvons alors résoudre simplement l'équation de Poisson dans l'espace de Fourier. Pour une fonction nous noterons sa transformée de Fourier telle que :
(où ).
Dans l'espace de Fourier, notre équation de Poisson s'écrit donc :
En développant les dérivées secondes :
nous obtenons :
Sur une grille régulière il est donc facile de trouver de la manière suivante :
où représente la fréquence dans l'espace de
Fourier définit par la transformée, soit dans notre cas :
Il suffit maitenant d'inverser la transformation pour obtenir
:
Attention : si l'on utilise un package de calcul de transformées de Fourier (par exemple avec Matlab ou FFTW) il faut faire attention à bien utiliser les fréquences positives ET négatives (l'indice du tableau dans l'espace de Fourier permet de définir les fréquences positives ET négatives) suivant la définition de leur transformation et la disposition en mémoire des données. De même, pour gagner en vitesse, la plupart du temps le résultat est non normalisé, avec FFTW il faudra diviser par pour obtenir le résultat correct après transformation inverse.
Par définition, nous avons :
Nous obtenons donc le champ de vitesse par dérivation de la fonction stream.
La level-set étant transportée par le fluide, nous avons :
où
La tension superficielle est fonction de la courbure déduite
de la fonction level-set et du paramètre de tension .
La courbure est définie comme suit :
On peut maintenant définir la tension :
qui grâce à la fonction dirac a un support limité aux zéros de la level-set.
Pour plus de stabilité lors de l'advection sur les particules nous utilisons un schéma de type RK4. Si , alors pour un pas de temps , soient :
Nous obtenons :
Ce schméma est adopté notament pour trouver les vitesses en chaque
particule à partir de la grille par distribution de la grille sur
chaque particule (par la méthode (inversée) décrite en (1.2)).
Ensuite les particules sont déplacées et leur vorticité mise-à-jour
selon :
, -
,
La level-set est simplement transportée (advectée) par le fluide :
Nous supprimons après chaque itération les particules ne transportant
plus de vorticité car elles n'interviendront plus dans les calculs.
Pour ce faire, nous projetons à nouveau les particules sur la grille,
supprimons les anciennes particules et en créons de nouvelles là où
il y a de la vorticité (cf. Initialisation en (1.1)).
Ces nouvelles particules repartent alors des sommets ``entiers''
de la grille.
This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.70)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -split 0 -show_section_numbers doc.tex
The translation was initiated by Mathieu Coquerelle on 2005-02-07